高效能Web伺服器Nginx的配置與部署研究(14)平滑升級你的Nginx
1、概述(可以直接跳過看第2部分)
Nginx方便地幫助我們實現了平滑升級。其原理簡單概括,就是:
(1)在不停掉老程式的情況下,啟動新程式。
(2)老程式負責處理仍然沒有處理完的請求,但不再接受處理請求。
(3)新程式接受新請求。
(4)老程式處理完所有請求,關閉所有連線後,停止。
這樣就很方便地實現了平滑升級。一般有兩種情況下需要升級Nginx,一種是確實要升級Nginx的版本,另一種是要為Nginx新增新的模組。
2. 升級過程
具體的操作也很簡單,如下:
(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
(2)備份老版本的可執行檔案
cd /usr/local/nginx/sbin
sudo cp nginx nginx.old
(3)修改配置檔案
如果有必要的話,進行配置檔案的修改。
(4)拷貝新的可執行檔案
sudo cp /home/michael/tmp/nginx-1.0.11/objs/nginx /usr/local/nginx/sbin/
(5)升級
cd /home/michael/tmp/nginx-1.0.11
make upgrade
(6)清理多餘檔案
rm -rf /home/michael/tmp/nginx-1.0.11
(7)檢視Nginx版本
cd /usr/local/nginx/sbin
./nginx -V
3、觀察程式變化
在我的機器上可以觀察到,我配置的是10個worker程式,啟動後觀察到:
root 6241 10419 0 10:51 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 6242 6241 2 10:51 ? 00:00:00 nginx: worker process
nobody 6243 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6244 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6245 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6246 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6247 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6248 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6249 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6250 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6251 6241 1 10:51 ? 00:00:00 nginx: worker process
nobody 6252 6241 0 10:51 ? 00:00:00 nginx: cache manager process
nobody 6253 6241 0 10:51 ? 00:00:00 nginx: cache loader process
luming 6310 25051 0 10:51 pts/1 00:00:00 grep --color=auto nginx
nobody 7995 10419 0 Jan12 ? 00:20:37 nginx: worker process is shutting down
nobody 7996 10419 0 Jan12 ? 00:20:11 nginx: worker process is shutting down
nobody 7998 10419 0 Jan12 ? 00:20:04 nginx: worker process is shutting down
nobody 8003 10419 0 Jan12 ? 00:20:12 nginx: worker process is shutting down
root 10419 1 0 Jan08 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
可見新的程式有1個master和10個worker,另外還有1個老的master(可以從時間上看出)和4個worker(其他6個老的worker已經處理完所有連線而shutdown了)。還有一個loader程式。過幾秒種可以看到worker只有兩個了:
root 6241 10419 0 10:51 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 6242 6241 1 10:51 ? 00:00:00 nginx: worker process
nobody 6243 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6244 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6245 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6246 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6247 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6248 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6249 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6250 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6251 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6252 6241 0 10:51 ? 00:00:00 nginx: cache manager process
nobody 6253 6241 0 10:51 ? 00:00:00 nginx: cache loader process
luming 6430 25051 0 10:51 pts/1 00:00:00 grep --color=auto nginx
nobody 7996 10419 0 Jan12 ? 00:20:11 nginx: worker process is shutting down
nobody 8003 10419 0 Jan12 ? 00:20:12 nginx: worker process is shutting down
root 10419 1 0 Jan08 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
再過一小會兒觀察:
root 6241 1 0 10:51 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 6242 6241 0 10:51 ? 00:00:01 nginx: worker process
nobody 6243 6241 0 10:51 ? 00:00:01 nginx: worker process
nobody 6244 6241 0 10:51 ? 00:00:01 nginx: worker process
nobody 6245 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6246 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6247 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6248 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6249 6241 0 10:51 ? 00:00:00 nginx: worker process
nobody 6250 6241 0 10:51 ? 00:00:01 nginx: worker process
nobody 6251 6241 0 10:51 ? 00:00:02 nginx: worker process
nobody 6252 6241 0 10:51 ? 00:00:00 nginx: cache manager process
luming 8680 25051 0 10:56 pts/1 00:00:00 grep --color=auto nginx
Congratulations! You can upgrade your Nginx server gracefully.
-
相關文章
- 高效能Web伺服器Nginx的配置與部署研究(2)Nginx入門級配置與部署及“Hello World”...Web伺服器Nginx
- 高效能Web伺服器Nginx的配置與部署研究(5)Nginx配置符號Web伺服器Nginx符號
- 高效能Web伺服器Nginx的配置與部署研究(4)Nginx常用命令Web伺服器Nginx
- 高效能Web伺服器Nginx的配置與部署研究(1)Nginx簡介及入門示例Web伺服器Nginx
- 高效能Web伺服器Nginx的配置與部署研究(3)Nginx請求處理機制Web伺服器Nginx
- 高效能Web伺服器Nginx的配置與部署研究(3)Nginx的請求處理機制Web伺服器Nginx
- nginx平滑升級Nginx
- 高效能Web伺服器Nginx的配置與部署研究(8)核心模組之事件模組Web伺服器Nginx事件
- 高效能Web伺服器Nginx的配置與部署研究(15)Upstream負載均衡模組Web伺服器Nginx負載
- nginx實現平滑升級Nginx
- 高效能Web伺服器Nginx的配置與部署研究(6)核心模組之主模組的測試常用指令...Web伺服器Nginx
- 高效能Web伺服器Nginx的配置與部署研究(9)核心模組之HTTP模組基本常用指令Web伺服器NginxHTTP
- 高效能Web伺服器Nginx的配置與部署研究(7)核心模組之主模組的非測試常用指令...Web伺服器Nginx
- 高效能Web伺服器Nginx的配置與部署研究(16)小議location匹配模式優先順序Web伺服器Nginx模式
- 高效能Web伺服器Nginx的配置與部署研究(10)核心模組之HTTP模組Location相關指令...Web伺服器NginxHTTP
- Nginx如何進行平滑升級Nginx
- Linux下平滑升級nginxLinuxNginx
- 1分鐘搞定 Nginx 版本的平滑升級與回滾Nginx
- 高效能Web伺服器Nginx的配置與部署研究(11)應用模組之Memcached模組的兩大應用場景...Web伺服器Nginx
- 生產環境nginx平滑升級演示Nginx
- 高效能Web伺服器Nginx的配置與部署研究(13)應用模組之Memcached模組+Proxy_Cache雙層快取模式...Web伺服器Nginx快取模式
- nginx升級與回退Nginx
- Nginx配置以及熱升級Nginx
- Nginx range filter模組數字錯誤漏洞修復 (Nginx平滑升級)NginxFilter
- 高效能Web伺服器Nginx的配置與部署研究(12)應用模組之Memcached做檔案快取時壓縮引起的問題...Web伺服器Nginx快取
- Nginx vs Envoy vs MOSN 平滑升級原理解析Nginx
- Nginx升級Nginx
- Nginx部署配置Nginx
- Nginx + Gunicorn 伺服器配置部署 DjangoNginx伺服器Django
- nginx升級與版本回退Nginx
- Nginx+uWSGI+Django部署web伺服器NginxDjangoWeb伺服器
- 配置nginx伺服器 —— Nginx新增多個二級子域名Nginx伺服器
- Nginx安全配置研究Nginx
- 詳解Nginx如何配置Web伺服器NginxWeb伺服器
- 安裝和配置Nginx Web伺服器NginxWeb伺服器
- 你真的瞭解如何將 Nginx 配置為 Web 伺服器嗎NginxWeb伺服器
- Nginx如何升級OpensslNginx
- 阿里雲伺服器Nginx的安裝與部署阿里伺服器Nginx