Linux (CentOS 7) 源码编译安装 Nginx 1.26.3

2025-04-28 147 0

一、前期准备

// 安装相关依赖
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

相关文章

Linux (CentOS 7) 更换国内镜像源
Linux (CentOS 7) 内网环境下离线升级 OpenSSL 到 3.5
Linux (CentOS 7) 升级 OpenSSL 到 3.5
Linux (CentOS 7) 安装 Mysql 8.4.5
Linux (CentOS 7) 安装 Redis 7.4.3

发布评论