JavaScript is required

Linux下NGINX的安装后的优雅启动法

2026/09/25
6 mins read
See this issue
# 花里胡哨可能有用系列
# 折腾记
Back

老规矩,上背景

近期安排了个腾讯家的新鸡(4C4G),便需要对此鸡进行各种环境的配置,首先对于必不可少的神器NG(NGINX,后面简称NG)是肯定要搞一手的,那么此时对于这些工具有强烈的版本使用洁癖的我来说,既不想去给人家去测试最新版的功能稳定bug,又不想用old school派版本,就是要个恰到好处的1.28.x的版本,能享受到大量新版的特性和性能优化后的版本,也减少了新版暴雷的情况,那肯定代价也是有的,那就是折腾。所以需要自行安装导入想要的那个版本,这时候就出现了下面的抉择问题:

if 
- 使用鸡子内自带的yum、dnf、apt等工具管理器去下载安装时,是可以使用到 systemctl 系统级的应用管理优雅化启动,但是没法装上指定的那个版本(或许配置指定的第三方源也可以?未验证,后面的同学可以去研究看看)

else if
- 使用自己导入的Linux包去安装时,那么就少了 systemctl 系统级的应用管理优雅化启动法

于是便往else if的方向靠拢去研究了一番,随看到了: 1、OpenCloudOS Server 9 安装 Nginx 完整指南 2、Linux安装nginx 3、LINUX安装nginx详细步骤 4、yum安装nginx

开始操作

一、先下载好自己需要的NG版本

在NG Release中找到自己想要的版本,下载好,并上传至机子目录下,然后开始:

下载的这一步可以本地下载好,比如前往NG Release下载好之后再上传至鸡上的目录 也可以直接在机子上进入到download或其他目录,然后通过wget来把NG包down下来,比如: 1)先进入 /home/download 目录下:cd /home/download 2)将nginx-1.29.8下载至上述目录下:wget https://github.com/nginx/nginx/releases/download/release-1.29.8/nginx-1.29.8.tar.gz

[!WARNING] 上述步骤2可能会在部分机子上出现拉取超时或无法正常拉取,此时可以转至官方源尝试,如:http://nginx.org/download/nginx-1.29.8.tar.gz

完成此步骤后,在/home/download目录下将会存在一个「nginx-1.29.8.tar.gz」文件,那么接下来就

二、安装所需依赖

保持在当前目录不需要任何切换,直接执行下面依赖安装命令:

dnf install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

# 若没有dnf工具下载管理器,可以用yum
yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

上述依赖安装完成后,在当前目录下再继续执行解压前面步骤一下载的NG文件压缩包:

# 解压至当前目录下的nginx-1.29.8文件夹中
tar -zxvf nginx-1.29.8.tar.gz

# 进入nginx-1.29.8文件夹内
cd nginx-1.29.8

三、编译并安装到 /usr/local/nginx

# 配置NG打包(编译)的配置项
./configure \
  --prefix=/usr/local/nginx \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_gzip_static_module

# 开始编译
make -j$(nproc)

# 安装NG
make install

此时,所有的安装工作都已经基本完成,那么接下来便可以👇👇👇

四、启动NG(如果要使用 systemctl 来进行系统层的管理,可以忽略该启动步骤,直接进入第五步来优雅化启动法):

# 进入NG安装目录,并执行NG即可启动
cd /usr/local/nginx

# 启动该目录下的nginx文件
./nginx

[!TIP] 至此,若无需后续的 systemctl 来进行系统进程管理使用,那么就完事了,可以浏览器打开地址栏输入当前机子的IP,即可访问看到如下图所示: Image

若需要优雅化启动,那么接下来看👇👇👇

五、配置NG至systemd服务自启动

复制下面命令直接回车即可:

cat > /etc/systemd/system/nginx.service << 'EOF'
[Unit]
Description=Nginx HTTP Server
After=network.target
 
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
EOF

那么此时就可以直接来加载并启用NG:

# 重载 systemd 配置
systemctl daemon-reload
 
# 启动 Nginx
systemctl start nginx.service
 
# 设置开机自动启动
systemctl enable nginx.service
 
# 查看运行状态
systemctl status nginx.service

OK,完事~

欢迎大家来我的博客阅读本文