亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nginx進(jìn)行平滑升級的實戰(zhàn)指南(不中斷服務(wù)版本更新)

 更新時間:2025年08月03日 14:08:24   作者:ζ??山 ??有扶蘇 ???  
Nginx的平滑升級(也稱為熱升級)是一種在不停止服務(wù)的情況下更新Nginx版本或添加模塊的方法,這種升級方式確保了服務(wù)的高可用性,避免了因升級導(dǎo)致的請求中斷問題,以下是實現(xiàn)Nginx平滑升級的具體步驟,需要的朋友可以參考下

Nginx無縫升級版本,支持及時回滾。
升級目的:解決Nginx漏洞
平滑升級的核心是 不中斷服務(wù) 的前提下,用新版本的 Nginx 替換舊版本。新編譯的 objs/nginx 是新版本的二進(jìn)制文件,需要覆蓋舊的二進(jìn)制文件,以便 Master 進(jìn)程啟動新的 Worker 進(jìn)程時使用新版本。

一.下載并編譯新版Nginx

1.下載解壓

nginx下載找到并下載Nginx最穩(wěn)定版本,通過SSH上傳至服務(wù)器

也可復(fù)制鏈接在服務(wù)器通過wget下載。

wget https://nginx.org/download/nginx-1.28.0.tar.gz

下載安裝至指定目錄后解壓。

cd /home/ngtl/
tar -zxvf nginx-1.28.0.tar.gz
cd nginx-1.28.0/

2.編譯

編譯之前需要確定之前版本的Nginx的編譯目錄,和模塊兼容性。找到正在運行的Nginx可執(zhí)行文件并執(zhí)行命令。

/usr/local/nginx/sbin/nginx -V

可以看到從--prefix之后都是執(zhí)行./configure的參數(shù),在新Nginx編譯的時候,參數(shù)必須和要升級的Nginx一樣.

關(guān)鍵步驟

  1. 完整復(fù)制 configure arguments: 后的參數(shù)
  2. 必須保證新版本配置參數(shù)與舊版完全一致
  3. 特別注意第三方模塊路徑(如 OpenSSL)

然后在剛才解壓的Nginx目錄下執(zhí)行以下命令然后等待:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_realip_module --with-stream --with-http_ssl_module --with-openssl=/home/ngtl/openssl-1.1.1l

./configure成功后如下圖:

然后繼續(xù)執(zhí)行make命令,注意這里不要執(zhí)行make insyall,不然會覆蓋原來的配置文件,包括config下面的。

make

執(zhí)行成功以后,會在解壓目錄下生成objs目錄,目錄下會生成需要替換的nginx可執(zhí)行文件。

注意事項

  • 編譯產(chǎn)物路徑:nginx/objs/nginx
  • 禁止執(zhí)行 make install 防止覆蓋現(xiàn)有配置
  • 出現(xiàn) ./configure: error 需檢查缺失的依賴庫

二.替換可執(zhí)行文件,并平滑升級

1.替換可執(zhí)行文件

備份舊版本方便報錯后回滾

# 備份舊的 Nginx 可執(zhí)行文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

# 備份配置文件(可選)
cp -r /usr/local/nginx/conf /usr/local/nginx/conf.bak

替換舊的二進(jìn)制文件

將新編譯的 objs/nginx 復(fù)制到舊版本的安裝目錄中:

cp objs/nginx /usr/local/nginx/sbin/

注意如果此處提示報錯:cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text file busy。這表明目標(biāo)文件(nginx 可執(zhí)行文件)正在被其他進(jìn)程占用。
解決方法:需要先通過 Nginx 平滑升級流程 處理舊進(jìn)程,確保替換二進(jìn)制文件時不會沖突。

2.進(jìn)行平滑升級處理

發(fā)送信號啟動新版本進(jìn)程

# 獲取舊 Nginx 主進(jìn)程的 PID
cat /usr/local/nginx/logs/nginx.pid

# 發(fā)送 USR2 信號,啟動新版本的 Master 進(jìn)程
kill -USR2 <上一步的ID>

此時,Nginx 會啟動新的 Master 進(jìn)程,并加載新版本的配置文件(如果上一步為報錯則已經(jīng)替換成功)。舊的 Master 進(jìn)程仍然在運行,但新的 Master 進(jìn)程已經(jīng)啟動。

替換二進(jìn)制文件使用 mv 命令替換或者cp -f強制覆蓋

# 使用 mv 替換(避免 "Text file busy" 錯誤)
mv objs/nginx /usr/local/nginx-1.20.1/sbin/
# 強制覆蓋(仍需確保文件未被占用)
cp -f objs/nginx /usr/local/nginx-1.20.1/sbin/

優(yōu)雅關(guān)閉舊版本進(jìn)程

# 發(fā)送 WINCH 信號,逐步關(guān)閉舊版本的 Worker 進(jìn)程
kill -WINCH <上一步的ID>

