Nginx平滑升级
升级目的
添加模块nginx-module-vts
(Nginx
的监控模块,能够输出json
格式的监控数据)
升级步骤
重新编译Nginx
1 2 3
| git clone git://github.com/vozlt/nginx-module-vts.git ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/opt/nginx-module-vts make && make install
|
备份原来的Nginx
二进制文件,然后将编译好的Nginx
文件拷贝过去
1 2
| mv /usr/sbin/nginx /usr/sbin/nginx.bk mv /opt/nginx /usr/sbin/nginx
|
测试一下新的Nginx
文件是否生效:
发送USR2
信号给Nginx master
进程
1 2
| kill -USR2 `cat /run/nginx.pid` ps auxwf |grep nginx
|
nginx服务接收到USR2信号后,首先会将旧的nginx.pid文件添加后缀.oldbin,变为nginx.pid.oldbin,然后执行新版本的二进制文件启动服务,如果新的服务启动成功,系统中将有新旧两个nginx服务共同提供web服务
发送WINCH
信号(平缓停止worker process)和QUIT
信号(平缓停止nginx服务)停止旧的Nginx
服务进程
1 2 3
| kill -WINCH `cat /run/nginx.pid.oldbin` kill -QUIT `cat /run/nginx.pid.oldbin` ps auxwf
|
升级完成,查看升级效果