一、前期准备
// 安装相关依赖
yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel
// 创建用户
groupadd nginx
// 创建用户组
useradd -r -g nginx nginx
// 创建相关目录
mkdir -p /usr/local/nginx/{cache,log,conf/conf.d}
// 修改 Nginx 安装目录所属用户及用户组
chown -R nginx:nginx /usr/local/nginx
二、下载并安装
// 进入要存储安装包的目录
cd /usr/local/src
// 下载安装包
wget https://nginx.org/download/nginx-1.26.3.tar.gz
// 解压安装包
tar -zxvf nginx-1.26.3.tar.gz
// 进入安装包目录
cd nginx-1.26.3
三、开始编译前的工作
如果要在编译参数中指定 OpenSSL 的路径,需要修改 /usr/local/src/nginx-1.26.3/auto/lib/openssl/conf 文件
// 使用 vi 编辑相关配置文件(vim 也可以,看个人习惯)
vi /usr/local/src/nginx-1.26.3/auto/lib/openssl/conf
找到下面这段内容:
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
修改成以下代码:
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib64/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib64/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
// 保存并退出(先按一下 esc)
:wq!
如果要安装第三方模块,需要提前下载下来,此处以 headers-more-nginx-module 为例
// 创建一个目录用于存放第三方模块
mkdir /usr/local/nginx/module
// 修改 Nginx 安装目录所属用户及用户组
chown -R nginx:nginx /usr/local/nginx
// 进入刚刚创建的目录
cd /usr/local/nginx/module
// 下载 headers-more-nginx-module 模块
wget https://codeload.github.com/openresty/headers-more-nginx-module/tar.gz/refs/tags/v0.38
// 解压安装包
tar -zxvf headers-more-nginx-module-0.38.tar.gz
接下来,可以开始编译了!
// 预编译(模块自行按需增减)
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/log/error.log \
--http-log-path=/usr/local/nginx/log/access.log \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--http-client-body-temp-path=/usr/local/nginx/cache/client_temp \
--http-proxy-temp-path=/usr/local/nginx/cache/proxy_temp \
--http-fastcgi-temp-path=/usr/local/nginx/cache/fastcgi_temp \
--http-uwsgi-temp-path=/usr/local/nginx/cache/uwsgi_temp \
--http-scgi-temp-path=/usr/local/nginx/cache/scgi_temp \
--user=nginx \
--group=nginx \
--with-openssl=/usr/local/ssl \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--add-module=/usr/local/nginx/module/headers-more-nginx-module-0.38
// 开始编译并安装
make && make install
三、启动 Nginx 试试
// 启动 Nginx
/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
// 查看进程
ps -ef | grep nginx
// 检查 80 端口监听情况
netstat -anput | grep 80
四、管理 Nginx
// 启动 Nginx 服务
/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
// 停止 Nginx 服务
/usr/sbin/nginx -s stop
// 重启 Nginx 服务
/usr/sbin/nginx -s reload
// 检测 Nginx 配置是否有误
/usr/sbin/nginx -t
五、创建 Systemd 服务
// 使用 vi 创建并编辑配置文件
vi /etc/systemd/system/nginx.service
输入下面这段内容,ExecStart 等参数需要修改为实际路径
[Unit]
Description=The NGINX HTTP server
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/nginx -s quit
PIDFile=/usr/local/nginx/nginx.pid
[Install]
WantedBy=multi-user.target
// 重新加载 Systemd 配置
systemctl daemon-reload
// 启动 Nginx 服务
systemctl start nginx
// 将 Nginx 服务设置为开启自动启动
systemctl enable nginx
六、管理 Nginx 服务
// 启动 Nginx 服务
systemctl start nginx
// 停止 Nginx 服务
systemctl stop nginx
// 重启 Nginx 服务
systemctl restart nginx
// 设置开机自启动 Nginx 服务
systemctl enable nginx
// 查看 Nginx 服务运行状态
systemctl status nginx