Nginx实现了平滑升级, 在不停掉老进程的情况下,启动新进程。老进程负责处理仍然没有处理完的请求,新进程接替老进程开始接收请求。
一般有两种情况下需要升级Nginx,一种是确实要升级Nginx的版本,另一种是要为Nginx添加新的模块。
查看当前版本
./nginx -V
备份老的可执行文件
cp nginx nginx.ol
下载新的Nginx版本并编译, 注意,不要make install
wget http://nginx.org/download/nginx-1.11.3.tar.gz
tar zxvf nginx-1.11.3.tar.gz
cd nginx-1.11.3
./configure
make
拷贝新的可执行文件到原nginx的sbin目录
cp nginx-1.11.3/objs/nginx /y01/sbin/
向老的nginx master进程发送信号进行升级, 在操作前检查下配置文件是否有错误,避免之后的升级造成服务终端,
./nginx -t 无错误则
kill -USR2 32498此时新的nginx master 和 老的nginx master 进程会同时存在,老的master进程不再接收新的请求,继续处理完剩余的请求并退出,
新的master进程开始接收请求并接替老的进程进行服务。正常情况下,连续发送请求,升级过程中不存存在失败的请求。
等待一段时间, 待nginx处理请求完毕,kill掉原旧的nginx进程
kill -QUIT 32498