Nginx 平滑升级
1、查看现有的 nginx 编译参数
[root@web ~]#/usr/local/nginx/sbin/nginx -V
按照原来的编译参数安装 nginx 的方法进行安装,只需要到 make,千万不要 make install
2、编译新的 nginx 源码包
编译新Nginx源码,安装路径需与旧版一致 (详细过程可参见:Nginx编译安装与配置使用)
[root@web ~]#./configure --prefix=/usr/local/nginx-1.14.0 --user=www --group=www --with-http_ssl_module --with-openssl=/path/to/openssl_src
[root@web ~]#make
3、备份原 nginx 二进制文件
备份二进制文件和 nginx 的配置文件(期间nginx不会停止服务)
[root@web ~]#mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_$(date +%F)
4、复制新的nginx二进制文件,进入新的nginx源码包
[root@web ~]#cp /usr/local/nginx-1.14.0/objs/nginx /usr/local/nginx/sbin/
5、测试新版本的nginx是否正常
[root@web ~]#/usr/local/nginx/sbin/nginx -t
6、给nginx发送平滑迁移信号(若不清楚pid路径,请查看nginx配置文件)
[root@web ~]#kill -USR2 cat /var/run/nginx.pid
7、查看nginx pid,会出现一个nginx.pid.oldbin
[root@web ~]#ll /var/run/nginx.pid*
8、从容关闭旧的Nginx进程
[root@web ~]#kill -WINCH cat /var/run/nginx.pid.oldbin
9、此时不重载配置启动旧的工作进程
[root@web ~]#kill -HUP cat /var/run/nginx.pid.oldbin
10、结束工作进程,完成此次升级
[root@web ~]#kill -QUIT cat /var/run/nginx.pid.oldbin
11、验证Nginx是否升级成功
[root@web ~]#usr/local/nginx/sbin/nginx -V
升级实战
1、安装配置1.6版本的 nginx
[root@web ~]# yum install -y gcc gcc-c++ pcre-devel openssl-devel zlib-devel
[root@web ~]# tar zxvf nginx-1.6.0.tar.gz -C /usr/src/
[root@web ~]# cd /usr/src/nginx-1.6.0/
[root@web nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@web nginx-1.6.0]# make
[root@web nginx-1.6.0]# make install
[root@web nginx-1.6.0]# ln -s /usr/local/nginx/sbin/* /usr/sbin/
[root@web nginx-1.6.0]# useradd -M -s /sbin/nologin nginx
[root@web nginx-1.6.0]# nginx
[root@web nginx-1.6.0]# netstat -anput | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19008/nginx: master
2、查看 nginx 版本
[root@web nginx-1.6.0]# nginx -v
nginx version: nginx/1.6.0
3、查看 nginx 现有安装的模块
[root@web nginx-1.6.0]# nginx -V
nginx version: nginx/1.6.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
4、访问验证
[root@web nginx-1.6.0]# echo "nginx1.6.0" > /usr/local/nginx/html/index.html
[root@web nginx-1.6.0]# elinks 192.168.20.167
5、升级 nginx
将 nginx 版本进行升级 并在不影响业务的情况下添加 SSL 和 pcre 模块
[root@web ~]# tar zxvf nginx-1.11.2.tar.gz -C /usr/src/
[root@web ~]# cd /usr/src/nginx-1.11.2/
[root@web nginx-1.11.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=ngiinx --with-http_stub_status_module --with-http_ssl_module --with-pcre
[root@web nginx-1.11.2]# make
[root@web nginx-1.11.2]# cd
[root@web ~]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
[root@web ~]# cp /usr/src/nginx-1.11.2/objs/nginx /usr/local/nginx/sbin/
[root@web ~]# mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.old
[root@Centos ~]# cp /usr/src/nginx-1.11.2/conf/nginx.conf /usr/local/nginx/conf/nginx.conf
[root@web ~]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
[root@web ~]# ls /usr/local/nginx/logs/
access.log error.log nginx.pid
[root@web ~]# ps aux | grep nginx
root 19008 0.0 0.0 24324 944 ? Ss 14:07 0:00 nginx: master process nginx
nginx 19009 0.0 0.1 26832 1744 ? S 14:07 0:00 nginx: worker process
root 53194 0.0 0.0 112660 976 pts/0 R+ 14:36 0:00 grep --color=auto ngin