nginx平滑公升級

2021-10-01 11:12:03 字數 1737 閱讀 8050

當前伺服器中正在執行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. 傳送usr2訊號給nginx master 程序(nginx服務接收到usr2訊號後,首先會將舊的nginx.pid檔案新增字尾.oldbin,

變為nginx.pid.oldbin,然後執行新版本的二進位制檔案啟動服務,如果新的服務啟動成功,系統中將有新舊兩個nginx服務共同提供web服務),

且老程序處理完所有請求,關閉所有連線後,停止

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

8. 檢視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 -lntup | grep nginx

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

nginx平滑公升級

先來說下我今天要實驗nginx平滑公升級的環境,從nginx.1.8.0公升級到nginx1.9.5 大概的流程 nginx的程序分為master主程序和work工作程序,master程序主要管理事件訊號接受和分發,所有的請求處理都由work程序處理並返回結 果,nginx的平滑重啟或過載配置檔案等...

Nginx平滑公升級

原文 來自nginx官網 如果想要公升級nginx版本 或者在原本版上增加 刪除模組 同時保持服務不間斷,採用如下方式可滿足要求。1.使用新的二進位制檔案替換老的二進位制檔案,這需要注意的是nginx原始碼在執行make編譯後,不要直接make install,否則可能會覆蓋其他配置檔案,命令如下 ...

Nginx平滑公升級

有時,我們需要對我們的伺服器進行公升級更高版本。此時,如果我們強行將伺服器停止然後直接公升級,這樣原來在伺服器上執行著的程序就會被影響。如何解決這個問題呢?可以通過平滑公升級的方式來解決。平滑公升級時,不會停掉在執行著的程序,這些程序會繼續處理請求,但不會再接受新請求,在這些老程序在處理完還在處理的...