最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx不關(guān)機升級(平滑升級)的實戰(zhàn)指南

 更新時間:2025年09月10日 10:36:47   作者:m0_46460826  
隨著 nginx 越來越流行,并且 nginx 的優(yōu)勢也越來越明顯,nginx 的版本迭代也來時加速模式,伴隨著 nginx 的廣泛應(yīng)用,版本升級必然越來越快,線上業(yè)務(wù)不能停,所以本文給大家介紹了Nginx不關(guān)機升級(平滑升級)的實戰(zhàn)指南,需要的朋友可以參考下

一、升級前的準(zhǔn)備工作

1.1 備份關(guān)鍵數(shù)據(jù)

升級前必須備份Nginx的安裝目錄(如/usr/local/nginx/data/nginx)、配置文件(如/usr/local/nginx/conf/nginx.conf)及日志文件(如/usr/local/nginx/logs/error.log)。例如:
tar -zcvf /data/nginx-backup-$(date +%F).tar.gz /usr/local/nginx/
備份是回滾的核心保障,避免升級失敗導(dǎo)致數(shù)據(jù)丟失。

1.2 確認(rèn)舊版本信息

執(zhí)行以下命令獲取舊版本的編譯參數(shù)(關(guān)鍵!新版本需保持一致)和版本號:

nginx -V

1.3 安裝編譯依賴

確保系統(tǒng)安裝了新版本所需的依賴庫(如gcc、pcre-devel、openssl-devel):
dnf install -y gcc make zlib-devel pcre-devel openssl-devel wget # RockyLinux/RHEL
yum install -y gcc make zlib-devel pcre-devel openssl-devel wget # CentOS
依賴缺失會導(dǎo)致編譯失敗。

二、下載并編譯新版本Nginx

2.1. 下載新版本源碼

訪問Nginx官網(wǎng)(nginx.org/download)下載所需版本(如1.22.0),并解壓:

wget https://nginx.org/download/nginx-1.22.0.tar.gz
tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0

2.2 編譯新版本

使用舊版本的編譯參數(shù)執(zhí)行configure(避免功能沖突),然后編譯(不要執(zhí)行make install,防止覆蓋舊版本):

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module # 復(fù)用舊參數(shù)
make

編譯完成后,新版本的二進(jìn)制文件會生成在objs/nginx目錄下。

三、執(zhí)行平滑升級流程

3.1. 替換舊版本二進(jìn)制文件

將新編譯的objs/nginx復(fù)制到舊版本的安裝目錄(如/usr/local/nginx/sbin/),替換舊的可執(zhí)行文件:

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old  # 備份舊文件
cp objs/nginx /usr/local/nginx/sbin/nginx  # 替換為新文件

若提示Text file busy錯誤,說明舊文件正在被進(jìn)程占用,需先通過后續(xù)步驟停止舊進(jìn)程后再替換。

3.2. 啟動新主進(jìn)程

向舊版本的主進(jìn)程發(fā)送USR2信號,啟動新版本的主進(jìn)程(加載新二進(jìn)制文件),此時新舊版本的主進(jìn)程會同時運行:

kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid)  # 替換為舊版本的PID

執(zhí)行后,可通過ps -ef | grep nginx查看,此時有兩個主進(jìn)程(舊版本和新版本)。

3.3. 優(yōu)雅關(guān)閉舊工作進(jìn)程

向舊版本的主進(jìn)程發(fā)送WINCH信號,逐步關(guān)閉舊版本的工作進(jìn)程(Worker Process),新版本的工作進(jìn)程會接管請求(確保連接不中斷):

kill -WINCH $(cat /usr/local/nginx/logs/nginx.pid.oldbin)  # 替換為舊主進(jìn)程的PID

通過ps -ef | grep nginx確認(rèn)舊工作進(jìn)程已退出,舊主進(jìn)程仍在運行(用于回滾)。

3.4. 驗證新版本狀態(tài)

  • 檢查新版本是否運行:nginx -v(應(yīng)顯示新版本號,如1.29.0);
  • 查看日志無報錯:tail -f /usr/local/nginx/logs/error.log;
  • 確認(rèn)端口在線:netstat -lntup | grep 80(或監(jiān)聽端口)。

3.5. 結(jié)束舊主進(jìn)程

業(yè)務(wù)驗證無誤后,向舊版本的主進(jìn)程發(fā)送QUIT信號,徹底關(guān)閉舊版本:

kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid.oldbin)  # 替換為舊主進(jìn)程的PID

再次執(zhí)行ps -ef | grep nginx,確認(rèn)舊進(jìn)程已全部退出,升級完成。

四、升級失敗的回滾操作

若升級后出現(xiàn)異常(如服務(wù)中斷、功能失效),可快速回滾到舊版本:

4.1. 恢復(fù)舊二進(jìn)制文件

將備份的舊版本二進(jìn)制文件復(fù)制回安裝目錄:
cp /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx

4.2. 重新加載舊版本

向新版本的主進(jìn)程發(fā)送HUP信號(或直接重啟Nginx),拉起舊版本的工作進(jìn)程:

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)  # 替換為新主進(jìn)程的PID(即舊主進(jìn)程的PID)
或直接重啟:  
/usr/local/nginx/sbin/nginx

4.3. 清理舊進(jìn)程

若舊主進(jìn)程未自動退出,可發(fā)送QUIT信號關(guān)閉:
kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid.oldbin)
回滾完成后,再次驗證服務(wù)狀態(tài)。

tar -zcvf /opt/nginx-$(date +%F).tar.gz /usr/local/nginx/    #備份文件目錄+時間  //需要備份的文件目錄
wget https://nginx.org/download/nginx-1.22.0.tar.gz
tar -zxvf nginx-1.22.0.tar.gz    #解壓縮
./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module \
> --with-http_ssl_module
#備份
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak
#編譯
make
#新文件替換到舊文件路徑
cp objs/nginx /usr/local/nginx/sbin/nginx
#
kill -USR2 $(cat /usr/local/nginxlog/nginx.pid)
kill -WINCH $(cat /usr/local/nginx/logs/nginx.pid.oldbin)
kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid.oldbin)

關(guān)鍵注意事項

  • 編譯參數(shù)一致性:新版本必須使用與舊版本完全相同的configure參數(shù)(可新增參數(shù),但不能刪除原有模塊參數(shù)),否則會導(dǎo)致功能異常;
  • 避免覆蓋運行文件:不要直接使用cp覆蓋正在運行的二進(jìn)制文件,需通過平滑升級流程處理;
  • 監(jiān)控系統(tǒng)資源:新舊版本同時運行時會占用雙倍內(nèi)存,確保服務(wù)器資源充足;
  • 測試環(huán)境驗證:生產(chǎn)環(huán)境升級前,務(wù)必在測試環(huán)境完成全流程驗證,避免突發(fā)問題。
./configure \
  --prefix=/usr/local/nginx \                  # 安裝目錄
  --user=nginx \                               # 運行用戶(后續(xù)會創(chuàng)建)
  --group=nginx \                              # 運行用戶組
  --with-http_ssl_module \                     # 啟用 HTTPS 模塊
  --with-http_v2_module \                      # 啟用 HTTP/2 協(xié)議(提升性能)
  --with-http_gzip_static_module \             # 啟用靜態(tài) gzip 壓縮
  --with-http_stub_status_module \             # 啟用狀態(tài)監(jiān)控模塊
  --with-pcre \                                # 啟用 PCRE 正則支持(rewrite 依賴)
  --with-stream \                              # 啟用 TCP 代理模塊(如反向代理數(shù)據(jù)庫)
  --with-stream_ssl_module \                   # 啟用 TCP 代理的 SSL 支持
  --http-log-path=/var/log/nginx/access.log \  # 訪問日志路徑
  --error-log-path=/var/log/nginx/error.log \  # 錯誤日志路徑
  --pid-path=/var/run/nginx/nginx.pid \        # PID 文件路徑
  --lock-path=/var/lock/nginx.lock             # 鎖文件路徑
  
