Nginx源码编译安装平滑升级
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#查看原先系统Nginx版本和编译参数并记录 shell>nginx -V #解压最新版本Nginx shell>tar -zxvf nginx-1.19.3.tar.gz #编译Nginx 1.19.3 shell>cd nginx-1.19.3 #保持和旧版本编译参数一致 shell>./configure --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --prefix=/usr/local/nginx --add-module=../naxsi-0.55.3/naxsi_src/ #只需要make,不需要执行make install shell>make #备份旧nginx启动脚本 shell>cd /usr/local/nginx/sbin/ shell>mv nginx nginx_old #拷贝nginx-1.19.3目录下obj目录下的nginx到/usr/local/nginx的sbin目录下 shell>cp /root/nginx-1.19.3/objs/nginx /usr/local/nginx/sbin/ #开始升级,这一步会将结束旧进程,并开启新的进程进行管理nginx的任务,从而达到平滑升级的效果 shell>cd /root/nginx-1.19.3 shell>make upgrade #这里需要注意的是,使用make upgrade进行平滑升级时,会默认发送USR2信号到/usr/local/nginx/logs/nginx.pid,但是如果你的pid文件位置不一致,就会出现文件不存在的ERROR #####而我们需要做的是,放弃使用make upgrade,而是直接使用以下命令,假设nginx.pid的路径为:/var/run/nginx.pid ################################## shell>/usr/local/nginx/sbin/nginx -t shell>kill -USR2 `cat /var/run/nginx.pid` shell>kill -QUIT `cat /var/run/nginx.pid.oldbin` ################################### #更新旧版本配置文件 shell>cd /usr/local/nginx/conf.d shell>sed -i 's/ssl on/#ssl on/g' ./*.conf #重启 shell>service nginx restart #验证版本号 shell>nginx -V |