# 原因:因为 nginx发现漏洞、需要对 Nginx 的版本进行更新,需要用到Nginx服务器提供的平滑升级功能。
# 这里是nginx1.18.0升级到nginx1.27.1
[root@ceshi sbin]# ./nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Anolis 4.8.5-44.0.1) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 下载nginx-1.27.1.tar.gz(或者通过网站下载再上传到服务器https://nginx.org/download/nginx-1.27.1.tar.gz)
[root@ceshi ~]# wget https://nginx.org/download/nginx-1.27.1.tar.gz
# 解压解压Nginx压缩包
[root@ceshi ~]# tar -xvf nginx-1.27.1.tar.gz
# 对新版 nginx 进行配置
# 参数与老版本参数保持一致
[root@ceshi ~]# cd nginx-1.27.1/
[root@ceshi nginx-1.27.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
#进行 make 编译(千万不能make install!!!!千万不能make install!!!!千万不能make install!!!!)
[root@ceshi nginx-1.27.1]# make
# 最新版本nginx的目录下会多出来一个objs目录,里面是新的 Nginx二进制文件,make install 的作用就是将二进制文件拷贝到指定的目录
# 对老版本 sbin 目录下的 nginx 进行备份
[root@ceshi nginx-1.27.1]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old2024
# 将步骤四中编译好的 objs 目录下的 nginx 二进制文件,复制到 /usr/local/nginx/sbin 目录
[root@ceshi nginx-1.27.1]# cp objs/nginx /usr/local/nginx/sbin/
[root@ceshi nginx-1.27.1]# ls /usr/local/nginx/sbin/
nginx nginx.old2024
# make upgrade 命令升级
# 在/root/nginx-1.27.1目录下执行升级
[root@ceshi nginx-1.27.1]# make upgrade
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
sleep 1
test -f /usr/local/nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
# 检查升级后的版本
[root@ceshi sbin]# pwd
/usr/local/nginx/sbin
[root@ceshi sbin]# ./nginx -V
nginx version: nginx/1.27.1
built by gcc 4.8.5 20150623 (Anolis 4.8.5-44.0.1) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 版本回退
[root@ceshi sbin]# ls
nginx nginx.old2024
[root@ceshi sbin]# mv nginx nginx-1.27
[root@ceshi sbin]# mv nginx.old2024 nginx
[root@ceshi sbin]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
[root@ceshi sbin]# ps -ef|grep nginx
root 87186 1 0 11:14 ? 00:00:00 nginx: master process ./nginx
root 91546 7883 0 11:16 pts/0 00:00:00 grep --color=auto n
[root@ceshi sbin]# ./nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Anolis 4.8.5-44.0.1) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 回退成功