nginx 平滑升级
1,当前版本查看
[root@localhost sbin]# ./nginx -V
2,解压新版本安装包
tar -zxvf nginx-1.20.2.tar.gz
3,进入新版安装包文件
cd nginx-1.20.2/
4,初始化 (若是添加新模块,可在后面追加模块名称)
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/tmp/error.log --http-log-path=/usr/local/nginx/tmp/access.log --pid-path=/usr/local/nginx/tmp/nginx.pid --lock-path=/usr/local/nginx/tmp/nginx.lock --with-http_ssl_module
5,编译,不要make install
make
6,进入objs 目录
cd objs/
./nginx -V
7 拷贝启动文件到老版本nginx的sbin目录下(将老版本的启动文件提前备份下)
mv nginx /usr/local/nginx/sbin/
8 ,#检测一下有没有问题
[root@localhost sbin]# ./nginx -t
USR2 平滑升级可执行程序,将存储有旧版本主进程ID的文件重命名为nginx.pid.oldbin,跟着启动新的
nginx
此时两个master的进程都在运行,只是旧的master不在监听,由新的master监听80
此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级后的Nginx进程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。
kill -USR2 `cat /usr/local/nginx/tmp/nginx.pid`
ps -auxf | grep nginx
先关闭旧nginx的worker进程,而不关闭nginx主进程方便回滚
向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理
kill -WINCH `cat /usr/local/nginx/tmp/nginx.pid.oldbin`
ps -auxf | grep nginx
查看当前版本是否完成升级
curl -I 127.0.0.1
经过一段时间测试,新版本服务没问题,最后退出老的master
复制kill -QUIT `cat /usr/local/nginx/tmp/nginx.pid.oldbin`
ps -auxf | grep nginx
本文修改自 https://blog.csdn.net/qq_42988315/article/details/127057475,如有侵权,请联系删除。
标签:tmp,25,--,nginx,寒假,usr,2.3,进程,local
From: https://www.cnblogs.com/2351920019xin/p/18005278