从零开始:在Linux系统上部署Nginx Web服务器
Nginx (pronounced “engine-x”) 是一个高性能的 Web 服务器、反向代理服务器以及电子邮件(IMAP/POP3/SMTP)代理服务器。它以其稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。本指南将详细介绍如何在 Linux 系统上从零开始部署 Nginx Web 服务器。
先决条件
在开始之前,请确保您具备以下条件:
- 一台正在运行的 Linux 服务器(例如,Ubuntu, CentOS, Debian 等)。
- 具有
sudo或root权限的用户账户。 - 对 Linux 命令行的基本了解。
第一步:更新软件包列表
在安装任何新软件之前,一个好的习惯是更新系统的软件包列表,以确保您获取的是最新的软件版本和安全更新。
对于 Ubuntu/Debian 系统:
bash
sudo apt update
sudo apt upgrade
对于 CentOS/RHEL/Fedora 系统:
“`bash
sudo dnf update
或者,对于较旧的系统
sudo yum update
“`
第二步:安装 Nginx
Nginx 通常在大多数 Linux 发行版的默认软件仓库中都可用。
在 Ubuntu/Debian 上安装 Nginx:
bash
sudo apt install nginx
在 CentOS/RHEL/Fedora 上安装 Nginx:
“`bash
sudo dnf install nginx
或者
sudo yum install nginx
“`
安装过程会自动处理所有依赖项,并将 Nginx 安装为一个系统服务。
第三步:管理 Nginx 服务
安装完成后,Nginx 服务可能不会自动启动。您需要手动启动它,并设置为开机自启。
“`bash
启动 Nginx 服务
sudo systemctl start nginx
设置 Nginx 开机自启
sudo systemctl enable nginx
查看 Nginx 服务状态
sudo systemctl status nginx
“`
其他常用的 Nginx 服务管理命令:
“`bash
停止 Nginx 服务
sudo systemctl stop nginx
重启 Nginx 服务
sudo systemctl restart nginx
重新加载配置文件(无需重启服务)
sudo systemctl reload nginx
“`
第四步:配置防火墙
如果您的服务器启用了防火墙(例如 ufw 或 firewalld),您需要允许 HTTP 和 HTTPS 流量通过。
对于使用 ufw 的系统 (Ubuntu/Debian):
ufw 在安装时会注册一些应用配置文件。
“`bash
查看可用的应用配置
sudo ufw app list
“`
您会看到类似以下的输出:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
- Nginx HTTP: 只允许 HTTP 流量(端口 80)。
- Nginx HTTPS: 只允许 HTTPS 流量(端口 443)。
- Nginx Full: 同时允许 HTTP 和 HTTPS 流量。
根据您的需求选择一个。通常,允许两者是比较好的选择。
“`bash
允许 Nginx HTTP 和 HTTPS 流量
sudo ufw allow ‘Nginx Full’
重新加载防火墙规则
sudo ufw reload
检查防火墙状态
sudo ufw status
“`
对于使用 firewalld 的系统 (CentOS/RHEL/Fedora):
“`bash
允许 HTTP 和 HTTPS 流量(–permanent 使其永久生效)
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https
重新加载防火墙规则
sudo firewall-cmd –reload
查看已开放的服务
sudo firewall-cmd –list-services
“`
第五步:验证 Nginx 安装
现在,Nginx 应该已经成功安装并运行。您可以通过在浏览器中访问您的服务器 IP 地址来验证。
打开浏览器,输入:
http://你的服务器IP地址
如果一切正常,您应该会看到 Nginx 的默认欢迎页面,通常标题是 “Welcome to nginx!”。
如果您不知道服务器的公网 IP,可以使用以下命令查找:
bash
curl -4 icanhazip.com
第六步:了解 Nginx 目录结构
了解 Nginx 的关键目录和文件对于后续配置至关重要。
- /etc/nginx: Nginx 的主配置文件目录。
- nginx.conf: Nginx 的主配置文件。
- sites-available: 用于存储所有虚拟主机(Server Blocks)配置文件的目录。
- sites-enabled: 存放
sites-available目录中配置文件的符号链接。只有在这里面的配置文件才会被 Nginx 加载。
- /var/log/nginx: Nginx 的日志文件目录(
access.log和error.log)。 - /var/www/html: 默认的网站根目录,存放网页文件。
第七步:配置一个简单的 Server Block(虚拟主机)
“Server Block”(类似于 Apache 中的 “Virtual Host”)允许您在同一台服务器上托管多个网站。
让我们为 your_domain.com 创建一个 Server Block。
1. 创建网站根目录
为您的网站创建一个新的目录来存放文件。
bash
sudo mkdir -p /var/www/your_domain.com/html
2. 设置目录权限
确保 Nginx 进程有权访问这个目录。
bash
sudo chown -R $USER:$USER /var/www/your_domain.com/html
sudo chmod -R 755 /var/www/your_domain.com
3. 创建一个示例页面
在您的新网站目录中创建一个 index.html 文件。
bash
nano /var/www/your_domain.com/html/index.html
在文件中添加以下内容:
“`html
Success! The your_domain.com server block is working!
“`
保存并关闭文件。
4. 创建 Server Block 配置文件
在 sites-available 目录中为您的域名创建一个新的配置文件。
bash
sudo nano /etc/nginx/sites-available/your_domain.com
将以下配置粘贴到文件中,并确保将 your_domain.com 替换为您的实际域名:
“`nginx
server {
listen 80;
listen [::]:80;
root /var/www/your_domain.com/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain.com www.your_domain.com;
location / {
try_files $uri $uri/ =404;
}
}
“`
5. 启用新的 Server Block
通过在 sites-enabled 目录中创建一个指向配置文件的符号链接来启用它。
bash
sudo ln -s /etc/nginx/sites-available/your_domain.com /etc/nginx/sites-enabled/
6. 测试 Nginx 配置
在重新启动 Nginx 之前,务必测试配置文件的语法是否正确。
bash
sudo nginx -t
如果一切正常,您应该看到如下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
7. 重启 Nginx
使更改生效。
bash
sudo systemctl restart nginx
第八步:测试新的 Server Block
如果您使用的是真实的域名,并且已经将 DNS 解析到您的服务器 IP,现在您可以在浏览器中访问 http://your_domain.com,应该会看到您刚刚创建的 “Success!” 页面。
如果您没有域名,可以在本地修改 hosts 文件来模拟。
- Linux/macOS: 编辑
/etc/hosts - Windows: 编辑
C:\Windows\System32\drivers\etc\hosts
添加以下行:
你的服务器IP地址 your_domain.com
保存文件后,刷新浏览器,您就能看到新的网站了。
结论
恭喜!您已经成功在 Linux 服务器上部署了 Nginx,并配置了一个 Server Block 来托管网站。从这里开始,您可以进一步探索 Nginx 的强大功能,例如配置 SSL/TLS 以启用 HTTPS、设置反向代理、实现负载均衡等。