[Linux]-Nginx平滑升級


環境說明

當前服務器中正在運行Nginx服務,現想將當前運行的Nginx服務的版本經行升級,(從1.6升級到1.8,版本的跨度不要太大,容易造成服務的崩潰),且在服務不停止的前提下經行升級。

  1. 在不停掉老進程的情況下,啟動新進程。
  2. 老進程負責處理仍然沒有處理完的請求,但不再接受處理請求。
  3. 新進程接受新請求。
  4. 老進程處理完所有請求,關閉所有連接后,停止。

實現步驟

1. 編譯安裝nginx-1.6

yum -y install pcre-devel zlib-devel    #安裝依賴包
useradd -M -s /sbin/nologin nginx    #添加程序運行用戶
tar -zxvf nginx-1.6.0.tar.gz -C /usr/src/    #解包
cd /usr/src/nginx-1.6.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install    #配置編譯並且安裝
/usr/local/nginx/sbin/nginx        #啟動nginx服務                

2. 編譯nginx-1.8(只編譯不安裝)

tar -zxvf nginx-1.8.1.tar.gz -C /usr/src/    #解包
cd /usr/src/nginx-1.8.1/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make    #配置編譯並且安裝

3. 查看升級之前的版本

#/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.6.0

4.  備份舊版本的nginx的執行程序

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

5. 替換舊的Nginx的執行程序

cp /usr/src/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/

6. 使nginx的舊版本停止就收請求,有Nginx新版本接替,且老進程處理完所有請求,關閉所有連接后,停止

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

7. 查看nginx日志目錄會生成一個nginx.pid.oldbin文件,存放舊版本nginx 的pid號

#ls /usr/local/nginx/logs/
access.log  error.log  nginx.pid  nginx.pid.oldbin

8.查看升級升級后的版本

#/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.1

9. 查看服務運行狀態

netstat -aupt | grep nginx
getnameinfo failed
tcp        0      0 *:http                      *:*                         LISTEN      6963/nginx 

10. 使用客戶端驗證Nginx服務是否可以繼續訪問


免責聲明!

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



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