不停服務情況下升級nginx


第三方支付平台因安全問題對nginx做了升級操作,為了不影響業務,整個操作過程都不能停服務,因此對升級方法做出了要求。以下為我整理的生產環境實際操作方法,已在第三方支付平台上成功應用,希望對即將或者可能涉及nginx升級操作的同事有所幫助。

Nginx升級步驟:

步驟一:查看原版本及已安裝模塊和進程號。

ps aux|grep nginx

/payment/nginx/sbin/nginx –V

 

步驟二:下載新版本安裝文件並上傳到nginx主機目錄/payment/bak/。

下載地址http://nginx.org/download/nginx-1.4.3.tar.gz

 

步驟三:備份舊版本的執行程序。

tar -cvf /payment/bak/nginx.sbin.20140115.tar /payment/nginx/sbin/

 

步驟四:編譯新版本,增刪模塊。

tar zxvf /payment/bak/nginx-1.4.3.tar.gz

cd /payment/bak/nginx-1.4.3

./configure --prefix=/payment/nginx

make

make install

 

步驟五:替換。

kill -USR2 21727

ll /payment/nginx/logs/nginx*

ps aux|grep nginx

kill -WINCH 21727

一段時間之后,舊的工作進程(worker process)處理了所有已連擊的請求后推出,僅由新的工作進程(worker process)來處理請求了。

 

步驟六:決定使用新版本還是恢復到舊版本。

使用新版本:kill -QUIT 21727

 

新的主進程退出后,舊的主進程會移除.oldbin后綴,恢復為他的.pid文件,這樣,一切就都恢復為升級之前了。 如果嘗試升級成功,而自己又希望保留新版本時,可發送QUIT信號給舊的主進程,使其退出而只留下新的進程運行:kill -QUIT 舊主進程號。

 

為了能夠更加安全,往往采用隱藏軟件版本號的方法,此處插入步驟七,對版本號進行隱藏。

步驟七:備份配置文件並隱藏版本號

(1)備份:tar -cvf /payment/bak/nginx.conf.20140115.tar /payment/nginx/conf/

(2)vi /payment/nginx/conf/nginx.conf

http中加入:

server_tokens off;

vi /payment/nginx/conf/fastcgi.conf

修改:

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  SERVER_SOFTWARE    nginx;

(3)重新加載配置文件。

./nginx -s reload

驗證:curl --head 127.0.0.1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM