Web服务器设置

📖 阅读时间:15分钟 🎯 难度:初级-中级 👥 适合人群:网站开发者、Linux新手

本指南将带您完成在VPS上设置Web服务器的全过程。我们将对比Nginx和Apache,并以更高性能的Nginx为例,指导您完成安装、配置、设置域名访问以及最终启用HTTPS安全连接。

🤔 选择Web服务器

Web服务器是用于在互联网上托管和提供网站内容的软件。最流行的两个选择是Nginx和Apache。

Nginx vs Apache

🚀

Nginx

以其高性能、低资源消耗和出色的高并发处理能力而闻名。特别适合静态内容服务、反向代理和负载均衡。

🪶

Apache

历史悠久、稳定且极其灵活。通过强大的`.htaccess`文件和模块系统,配置非常方便,尤其是在共享主机环境中。

💡 本指南推荐

对于大多数现代应用和新项目,我们推荐使用 Nginx,因为它在性能和资源效率上通常更具优势。本指南将以 Nginx 为例进行演示。

📥 安装Web服务器

连接到您的VPS后,首先更新软件包列表,然后安装Nginx。

1

更新软件包列表

确保您获取的是最新的软件版本。

sudo apt update
2

安装 Nginx

在基于Debian/Ubuntu的系统上使用以下命令:

sudo apt install nginx -y
3

验证Nginx服务状态

安装完成后,Nginx服务通常会自动启动。您可以使用以下命令检查其状态:

systemctl status nginx

如果看到 active (running),表示Nginx已成功运行。

🔥 配置防火墙

要允许外部访问您的网站,您需要配置防火墙以放行HTTP(端口80)和HTTPS(端口443)的流量。我们将使用UFW(Uncomplicated Firewall)进行演示。

⚠️ 如果您还没有启用防火墙,请务必先允许SSH端口,否则将导致您无法连接VPS!
sudo ufw allow ssh

Nginx在安装时会向UFW注册应用配置文件。'Nginx Full'代表同时打开80和443端口。

sudo ufw allow 'Nginx Full'

启用防火墙:

sudo ufw enable

检查防火墙状态以确认规则已生效:

sudo ufw status

现在,您应该可以通过在浏览器中访问您的VPS IP地址看到Nginx的默认欢迎页面。

🏗️ 设置服务器块

服务器块(Server Block),类似于Apache中的虚拟主机(Virtual Host),允许您在同一台服务器上托管多个域名。我们将为 your_domain 创建一个服务器块。

1

为您的域名创建网站根目录

这是存放您网站文件的文件夹。将 your_domain 替换为您的真实域名。

sudo mkdir -p /var/www/your_domain/html
2

设置目录权限

将目录的所有权分配给当前用户,以便您可以轻松地在其中创建或修改文件。

sudo chown -R $USER:$USER /var/www/your_domain/html
3

创建Nginx服务器块配置文件

sites-available 目录下为您的域名创建一个新的配置文件。

sudo nano /etc/nginx/sites-available/your_domain

将以下配置粘贴到文件中。记得将 your_domain 替换成您自己的域名。

server {
    listen 80;
    listen [::]:80;

    root /var/www/your_domain/html;
    index index.html index.htm;

    server_name your_domain www.your_domain;

    location / {
        try_files $uri $uri/ =404;
    }
}
4

启用服务器块

通过在 sites-enabled 目录中创建一个指向配置文件的符号链接来启用它。

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
5

测试并重启Nginx

在重启服务之前,务必测试配置文件是否存在语法错误。

测试配置

sudo nginx -t

如果测试成功 (syntax is ok, test is successful),则重启Nginx

sudo systemctl restart nginx

🔒 配置HTTPS

现在您的网站已通过HTTP运行,最后一步是使用 Let's Encrypt 提供的免费SSL证书来保护它,启用HTTPS。

⚠️ 重要前提:在执行此步骤之前,您必须确保您的域名(例如 your_domainwww.your_domain)已经通过DNS设置正确指向了您VPS的IP地址。
1

安装 Certbot

Certbot是Let's Encrypt官方推荐的客户端,可以自动化证书的获取、配置和续订。

sudo apt install certbot python3-certbot-nginx -y
2

获取并安装SSL证书

Certbot将自动读取您的Nginx配置,并引导您完成证书申请过程。

sudo certbot --nginx -d your_domain -d www.your_domain

按照屏幕提示操作,您需要输入邮箱地址,同意服务条款,并选择是否将所有HTTP流量重定向到HTTPS(推荐选项)。

3

验证证书自动续订

Let's Encrypt证书有效期为90天。Certbot安装包会自动创建一个定时任务来处理续订。您可以通过以下命令模拟续订过程,以确保其正常工作。

sudo certbot renew --dry-run

如果命令执行没有错误,则表示自动续订已设置成功。

🎉 总结与后续

恭喜!您已经在VPS上成功部署了一个由Nginx驱动、并通过HTTPS完全加密的网站。您现在可以将网站文件上传到 /var/www/your_domain/html 目录中。