2.3寒假每日总结25

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,如有侵权,请联系删除。
posted @ 2024-02-03 21:53  风·华正茂  阅读(6)  评论(0编辑  收藏  举报