nginx 版本升級 轉載

@菜鸟爱学习@發表於2024-09-02

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

相關文章