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 #关闭老版本进程号