深圳市中心在哪里最繁華優(yōu)化大師免費版
快捷查看指令 ctrl+f 進行搜索會直接定位到需要的知識點和命令講解(如有不正確的地方歡迎各位小伙伴在評論區(qū)提意見,小編會及時修改)
Nginx熱部署
首先來講一下為什么要進行熱部署
nginx 支持熱加載 熱部署 ,在不打斷用戶請求的情況下就可以更新版本
Nginx熱部署的原因主要有以下幾點:
- 當舊的nginx功能模塊不足以支撐項目使用時,需要加載新的nginx到項目中
- 避免 downtime:傳統(tǒng)的軟件升級需要停止服務,進行升級后再重新啟動服務,這個過程會造成服務停機,如果在高流量情況下停機,會影響用戶體驗和業(yè)務收益。
- 提升服務可用性和穩(wěn)定性:Nginx熱部署可以在不中斷服務的情況下進行升級,可以有效減少服務宕機時間,提高業(yè)務的可用性和穩(wěn)定性。
- 降低升級風險:熱部署可以快速回滾到舊版本,降低升級風險。在升級過程中,如果出現(xiàn)了問題,可以很快地切回到舊版本,避免影響業(yè)務。
- 提高運維效率:熱部署可以自動完成升級操作,減少人工干預,提高運維效率。同時,熱部署也可以實現(xiàn)自動化部署和回滾。
Nginx熱部署操作步驟
本次測試將2.3.1版本的Nginx更新為2.4.1版本
- 在舊nginx開啟狀態(tài)下,修改舊nginx的sbin下的命令名
[root@localhost sbin]# mv nginx nginx.old
- 重新編譯不安裝一個新的nginx,位置與舊的一致
(安裝nginx詳情可查看Centos7安裝配置nginx)
[root@localhost tengine-2.4.1]# ./configure --prefix=/tmp/tngx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-threads --with-file-aio[root@localhost tengine-2.4.1]# make
- 將tengine-2.4.1包下的objs/nginx復制到舊nginx包下
cp tengine-2.4.1/objs/nginx /tmp/tngx/sbin/
- 發(fā)送USR2信號給nginx的master
查看master的進程
[root@localhost sbin]# ps -ef | grep 'nginx'
發(fā)送USR2信號
[root@localhost sbin]# kill -USR2 8930
再次查看
[root@localhost sbin]# ps -ef | grep ngi
此時熱部署已經(jīng)完成
- 給舊的master發(fā)送WINCH信號,使其原本工作進程退出
[root@localhost sbin]# kill -WINCH 8930
- 關閉舊的master進程
[root@localhost sbin]# kill -9 8930
補充一下:可能有的小伙伴看到這里會疑惑,我現(xiàn)在相當于有兩個命令一個是nginx(新版本)和一個nginx.old(老版本),而此時正在運行的nginx進程就可以使用nginx(新版本) 進行關閉,然后再進行使用,間接地完成了版本的更新(老版本的nginx.old可以刪除也可以保留)