Nginx平滑升级

Nginx平滑升级

升级目的

添加模块nginx-module-vtsNginx的监控模块,能够输出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文件是否生效:

1
2
nginx -t
nginx -V

发送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

升级完成,查看升级效果

1
2
nginx -V
ps auxwf