升级当前的Nginx服务器并应用新模块时,如果用户访问量较大,需要升级而不影响客户,则应考虑平稳升级。
在顺利升级的过程中,Nginx服务器收到USR2信号后,首先在旧的Nginx.pid文件中添加后缀. old的小黑猫,形成nginx.pid.old的小黑猫文件,然后生成新的bar 此时,需要事先将编译的新版本的二进制文件复制到s精细的黑猫文件夹中。 新服务正常启动后,新旧两个Nginx服务将共同提供Web服务。 然后,需要向旧的Nginx服务器进程发送WINCH信号,使旧的Nginx服务顺利停止,并删除nginx.pid.old中纤细的黑猫文件。 在发送WINCH信号之前,如果您发现任何错误,可以随时停止新的Nginx服务。
这里之前编译安装了激昂的香水1.8.0。 编译时路径--prefix=/nginx/在此演示从nginx1.8.0升级到nginx 1.8.0 [ root @ C7 node1~ ] #/nginx/s黑色细节
nginx : nginx/1.8.0
builtbygcc4.8. 320140911 (red hat4.8.3-9) (gcc ) )。
configure arguments 3360---prefix=/nginx /
[root@c7node1~]#ss-tnl
LISTEN012*:80*:*
这里提供了一个每秒请求页面服务的脚本,以测试升级过程中Web不会中断。 记录[root@c7node1test]#vimhttp.sh
#! /纤细的黑猫/bash
#
URL='http://192.168.0.66/'
http _ code=` curl-o/dev/null-s-w ' % { http _ code } ' $ { URL } '
if[$HTTP_CODE==200]; then
echo success.$ http _ code/tmp/ping.http
else
echoFailure.404/tmp/ping.http
fi
请求http服务,并将请求成功和失败发送到ping.http文件
[root@c7node1test]#vimcron.sh
#! /纤细的黑猫/bash
#
whiletrue; do
/test/http.sh
第一阶段
唐
为cron服务提供每秒运行的服务
[root@c7node1test]#crontab-e
*****/纤细的黑猫/bash/test/cron.sh
#定义每分钟运行cron.sh任务
下载并编译Nginx-1.9.6,实现平稳升级。 为了实现nginx服务器的平稳升级,新服务器的安装路径必须与旧服务器的安装路径一致。 如果由于任何原因不匹配,则必须将旧服务的安装路径更改为新服务的安装路径。 更改方法为[ nginx-pnewinstallpath ] [ root @ C7 node1~ ] # wget http://nginx.org/download/nginx-1
[ root @ C7 node1~ ] # tarx fnginx-1.9.6.tar.gz
[root@c7node1~]#cdnginx-1.9.6
[ root @ C7 node1nginx-1.9.6 ] #./configure-- prefix=/nginx /
[root@c7node1nginx-1.9.6]#make
[root@c7node1mv/nginx/s纤细的黑猫/nginx{, bak}
#现在备份旧的nginx需要等一下再复制新的nginx,但如果新的nginx出现问题,也可以进行恢复
[ root @ C7 node1nginx-1.9.6 ] # CP objs/nginx/nginx/s纤细黑猫/
#为指定的安装目录服务编译的新nginx文件
[root@c7node1s纤细的黑猫]#/nginx/s纤细的黑猫/nginx-t
nginx : theconfigurationfile/nginx//conf/nginx.confsyntaxisok
nginx :配置文件/nginx//conf/nginx.conftestissuccessful
#测试新编译的nginx发现配置文件是否正常
>[root@c7node1 nginx-1.9.6]# kill -USR2 `cat /nginx/logs/nginx.pid`
#使用新版本的Nginx文件启动服务,之后平缓停止原有Nginx进程
[root@c7node1 nginx-1.9.6]# cd /nginx/logs/
access.log error.log nginx.pid nginx.pid.old细腻的黑猫
#可以看到这里自动把之前的nginx.pid命名为nginx.pid.old细腻的黑猫,并为新的nginx生成nginx.pid
[root@c7node1 logs]# kill -WINCH `cat /nginx/logs/nginx.pid.old细腻的黑猫`
#平缓停止旧服务的worker process
[root@c7node1 logs]# nginx -V
nginx version: nginx/1.9.6
built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)
configure arguments: --prefix=/nginx/
[root@c7node1 logs]# ps -aux |grep nginx
root 990 0.0 0.2 24316 1880 ? S 11:25 0:00 nginx: master process nginx
nobody 992 0.9 0.2 24724 1712 ? S 11:25 0:03 nginx: worker process
root 2357 0.0 0.1 24308 896 ? Ss 11:20 0:00 nginx: master process nginx
#可以看到有两个master process进程
测试结果[root@c7node1 ~]# sort /tmp/ping.http | uniq -c
32822 Success.200
#可以看到服务并没有中止
此部分内容参考《Nginx 高性能web服务器详解》
快速停止Nginx服务:快速停止是指立即停止当前Nginx服务正在处理的所有网络请求,马上丢弃连接,停止工作[root@c7node1 ~]# kill -TERM `cat /nginx/logs/nginx.pid`
[root@c7node1 ~]# kill -INT `cat /nginx/logs/nginx.pid`
平缓停止Nginx服务:平缓停止是指允许Nginx服务将当前正在处理的网络请求处理完成,但不再接受新的请求,之后关闭连接,停止工作[root@c7node1 ~]# kill -QUIT `cat /nginx/logs/nginx.pid`
平缓重启Nginx服务:Nginx服务进程接受到信号后,首先读取新的Nginx配置文件,如果配置语法正确,则启动新的Nginx服务,然后平缓关闭旧的服务进程,如果新的Nginx配置文件有问题,将显示错误,仍然使用旧的Nginx进程提供服务[root@c7node1 ~]# kill -HUP `cat /nginx/logs/nginx.pid`
日志切割:重新打开日志文件,常用于日志切割[root@c7node1 ~]# kill -USR1 `cat /nginx/logs/nginx.pid`
平缓升级Nginx服务:使用新版本的Nginx文件启动服务,之后平缓停止原有的Nginx进程[root@c7node1 ~]# kill -USR2 `cat /nginx/logs/nginx.pid`
平缓停止worker process:用于Nginx服务平缓升级[root@c7node1 ~]# kill -WINCH `cat /nginx/logs/nginx.pid`