1、上傳新版本的原始碼包(舊版本是1.14.2,新版本是1.16.0)
[root@localhost ~]# lsanaconda-ks.cfg nginx-1.14.2.tar.gz nginx-1.16.0.tar.gz
2、解壓,解壓到原路徑
[root@localhost ~]# tar -xf nginx-1.16.0.tar.gz -c /usr/src/
3、獲取舊版本的編譯安裝資訊
4、切換到解壓路徑下編譯新版本的原始碼包,不需要執行安裝(不需要執行make install)
5、備份二進位制檔案,用新版nginx替換舊版nginx
[root@localhost ~]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old[root@localhost ~]# ls /usr/local/nginx/sbin/nginx.old
[root@localhost ~]# cp /usr/src/nginx-1.16.0/objs/nginx /usr/local/nginx/sbin/[root@localhost ~]# ls /usr/local/nginx/sbin/nginx nginx.old
6、檢視配置檔案,確保正確
[root@localhost ~]# nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is
oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
7、傳送usr2訊號
向主程序(master)傳送usr2訊號,nginx會啟動乙個新版本的master程序和對應工作程序,和舊版一起處理請求
[root@localhost ~]# ps aux | grep nginx | grep -v greproot
4108
0.00.2
45028
1152 ? ss 16:58
0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx
4109
0.00.4
45456
2012 ? s 16:58
0:00
nginx: worker process
[root@localhost ~]# kill -usr2 4108
[root@localhost ~]# ps aux | grep nginx | grep -v grep
root
4108
0.00.2
45028
1316 ? ss 16:58
0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx
4109
0.00.4
45456
2012 ? s 16:58
0:00
nginx: worker process
root
6605
0.50.6
45196
3364 ? s 17:02
0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx
6607
0.00.3
45624
1756 ? s 17:02
0:00 nginx: worker process
8、傳送winch訊號
向舊的nginx主程序(master)傳送winch訊號,它會逐步關閉自己的工作程序(主程序不退出),這時所有請求都會由新版nginx處理
[root@localhost ~]# kill -winch 4108[root@localhost ~]# ps aux | grep nginx | grep -v grep
root
4108
0.00.2
45028
1320 ? ss 16:58
0:00 nginx: master process /usr/local/nginx/sbin/nginx
root
6605
0.00.6
45196
3364 ? s 17:02
0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx
6607
0.00.3
45624
1756 ? s 17:02
0:00 nginx: worker process
9、傳送quit訊號
公升級完畢,可向舊的nginx主程序(master)傳送(quit、term、或者kill)訊號,使舊的主程序退出
[root@localhost ~]# kill -quit 4108[root@localhost ~]# ps aux | grep nginx | grep -v grep
root
6605
0.00.6
45196
3364 ? s 17:02
0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx
6607
0.00.4
45624
2056 ? s 17:02
0:00 nginx: worker process
10、驗證nginx版本號,並訪問測試
nginx平滑公升級
先來說下我今天要實驗nginx平滑公升級的環境,從nginx.1.8.0公升級到nginx1.9.5 大概的流程 nginx的程序分為master主程序和work工作程序,master程序主要管理事件訊號接受和分發,所有的請求處理都由work程序處理並返回結 果,nginx的平滑重啟或過載配置檔案等...
Nginx平滑公升級
原文 來自nginx官網 如果想要公升級nginx版本 或者在原本版上增加 刪除模組 同時保持服務不間斷,採用如下方式可滿足要求。1.使用新的二進位制檔案替換老的二進位制檔案,這需要注意的是nginx原始碼在執行make編譯後,不要直接make install,否則可能會覆蓋其他配置檔案,命令如下 ...
Nginx平滑公升級
有時,我們需要對我們的伺服器進行公升級更高版本。此時,如果我們強行將伺服器停止然後直接公升級,這樣原來在伺服器上執行著的程序就會被影響。如何解決這個問題呢?可以通過平滑公升級的方式來解決。平滑公升級時,不會停掉在執行著的程序,這些程序會繼續處理請求,但不會再接受新請求,在這些老程序在處理完還在處理的...