nginx平滑升級的操作教程

平滑升級概述
nginx方便地幫助我們實現了平滑升級。其原理簡單概括,就是:
(1)在不停掉老進程的情況下,啟動新進程。
(2)老進程負責處理仍然沒有處理完的請求,但不再接受處理請求。
(3)新進程接受新請求。
(4)老進程處理完所有請求,關閉所有連接后,停止。
這樣就很方便地實現了平滑升級。一般有兩種情況下需要升級nginx,一種是確實要升級nginx的版本,另一種是要為nginx添加新的模塊。

升級過程
具體的操作也很簡單,如下:

(0)查看當前版本
在存放Nginx的可執行文件的目錄下輸入:

復制代碼代碼如下:

./nginx -V?

(1)下載新的Nginx版本并編譯。

復制代碼代碼如下:

wget nginx-1.0.11.tar.gz??
tar zxvf nginx-1.0.11.tar.gz??
cd nginx-1.0.11??
./configure –add-module=/customized_module_0 –add-module=/customized_module_1??
make?

注意不要進行make install

下載:

[root@liuawblizfpws~]#wget?*.*.tar.gz (版本號已修改)

解壓:

[root@liuawblizfpws ~]#tar zxvf ?nginx-0.*.*.tar.gz (版本號已修改)

這里順便把nginx的版本號修改了,起到一定的安全作用。

修改源碼文件:

[root@liuawblizfpws ~]#vim nginx-0.*.*/src/core/nginx.h
#define NGINX_VERSION ? ? ?“*.$.&” ? (版本號)
#define NGINX_VER ? ? ? ? ?“net/” NGINX_VERSION ?(服務器名字)
重新編譯之前需要查看之前的nginx的安裝信息:

[root@liuawblizfpws ~]#/usr/local/nginx/sbin/nginx -V

得到信息(路徑因人而異):

nginx: configure arguments: –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module

編譯,但不安裝;在編譯目錄下的objs目錄下的nginx文件即是新的執行文件:
[root@liuawblizfpws?nginx-0.*.*]#./configure?–user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module
[root@liuawblizfpws?nginx-0.*.*]#make
備份原有nginx文件:

[root@liuawblizfpws ~]#mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

將已經編譯好的nginx文件復制到相應的執行路徑下:

cp ~/nginx-0.*.*/objs/nginx /usr/local/nginx/sbin/nginx

測試,以免不能平滑升級:
[root@liuawblizfpws ~]#/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
測試通過則將nginx.pid修改為您nginx.pid.oldbin,同時啟動新的nginx:

[root@liuawblizfpws ~]#kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

退出原nginx:

[root@liuawblizfpws ~]#kill -QUIT `cat /usr/loca/nginx/logs/nginx.pid.oldbin`

查驗:
[root@liuawblizfpws ~]#curl -I netonline.me
HTTP/1.1 200 OK
Server: net/*.$.&

Date: Thu, 09 Dec 2010 05:13:36 GMT

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享