欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一.下載并編譯新版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的編譯目錄,和模塊兼容性。找到正在運(yùn)行的Nginx可執(zhí)行文件并執(zhí)行命令。

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

可以看到從--prefix之后都是執(zhí)行./configure的參數(shù),在新Nginx編譯的時(shí)候,參數(shù)必須和要升級(jí)的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,不然會(huì)覆蓋原來的配置文件,包括config下面的。

make

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

注意事項(xiàng)

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

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

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

備份舊版本方便報(bào)錯(cuò)后回滾

# 備份舊的 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/

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

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

發(fā)送信號(hào)啟動(dòng)新版本進(jìn)程

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

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

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

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

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

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

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

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

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

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

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

信號(hào)作用詳解

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

檢查新版本是否運(yùn)行

驗(yàn)證版本信息

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

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

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

恢復(fù)備份文件

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

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

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

# 啟動(dòng)舊版本 Nginx
/usr/local/nginx/sbin/nginx

注意事項(xiàng)

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

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

相關(guān)文章

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

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

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

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

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

    Nginx本地配置SSL訪問的實(shí)例教程

    當(dāng)一個(gè)項(xiàng)目部署測(cè)試服后會(huì)遇到跨域、SSL證書、訪問靜態(tài)文件等各種問題,這個(gè)時(shí)候我們就可以采用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格式記錄日志的配置示例,其實(shí)就是定義一個(gè)JSON的日志格式,然后在需要的地方調(diào)用即可,需要的朋友可以參考下
    2014-07-07
  • windows查看nginx是否啟動(dòng)的四種方法

    windows查看nginx是否啟動(dòng)的四種方法

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

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

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

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

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

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

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

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

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

最新評(píng)論