进行平滑升级
1.当前环境
CentOS-7.x Nginx:1.12.2
2.查看当前版本并下载新版本Nginx
/usr/local/nginx/sbin/nginx -v# nginx version: nginx/1.12.2wget -c http://nginx.org/download/nginx-1.17.6.tar.gz# 下载的版本为nginx-1.17.6
3.开始平滑升级
tar -xzf nginx-1.17.6.tar.gz# 解压源码包cd nginx-1.17.6
./configure --with-stream --with-http_stub_status_module --with-http_ssl_module
make# 执行编译,切记不要安装也就是不要去执行 make install
对Nginx执行文件进行更新
cd /usr/local/nginx/sbin
# 进入nginx的执行文件目录内
mv nginx nginx.old
# 将旧版本Nignx执行文件备份为nginx.oldcp /root/nginx-1.17.6/objs/nginx .
# 将新版本Nginx执行文件移动到当前目录内
进行平滑重启
/usr/local/nginx/sbin/nginx -t
# 检测新版本Nginx是否正常 正常为 successful
ps -ef | grep nginx
# 查看旧版本nginx进程
kill -USR2 4846# 向主进程发送USR2信号,Nginx会启动一个新版本的master进程和工作进程,和旧版一起处理请求
此时再次查看Nginx进程就发现有俩Nginx在工作 ^^
kill -WITCH 4846# 向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),
这时所有请求都会由新版Nginx处理kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin
`# 杀死旧版本Nginx主进程或者 kill -9 4846 也可以/usr/local/nginx/sbin/nginx -v
# ouput:nginx version: nginx/1.17.6
kill -WITCH 4846
# 向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
# 杀死旧版本Nginx主进程或者 kill -9 4846 也可以/usr/local/nginx/sbin/nginx -v
# ouput:nginx version: nginx/1.17.6
完成以上操作代表升级完成
总结:在平滑升级的过程中,切记编译完后不要 make install (安装)
在升级的过程中,切记尽量不使用 kill -9 这个命令。