平滑升級概述
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 ?(服務器名字)
[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
[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
[root@liuawblizfpws ~]#mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp ~/nginx-0.*.*/objs/nginx /usr/local/nginx/sbin/nginx
[root@liuawblizfpws ~]#/usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@liuawblizfpws ~]#kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
[root@liuawblizfpws ~]#kill -QUIT `cat /usr/loca/nginx/logs/nginx.pid.oldbin`
[root@liuawblizfpws ~]#curl -I netonline.meHTTP/1.1 200 OKServer: net/*.$.&Date: Thu, 09 Dec 2010 05:13:36 GMT