Nginx平滑升级版本或添加模块

一、Nginx 平滑升级

一般有两种情况下需要升级 nginx,一种是确实要升级 nginx 的版本,另一种是要为 nginx 添加新的模块。

Nginx平滑升级其原理简单概括:

  • (1)在不停掉老进程的情况下,启动新进程。
  • (2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
  • (3)新进程接受新请求。
  • (4)老进程处理完所有请求,关闭所有连接后,停止。

信号说明:

信号nginx内置shell说明
HUPnginx -s reload重载配置文件
USR1nginx -s reopen重新打开日志文件,配置mv,用做日志切割
USR2-热升级nginx程序
WINCH-优雅的关闭相关的worker进程
QUITnginx -s squit优雅的停止nginx
TERM,INTnginx -s stop立即停止nginx

实践:1.16 升级到 1.18

nginx -v
nginx version: nginx/1.16.1

按照原来的编译参数安装 nginx 的方法进行安装,只需要到 make,千万不要 make install 。如果make install 会将原来的配置文件覆盖

wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar zxvf nginx-1.18.0.tar.gz -C /usr/local/src
cd /usr/local/src/nginx-1.18.0

./configure --prefix=/usr/local/nginx --user=nginx --with-http_ssl_module
make 

备份替换nginx命令:

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_$(date +%F)
cp /usr/local/src/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/

测试新版本:

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -v

查找nginx.pid文件位置

find / -name nginx.pid
/usr/local/nginx/logs/nginx.pid

发送平滑迁移信号 USR2: 启动新的主进程,实现热升级

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

发送WINCH信号给旧版主进程,旧版主进程就开始从容关闭

kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`

二、升级失败 回滚操作

1、替换原来的 nginx命令

cd /usr/local/nginx/sbin/
mv nginx_2022-03-21 nginx

2、kill -HUP 旧版本的Master进程号

//不重载 配置文件下 启动旧的worker进程

kill -HUP `cat /usr/local/nginx/logs/nginx.pid.oldbin`

3、kill -USR2 新版本的主进程号

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

4、kill -WINCH 新版本的主进程号

kill -WINCH `cat /usr/local/nginx/logs/nginx.pid`

三、遇到问题

问题:执行完成 “发送平滑迁移信号 USR2” 没有出现新的Master进程信息

查看日志 报错内容为: 大致意思是 找不到 nginx 目录

execve() failed while executing new binary process "nginx" (2: No such file or directory)

原因:Nginx平滑升级是根据环境变量来进行的 ,找不到 nginx目录 是因为上次启动nginx不是 使用完全路径启动的 而环境变量中并没有 nginx这个目录 所以导致 这个问题!

解决:使用正确的启动方法

/usr/local/nginx/sbin/nginx 
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神奇的海马体

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值