注意:
    可根據(jù)需求增減模塊(如 --without-xxx 禁用不需要的模塊)
    企業(yè)若需特殊模塊(如第三方緩存模塊),可通過 --add-module 引入

到此這篇關(guān)于Nginx不關(guān)機升級(平滑升級)的實戰(zhàn)指南的文章就介紹到這了,更多相關(guān)Nginx不關(guān)機升級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx結(jié)合Openresty通過Lua+Redis實現(xiàn)動態(tài)封禁IP

    Nginx結(jié)合Openresty通過Lua+Redis實現(xiàn)動態(tài)封禁IP

    為了封禁某些爬蟲或者惡意用戶對服務(wù)器的請求,我們需要建立一個動態(tài)的 IP 黑名單,本文主要介紹了Nginx結(jié)合Openresty通過Lua+Redis實現(xiàn)動態(tài)封禁IP,感興趣的可以了解一下
    2023-11-11
  • CentOS 7下安裝Nginx服務(wù)器

    CentOS 7下安裝Nginx服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了CentOS 7下安裝Nginx服務(wù)器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • nginx實現(xiàn)發(fā)布靜態(tài)資源的方法

    nginx實現(xiàn)發(fā)布靜態(tài)資源的方法

    這篇文章主要介紹了nginx實現(xiàn)發(fā)布靜態(tài)資源的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Nginx中add_header和proxy_set_header的區(qū)別及說明

    Nginx中add_header和proxy_set_header的區(qū)別及說明

    這篇文章主要介紹了Nginx中add_header和proxy_set_header的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • nginx配置SSL證書實現(xiàn)https服務(wù)的方法

    nginx配置SSL證書實現(xiàn)https服務(wù)的方法

    這篇文章主要介紹了nginx配置SSL證書實現(xiàn)https服務(wù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Nginx編譯參數(shù)大全 configure參數(shù)中文詳解

    Nginx編譯參數(shù)大全 configure參數(shù)中文詳解

    這篇文章主要介紹了Nginx編譯參數(shù)大全,Nginx configure參數(shù)中文詳解,需要的朋友可以參考下
    2014-04-04
  • Nginx反向代理實現(xiàn)支持長連接詳解

    Nginx反向代理實現(xiàn)支持長連接詳解

    這篇文章主要給大家介紹了關(guān)于Nginx反向代理實現(xiàn)支持長連接的相關(guān)資料,文字介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • keepalived+Nginx實現(xiàn)高可用集群配置

    keepalived+Nginx實現(xiàn)高可用集群配置

    本文詳細(xì)介紹了如何使用Keepalived和Nginx搭建高可用集群,包括配置Keepalived為主從模式,利用虛擬IP實現(xiàn)故障切換,以及通過自定義Shell腳本監(jiān)控Nginx狀態(tài),確保服務(wù)連續(xù)性,感興趣的可以了解一下
    2026-05-05
  • Nginx配置PATHINFO隱藏thinkphp index.php

    Nginx配置PATHINFO隱藏thinkphp index.php

    這篇文章主要介紹了Nginx配置PATHINFO隱藏thinkphp index.php,本文直接給出配置示例,需要的朋友可以參考下
    2015-07-07
  • Nginx服務(wù)器限制訪問速度的配置方法

    Nginx服務(wù)器限制訪問速度的配置方法

    這篇文章主要介紹了Nginx服務(wù)器限制訪問速度的配置方法,尤其是當(dāng)服務(wù)器中存在ftp下載等服務(wù)時尤為有用,需要的朋友可以參考下
    2015-07-07

最新評論

松江区| 双牌县| 钟山县| 营口市| 洪雅县| 瑞丽市| 河间市| 玛纳斯县| 丰镇市| 丰镇市| 德阳市| 山阳县| 山阳县| 万全县| 桃园市| 辉县市| 新兴县| 兰州市| 江华| 浠水县| 浠水县| 津市市| 大城县| 襄城县| 峨眉山市| 鲜城| 轮台县| 和平区| 石渠县| 武功县| 湖口县| 临朐县| 胶南市| 平南县| 徐州市| 金湖县| 临沂市| 龙州县| 渝北区| 新源县| 商河县|