Nginx 的版本最開始使用的是 Nginx-1.18.0 , 由於服務升級,需要將 Nginx 的版本升級到 Nginx-1.19.7 ,要求 Nginx 不能中斷提供服務。
為了應對上述的需求,提供兩種解決方案:
方案1: make upgrade 完成升級
方案2: 服務訊號 完成升級
nginx 版本升級
環境說明
當前是 CentOS7 伺服器。
點選進入 nginx 下載頁面
環境準備
1)已安裝的 Nginx 版本資訊
nginx -V
或者
/usr/local/nginx/sbin/nginx -V
可以看出當前版本為 1.18.0
,如下圖所示:
2)下載當前最新版本 nginx-1.19.7
,並透過Xftp上傳至伺服器,然後執行解壓命令。或者透過命令,直接下載
wget -c http://nginx.org/download/nginx-1.26.2.tar.gz
tar -zxvf nginx-1.19.7.tar.gz
如下圖所示:
3)解壓後,對最新版 nginx 進行配置
(1)檢視現有版本(老版本)nginx 的 configure
配置資訊
nginx -V
如圖所示,得到 configure
的配置資訊。
(2)然後,再對新版 nginx 進行配置。根據自己的配置填寫 ,下面的是我的,我根據後面的配置資訊弄的
./configure --prefix=/usr/local/nginx
如下圖所示:
4)接著,進行 make
make
進行編譯,切記千萬不要輸入 make install
,如下圖所示:
5)這樣,最新版本nginx的目錄下會多出來一個objs目錄,如下圖所示:
6)對老版本 sbin 目錄下的 nginx 進行備份:
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
如下圖所示:
7)將編譯好的 objs
目錄下的 nginx
檔案,複製到 /usr/local/nginx/sbin
目錄。
cp /root/nginx-1.19.7/objs/nginx /usr/local/nginx/sbin/nginx
如下圖所示:
方案1:make upgrade 命令升級
1)對 nginx 升級
make upgrade
如下圖所示:
2)檢視升級後的版本
/usr/local/nginx/sbin/nginx -V
可以看到升級成功,並且過程中服務不中斷,如下圖所示:
5)透過瀏覽器可以訪問到nginx的主頁。
如下圖所示:
方案2:服務訊號升級
1)平滑重啟升級nginx
傳送訊號 USR2
給 Nginx 的 1.18.0
版本對應的 master 程序。
kill -USR2 `cat /usr/local/nginx/log/nginx.pid`
舊版本 Nginx 的 pid 變為 oldbin ,這是舊版本和新版本的 nginx 同時執行,過一端時間等就 nginx 處理完使用者請求後,執行下面操作從容關閉舊版本的 Nginx 程序。
2)從容關閉舊版本的Nginx程序
kill -WINCH `cat /usr/local/nginx/log/nginx.oldbin`
3)決定是否升級到新版的 nginx
傳送訊號 QUIT
給 Nginx 的 1.18.0
版本對應的 master 程序。
## nginx在不過載配置檔案啟動工作程序 kill -HUP `cat /usr/local/nginx/log/nginx.oldbin` ## 關閉舊版nginx kill -QUIT `cat/usr/local/nginx/log/nginx.oldbin`
4)驗證nginx是否升級成功
/usr/local/nginx/sbin/nginx -V