Nginx的在線升級不需要停服務
1.我們要准備好升級的Nginx軟件包,解壓;
[root@sxb-1 Nginx]# tar xf nginx-1.13.4.tar
2.備份好原先的Nginx數據;
[root@sxb-1 Nginx]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak [root@sxb-1 Nginx]# ls /usr/local/nginx/sbin/nginx.bak /usr/local/nginx/sbin/nginx.bak
3.對解壓Nginx目錄進行配置,在目錄里會出現先objs目錄;編譯 make;
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module --with-pcre=../pcre-8.40
4.將我們編譯好的數據copy到Nginx目錄去;
[root@sxb-1 nginx-1.13.4]# cp objs/nginx /usr/local/nginx/sbin/
5.查看版本號
[root@sxb-1 sbin]# /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.13.4
到這里我們在硬盤上的升級就完成了,接下來我們要替換內存中的Nginx數據;
這里有兩種方法;
第一種為 make upgrade;
第二種;
我們要先查看一下Nginx進程號
[root@sxb-1 sbin]# ps -ef | grep nginx root 25451 1 0 04:45 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 25452 25451 0 04:45 ? 00:00:00 nginx: worker process root 33976 19429 0 05:15 pts/3 00:00:00 grep --color=auto nginx
1.把我們的新版本加進來
[root@sxb-1 sbin]# kill -USR2 25451 [root@sxb-1 sbin]# ps -ef | grep nginx root 25451 1 0 04:45 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 25452 25451 0 04:45 ? 00:00:00 nginx: worker process root 33977 25451 0 05:19 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 33978 33977 0 05:19 ? 00:00:00 nginx: worker process root 33980 19429 0 05:19 pts/3 00:00:00 grep --color=auto nginx
我們可以看到,出現了兩個Nginx進程(bin/nginx為子進程)
2.命令舊本nginx剩余任務完成后,不再接新的任務;
[root@sxb-1 sbin]# kill -WINCH 25451 [root@sxb-1 sbin]# ps -ef | grep nginx root 25451 1 0 04:45 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx root 33977 25451 0 05:19 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 33978 33977 0 05:19 ? 00:00:00 nginx: worker process root 33987 19429 0 05:22 pts/3 00:00:00 grep --color=auto nginx
舊版本nginx不再產生子進程接任務;這里我們一般會把舊版本放置一段時間,以防新版本出現問題;
3.將舊版本nginx清除掉;
[root@vlnx251101 ~]# kill -QUIT 25451
這樣升級任務就完成了
=================================================================================================
降級操作:
1.將我們備份的nginx.bak恢復到/usr/local/nginx/sbin 目錄下;
2.重復上面的操作;