Nginx 不停服务升级

服务器环境

原来 nginx 的目录为:/webdata/server/nginx

新 nginx 下载目录:/webdata/backup/

备份目录:/webdata/backup/

网站用户及组都为:www

nginx 的进程pid为:14859

查看相关信息

查看版本、编译参数(记下编译参数):

/webdata/server/nginx/sbin/nginx -V

进程数据(记下pid,一般为第一数字):

ps aux | grep nginx

备份旧版本的执行程序

tar -cvf /webdata/backup/nginx.sbin.20150108.tar /webdata/server/nginx/sbin/

下载nginx并解压

wget http://nginx.org/download/nginx-1.7.9.tar.gz

tar -zvxf /webdata/backup/nginx-1.7.9.tar.gz
cd /webdata/backup/nginx-1.7.9

编译新版本,增删模块

编译参数根据旧版本的设置

./configure --user=www --group=www --prefix=/webdata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_gzip_static_module
make
make install

新版本替换老版本

kill -USR2 14859

#查看进行状态
ll /webdata/server/nginx/logs/nginx*

ps aux|grep nginx

kill -WINCH 14859

一段时间之后,旧的工作进程(worker process)处理了所有已连击的请求后推出,仅由新的工作进程(worker process)来处理请求了。

PS:新版本替换旧版本时建议运行 /webdata/server/nginx/sbin/nginx -t 检测新编译的是否正常。

决定使用新版本还是恢复到旧版本

使用新版本:

kill -QUIT 14859

新的主进程退出后,旧的主进程会移除 .oldbin 后缀,恢复为他的 .pid 文件,这样,一切就都恢复为升级之前了。
如果尝试升级成功,而自己又希望保留新版本时,可发送 QUIT 信号给旧的主进程,使其退出而只留下新的进程运行:kill -QUIT 旧主进程号

相关资料:

除非注明, 风波竹林 文章均为原创,转载请以链接形式标明本文地址
本文地址: https://blog.fbzl.org/nginx-update/

发表回复