1.平滑升级
当nginx版本需要升级时,在不改变提供功能的情况下,进行软件升级
tar zxf nginx-1.16.1.tar.gz
#解压低版本的nginxcd nginx-1.16.1/
#切换到nginx的目录中./configure --prefix=/usr/local/nginx
#编译,添加安装路径- 由于只做版本的升级和回退,因此不用配置其他模块,只需添加安装路径即可
yum install gcc openssl-devel pcre-devel -y
#安装依赖性软件./configure --prefix=/usr/local/nginx
#编译make && make install
#安装cd /usr/local/nginx/sbin
#切换到安装路径下./nginx
#启动netstat -antlupe | grep nginx
#查看nginx的端口信息- 注意:
- 在启动nginx的时候,使用nginx二进制文件的绝对路径
- 不能以直接在命令行输入“nginx”的方式启动服务
- 原因是:向nginx发送更新的信号时,nginx进程可能无法找到新的二进制进程
- 保护启动脚本
cp nginx nginx.old
#备份启动脚本- 根据老版本的编译选项对新版本的nginx进行编译
- 为了与老版本的设置保持一致,便于之前的设置和文件能够继续使用,保持不变
tar zxf nginx-1.17.8.tar.gz
#解压新版本的nginxcd nginx-1.17.8/
#切换到解压后的目录中./configure --prefix=/usr/local/nginx
#编译方式与老版本相同make
#进行编译- 在编译新版本的时候,configure make结束后不用进行make install,会覆盖掉原来的nginx
此处只进行编译步骤(make),不执行安装步骤(make install)
因为make install命令的本质就是将编译好的文件复制到对应的目录中
所以此处省略make install以防止某些老的配置文件被覆盖
我们只是为了升级nginx原来的配置需要保持不变,所以要确保配置文件不会被覆盖
-
cd /usr/local/nginx/sbin/
#切换到安装路径下 -
cp -f /root/nginx-1.17.8/objs/nginx .
#强制复制新版本的启动脚本到当前
-
ps -ef | grep nginx | grep -v grep
#查看现有的nginx的进程 -
向原来的nginx的master进程发送信号,不再接收新的请求
-
新的nginx程序开启worker进程,并且开始接收请求
-
kill -USR2 4672
#生成新的master进程 -
kill -WINCH 4672
#生效 -
/usr/local/nginx/sbin/nginx -v
#查看版本 -
/usr/local/nginx/sbin/nginx -V
#查看版本及编译参数等 -
netstat -antlupe | grep nginx
#对外界来说,nginx依旧可用
2.版本回退
当新版本有问题时,需要回退到旧版本
cp -f nginx.old nginx
#强制还原nginx脚本kill -HUP 4672
#重新唤起旧版本的master进程,让其接收请求- 新的nginx程序的master进程不接收请求,关闭worker进程,并没有删除
kill -USR2 7229
kill -WINCH 7229
/usr/local/nginx/sbin/nginx -v
#查看版本/usr/local/nginx/sbin/nginx -V
#查看版本及编译参数等