# 檢查進(jìn)程狀態(tài)(確認(rèn)舊 Worker 進(jìn)程已退出)
ps -ef | grep nginx

此時舊的會話已經(jīng)被新Nignx進(jìn)程替代,在檢查新Nginx不影響業(yè)務(wù)之后,就可以完全停止舊進(jìn)程了

完全關(guān)閉舊版本 Master 進(jìn)程

# 發(fā)送 QUIT 信號,關(guān)閉舊版本 Master 進(jìn)程
kill -QUIT <上一步的ID>

信號作用詳解

信號作用執(zhí)行時機
USR2啟動新版本Master進(jìn)程升級第一步
WINCH逐步關(guān)閉舊版本W(wǎng)orker進(jìn)程新進(jìn)程正常運行后
QUIT優(yōu)雅退出舊Master進(jìn)程業(yè)務(wù)驗證通過后

檢查新版本是否運行

驗證版本信息

/usr/local/nginx/sbin/nginx -v

回滾方案(如升級失?。?/h2>

如果新版本出現(xiàn)問題,可以通過以下步驟回滾到舊版本:

恢復(fù)備份文件

cp /usr/local/nginx/sbin/nginx.bak /usr/local/nginx/sbin/nginx

重啟舊版本進(jìn)程

# 向新 Master 進(jìn)程發(fā)送 QUIT 信號(關(guān)閉新版本)
kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)

# 啟動舊版本 Nginx
/usr/local/nginx/sbin/nginx

注意事項

  1. 確保編譯參數(shù)一致
    新版本的 Nginx 必須使用與舊版本相同的編譯參數(shù)(如模塊配置),否則可能導(dǎo)致功能異常。
  2. 避免直接覆蓋運行中的文件
    直接使用 cp 覆蓋正在運行的 Nginx 二進(jìn)制文件會導(dǎo)致 Text file busy 錯誤,必須通過平滑升級流程處理。
  3. 監(jiān)控日志
    升級后檢查 Nginx 日志(/usr/local/nginx/logs/),確保無報錯。

以上就是Nginx不中斷服務(wù)實現(xiàn)版本更新的實戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于Nginx不中斷服務(wù)版本更新的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Nginx多虛擬主機配置小結(jié)

    Nginx多虛擬主機配置小結(jié)

    本文主要介紹了Nginx多虛擬主機配置小結(jié)
    2024-05-05
  • Nginx中server_name指令的參數(shù)詳解

    Nginx中server_name指令的參數(shù)詳解

    這篇文章主要介紹了Nginx中server_name指令的參數(shù)詳解,Nginx中的server_name指令主要用于配置基于名稱的虛擬主機,server_name指令一項很實用的功能便是可以在使用正則表達(dá)式的捕獲功能,這樣可以盡量精簡配置文件,需要的朋友可以參考下
    2023-08-08
  • Nginx本地配置SSL訪問的實例教程

    Nginx本地配置SSL訪問的實例教程

    當(dāng)一個項目部署測試服后會遇到跨域、SSL證書、訪問靜態(tài)文件等各種問題,這個時候我們就可以采用Nginx來解決上述的問題,下面這篇文章主要給大家介紹了關(guān)于Nginx本地配置SSL訪問的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • nginx could not build the server_names_hash 解決方法

    nginx could not build the server_names_hash 解決方法

    服務(wù)器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制的。
    2011-03-03
  • nginx中用JSON格式記錄日志的配置示例

    nginx中用JSON格式記錄日志的配置示例

    這篇文章主要介紹了nginx中用JSON格式記錄日志的配置示例,其實就是定義一個JSON的日志格式,然后在需要的地方調(diào)用即可,需要的朋友可以參考下
    2014-07-07
  • windows查看nginx是否啟動的四種方法

    windows查看nginx是否啟動的四種方法

    本文主要介紹了windows查看nginx是否啟動的兩種方法,文中通過圖文代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Nginx+Tomcat群集的實現(xiàn)示例

    Nginx+Tomcat群集的實現(xiàn)示例

    這篇文章主要介紹了Nginx+Tomcat群集的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • 阿里云Nginx配置https實現(xiàn)域名訪問項目(圖文教程)

    阿里云Nginx配置https實現(xiàn)域名訪問項目(圖文教程)

    這篇文章主要介紹了阿里云Nginx配置https實現(xiàn)域名訪問項目(圖文教程),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • keepalived+lvs 對nginx做負(fù)載均衡和高可用的操作方法

    keepalived+lvs 對nginx做負(fù)載均衡和高可用的操作方法

    這篇文章主要介紹了keepalived+lvs 對nginx做負(fù)載均衡和高可用的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • nginx設(shè)置攔截請求的幾種方法

    nginx設(shè)置攔截請求的幾種方法

    本文主要介紹了nginx設(shè)置攔截請求的幾種方法
    2024-05-05

最新評論