nginx平滑公升級

2021-07-06 04:51:26 字數 3656 閱讀 2488

先來說下我今天要實驗nginx平滑公升級的環境,從nginx.1.8.0公升級到nginx1.9.5

大概的流程:

nginx的程序分為master主程序和work工作程序,master程序主要管理事件訊號接受和分發,所有的請求處理都由work程序處理並返回結

果,nginx的平滑重啟或過載配置檔案等公升級,首先是向master傳送重啟或過載配置檔案訊號,然後master告訴所有的work程序不再接受新的

請求,然後master另起新的work程序,最後告訴舊的work程序可以光榮退出了

wget 

wget

首先先安裝好1.8.0

./

configure

--prefix

=/usr

/local

/nginx

--sbin

-path

=/sbin

/nginx

--conf

-path

=/etc

/nginx

.conf

make

make install

#啟動nginx

/sbin

/nginx

#檢視nginx情況

[root@iz283rmolcfz

~]#netstat

-anpl

|grep nginx

tcp 00

0.0.

0.0:

800.0

.0.0

:*listen

7940

/nginx

如果在啟動中報錯:

[

root@iz283rmolcfz nginx

-1.8.0

]#/sbin

/nginx -t

-c /etc

/nginx

.conf

nginx:[

emerg

]unexpected end of file

,expecting

";"or

"}"in

/etc

/mime

.types

:1300

nginx

:configuration file

/etc

/nginx

.conf test failed

#解決方法:

[root@iz283rmolcfz nginx

-1.8.0

]#ll

/etc

/mime

.types*-

rw-r--

r--.

1root root

43591

sep23

2011

/etc

/mime

.types-rw

-r--r

--1root root

3957

oct1618:

06/etc/

mime

.types

.default

[root@iz283rmolcfz nginx

-1.8.0

]#cp

/etc

/mime

.types

/etc

/mime

.types

.old

[root@iz283rmolcfz nginx

-1.8.0

]#cp

/etc

/mime

.types

.default

/etc

/mime

.types

瀏覽器訪問頁面,響應頭資訊  sever nginx/1.8.0

說明nginx1.8.0版本已安裝,並且正在執行,接下來開始安裝1.9.5版本

./

configure

--prefix

=/usr

/local

/nginx

--sbin

-path

=/sbin

/nginx

--conf

-path

=/etc

/nginx

.conf

make

make install

在make install時,會生成/sbin/nginx.old

(由於nginx程序已在記憶體中,所以硬碟檔案的變動也不影響正在執行的nginx服務)

關鍵的步驟:

#更新 nginx.conf,不同版本的nginx,有可能nginx.conf是不一樣的,所以我們要使用nginx1.9.5的conf檔案。nginx.conf.defaule 就是剛剛在make install時候生成的 

[root@iz283rmolcfz nginx

-1.9.5

]#ll

/etc

/nginx

.conf*-

rw-r--

r--1root root

2656

oct1618:

06/etc/

nginx

.conf-rw

-r--r

--1root root

2656

oct1618:

18/etc/

nginx

.conf

.default

[root@iz283rmolcfz nginx

-1.9.5

]#cp

/etc

/nginx

.conf

/etc

/nginx

.conf

.old

[root@iz283rmolcfz nginx

-1.9.5

]#cp

/etc

/nginx

.conf

.default

/etc

/nginx

.conf

#傳送平滑公升級資訊,此時會生成/usr/local/nginx/logs/nginx.pig.oldbin

kill -s

-sigusr2

`cat /usr/local/nginx/logs/nginx.pid`

#啟動新版本nginx,此時在瀏覽器訪問頁面,有時候是1.8.0,有時候是1.9.5,但正在執行的程序pid不變

/sbin

/nginx

-s reload

#優雅退出舊版本nginx,再次重新整理瀏覽器,頁面的頭部sever nginx/1.9.5,

多次重新整理後也是這樣

kill

-s sigquit

`cat /usr/local/nginx/logs/nginx.pid.oldbin`

當nginx關閉後,對於的pid也會被刪除,只有啟動後才會再生成乙個新的pid

問題:1.nginx1.8.0的nginx命令 是否可以給 1.9.0版本傳送資訊,如停止訊號?

答:都是向同乙個pid傳送就可以

Nginx平滑公升級

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

Nginx平滑公升級

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

nginx平滑公升級

nginx在編譯安裝完成之後,出於以下兩種考慮都需要進行公升級 而nginx所採用的平滑公升級可以保證在不停止服務的情況下解決以上問題。我們以動態增加 with http stub status module模組為例,步驟如下 1.檢視nginx版本號及已安裝模組 root foundation7 ...