背景
一般项目中nginx有很多台,且nginx很容易出漏洞。如果按常规方法升级,不仅操作繁琐,而且需要暂停服务。nginx提供了平滑升级的方式,不关停,不需要倒腾配置文件。
步骤
1 明确nginx的路径
ps -ef | grep nginx (cwd->后面为路径)
ll /proc/进程号
2 备份完整的旧版本
正常只需要备份sbin/nginx 二进制文件,但以防万一,可以把nginx完整文件备份
3 查看现有nginx版本和配置参数
sbin/nginx -V
注意:
V是大写;
配置参数后面要用
4 将新版本升级包放到适当位置(安装目录父目录),配置、编译但不安装
cd 到刚解压的目录
./configure 原来参数
make 不要install
此时目录下会出现objs目录,里面是编译好的内容
5 将旧版本中的sbin/nginx文件备份,然后将新的挪过去
mv 旧版本nginx/sbin/nginx nginx.old.yyyyMMdd
cp 新版本nginx/objs/nginx 旧版本nginx/sbin/nginx
6 执行nginx提供的平滑升级命令
cd 到刚解压的目录
make upgrade
注意:下面代码中只需要执行make upgrade,后面的自动执行
[root@localhost nginx-1.20.1]# make upgrade
/nginx/sbin/nginx -t
nginx: the configuration file /nginx/conf/nginx.conf syntax is ok
nginx: configuration file /nginx/conf/nginx.conf test is successful
kill -USR2 `cat /nginx/logs/nginx.pid`
sleep 1
test -f /nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /nginx/logs/nginx.pid.oldbin`
7 至此,完成平滑升级,不用关停,不用倒腾配文,也就不用重新安装https等功能
验证 sbin/nginx -V