Nginx服务器的平滑启动、平缓停止、平滑升级

注:

Nginx服务在运行时,会保持一个主进程(master process)和一个或多个工作进程(worker process)。
每一个进程都会有一个PID进程号,可以通过向主进程的PID进程号发送信号关闭服务器。
Nginx服务器启动后,默认在Nginx服务器安装目录的logs目录中会产生文件名为nginx.pid的文件,此文件中保持的就是nginx服务主进程的PID。

一、nginx服务器可接收的信号:

(1) TERM 或 INT 快速停止nginx服务器。

(2) QUIT 平缓停止nginx服务器。

(3) HUP 平滑重启,使用新的配置文件启动进程,平缓的停止原有进程,

(4) USR1 重新打开日志文件,常用于日志切割。

(5) USR2 平滑升级,使用新版本的Nginx文件启动服务,平缓的停止原有Nginx进程。

(6) WINCH 平缓停止worker process,用于Nginx服务器平滑升级。

1.快速停止nginx服务器

(1) kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
(2) kill -INT `cat /usr/local/nginx/logs/nginx.pid`

2.平缓停止nginx服务器

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`

3.平滑重启nginx服务器

(1) kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
(2) /usr/local/nginx/sbin/nginx -s reload

4.平缓停止工作进程

kill -WINCH `cat /usr/local/nginx/logs/nginx.pid`

5.强制停止nginx

pkill -9 nginx

6.停止nginx服务器的命令

(1) /usr/local/nginx/sbin/nginx -s stop
(2) pkil nginx

7.检查对nginx.conf文件的修改是否正确

(1) nginx -t -c /usr/local/nginx/conf/nginx.conf

(2) /usr/local/nginx/sbin/nginx -t

二、nginx服务器平滑升级过程如下:

注:为实现nginx服务器的平滑升级,新的服务器安装路径应该和旧的保持一致。因此建议用户安装新服务器之前先备份旧的服务器。

1.编译新版本的nginx

(1) tar -xvf nginx-1.14.2.tar.gz #解压
(2) cd nginx-1.14.2 #进入解压后的目录
(3) ./configure --prefix=/usr/local/nginx #预编译路径和老版本的安装路径保持一致。
(4) make #编译

2.备份旧版本可执行nginx,复制新版本的nginx可执行nginx

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old #备份
cp objs/nginx   /usr/local/nginx/sbin/ #复制新版本可执行文件
/usr/local/nginx/sbin/nginx -t #测试新版本是否正常

3.平滑重启升级nginx

kill USR2 ` cat /usr/local/nginx/log/nginx.pid` 或 /usr/local/nginx/sbin/nginx -g USR2 #发送平滑升级的信号
kill -WINCH `cat /usr/local/nginx/log/nginx.pid` 或 /usr/local/nginx/sbin/nginx -g WINCH #发送平缓停止旧服务器的信号
/usr/local/nginx/sbin/nginx -V #显示最新编译的版本信息即可。

 三、平滑升级重新整理步骤

 1 weget -c http://nginx.org/download/nginx-1.15.0.tar.gz
 2 #下载新版本,解压软件包后进入


3 ./configure && make 4 #预编译和编译

5 cd objs 6 #进入编译好的目录
7
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old 8 #备份老版本启动脚本
9
cp nginx /usr/local/nginx/sbin/nginx 10 #拷贝新版本进程号

11 cp /usr/local/nginx/logs/nginx.pid /usr/local/nginx/logs/nginx.pid.oldbin 12 #备份老版本主进程号

13 kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` 14 #生产新版本进程号

15 kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` 16 #关闭老版本进程号
原文地址:https://www.cnblogs.com/IMSCZ/p/10511339.html