1. 安装步骤略
可以参考https://blog.csdn.net/qq_29974229/article/details/126114380
1和2
至此nginx已经启动
备份nginx文件
cp /apps/nginx-1.20/sbin/nginx /apps/nginx-1.20/sbin/nginx.bak
此时Nginx master 进程号为43619
2. 加载第三方补丁并安装
patch -p1 < /opt/nginx_upstream_check_module-master/check_1.20.1+.patch
./configure --prefix=/apps/nginx-1.20 --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_stub_status_module --add-module=/opt/nginx_upstream_check_module-master
make -j 4
make install
此时Nginx master进程号任然是43619
进程ID可以在nginx.pid中确认
此时/apps/nginx-1.20/sbin/nginx 已经是带有第三方模块了
4. 修改Nginx配置文件
vi /apps/nginx/conf/conf.d/aa.conf
upstream aaa {
server 192.168.31.17;
server 192.168.31.27;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
server {
listen 192.168.31.67:80;
server_name aa.qiuqin.com 192.168.31.67;
location / {
proxy_pass http://aaa;
}
}
5. 生成新的master进程
kill -USR2 `cat /apps/nginx-1.20/logs/nginx.pid`
此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级后的Nginx进程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。
6. 关闭老的worker进程
kill 43620
7. 升级失败回滚
如果升级过程中有问题,退回原版本
7.1 重新拉起老的worker进程
kill -HUP 43619
7.2 退出新的master进程
cat /apps/nginx-1.20/logs/nginx.pid
kill 46315
当然也可以合并成一句
kill `cat /apps/nginx-1.20/logs/nginx.pid`
7.3 应用程序回退
cp /apps/nginx-1.20/sbin/nginx /apps/nginx-1.20/sbin/nginx.bak-20220802
cp /apps/nginx-1.20/sbin/nginx.bak /apps/nginx-1.20/sbin/nginx