通过源码编译安装Nginx通常可以让你自定义配置、模块和功能。下面是一步一步如何在 CentOS/RHEL 等 Linux 发行版上编译安装 Nginx 的详细步骤。
步骤 1:更新系统并安装依赖库
首先,确保系统已更新,并安装编译 Nginx 所需的依赖库:
bash
复制代码
sudo yum update -y
sudo yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel openssl openssl-devel
步骤 2:下载 Nginx 源码
前往 Nginx 官方网站 下载最新的稳定版源码,或者你也可以使用 wget 命令直接下载。
bash
复制代码
cd /usr/local/src
wget http://nginx.org/download/nginx-1.20.1.tar.gz # 替换为你需要的版本
解压下载的 Nginx 源码包:
bash
复制代码
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
步骤 3:配置 Nginx
在编译之前,你可以通过 ./configure 命令来配置 Nginx 的编译选项和模块。以下是一个典型的配置命令,你可以根据需要启用或禁用某些模块:
bash
复制代码
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-pcre \
--with-http_v2_module
配置选项解释:
- --prefix=/usr/local/nginx:指定 Nginx 的安装目录。
- --with-http_ssl_module:启用 SSL 支持。
- --with-http_gzip_static_module:启用 gzip 支持。
- --with-http_stub_status_module:启用状态监控模块。
- --with-http_v2_module:启用 HTTP/2 支持。
你可以根据需要添加或删除模块选项。
步骤 4:编译并安装 Nginx
配置完成后,执行以下命令开始编译和安装 Nginx:
bash
复制代码
make
sudo make install
步骤 5:验证 Nginx 安装
完成安装后,Nginx 应该被安装到了 /usr/local/nginx 目录下。你可以通过以下命令启动 Nginx:
bash
复制代码
sudo /usr/sbin/nginx
或者,通过以下命令检查 Nginx 是否已正确安装并显示版本号:
bash
复制代码
nginx -v
你应该会看到类似于:
yaml
复制代码
nginx version: nginx/1.20.1
步骤 6:配置 Nginx 服务
为了方便管理 Nginx,你可以将其配置为一个系统服务。创建一个 Nginx 的 Systemd 服务文件 /etc/systemd/system/nginx.service:
bash
复制代码
sudo nano /etc/systemd/system/nginx.service
然后添加以下内容:
ini
复制代码
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target
[Service]
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
PIDFile=/var/run/nginx.pid
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
保存文件后,执行以下命令使 Nginx 服务文件生效,并设置 Nginx 开机自启动:
bash
复制代码
sudo systemctl daemon-reload
sudo systemctl enable nginx
步骤 7:启动并测试 Nginx
启动 Nginx 服务:
bash
复制代码
sudo systemctl start nginx
检查 Nginx 是否成功启动:
bash
复制代码
sudo systemctl status nginx
你可以通过以下命令测试 Nginx 是否能正常处理 HTTP 请求:
bash
复制代码
curl http://localhost
如果你看到 Welcome to nginx! 或 Nginx 默认页面,则说明安装成功。
步骤 8:防火墙设置(可选)
如果你的服务器启用了防火墙,你需要允许 HTTP 和 HTTPS 流量通过:
bash
复制代码
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
后续步骤
Nginx 已经编译并成功安装。接下来,你可以根据需要自定义 Nginx 配置文件 /etc/nginx/nginx.conf,或者添加更多虚拟主机配置文件来满足你的需求。
6. 停止和重启 Nginx
- 停止 Nginx:
如果需要停止 Nginx,可以使用以下命令:
bash
复制代码
sudo /usr/local/nginx/sbin/nginx -s stop
- 重启 Nginx:
重启 Nginx 命令如下:
bash
复制代码
sudo /usr/local/nginx/sbin/nginx -s reload
到此为止,Nginx 已经成功编译并安装。接下来你可以根据需要自定义 Nginx 的配置文件 /usr/local/nginx/conf/nginx.conf。