摘要:熱部署,就是在應(yīng)用正在運行的時候升級軟件,卻不需要重新啟動應(yīng)用。熱部署的流程是備份舊的可執(zhí)行文件新的可執(zhí)行文件直接替換舊的此時舊的進(jìn)程還在運行向進(jìn)程發(fā)送熱部署信號,新的進(jìn)程啟動,舊的不再就收請求。關(guān)閉舊的進(jìn)程,完成熱部署。
熱部署,就是在應(yīng)用正在運行的時候升級軟件,卻不需要重新啟動應(yīng)用。
首先在本地模擬一個線上需要升級 Nginx 的環(huán)境,假設(shè)舊版本為 nginx-1.0.15,需要升級到 nginx-1.16.0。
配置舊版本# 下載 nginx-1.0.15 wget http://nginx.org/download/nginx-1.0.15.tar.gz # 解壓壓縮包 tar -zxf nginx-1.0.15.tar.gz # 進(jìn)入解壓后的目錄 cd nginx-1.0.15 # 配置 nginx ./configure --prefix=/home/nginx # 編譯安裝 make && make install # 運行 nginx sudo /home/nginx/sbin/nginx
此時訪問服務(wù)器地址應(yīng)該可以看到 nginx 的歡迎頁面了。
獲得新版本二進(jìn)制# 下載 nginx-1.16.0 wget http://nginx.org/download/nginx-1.16.0.tar.gz # 解壓壓縮包 tar -zxf nginx-1.16.0 # 進(jìn)入解壓后的目錄 cd nginx-1.16.0/ # 配置 nginx ./configure --prefix=/home/nginx # 只編譯不需要安裝 make
在編譯后的 objs 目錄中,可以看到二進(jìn)制文件 nginx。
熱部署經(jīng)過以上步驟,我們實現(xiàn)了一個正在運行的舊版本 nginx 和編譯完成的新版本 nginx 二進(jìn)制執(zhí)行文件。
熱部署的流程是:
備份舊的 nginx 可執(zhí)行文件
新的 nginx 可執(zhí)行文件直接替換舊的(此時舊的 nginx 進(jìn)程還在運行)
向 nginx master 進(jìn)程發(fā)送熱部署信號,新的 nginx 進(jìn)程啟動,舊的 worker 不再就收請求。
關(guān)閉舊的 worker 進(jìn)程,完成熱部署。
# 備份 cp /home/nginx/sbin/nginx /home/nginx/sbin/nginx.old # 替換 cp -f objs/nginx /home/nginx/sbin/nginx # 查看 master pid ps -ef | grep nginx root 23712 1 0 21:21 ? 00:00:00 nginx: master process /home/nginx/sbin/nginx nobody 23715 23712 0 21:21 ? 00:00:00 nginx: worker process # 發(fā)送熱部署信號,這里 master pid 替換為自己查詢到的 kill -USR2 23712 # 查看當(dāng)前 nginx 進(jìn)程情況,27522 就是新的 master 進(jìn)程 ps -ef | grep nginx root 23712 1 0 21:21 ? 00:00:00 nginx: master process /home/nginx/sbin/nginx nobody 23715 23712 0 21:21 ? 00:00:00 nginx: worker process root 27522 23712 0 21:41 ? 00:00:00 nginx: master process /home/nginx/sbin/nginx nobody 27524 27522 0 21:41 ? 00:00:00 nginx: worker process # 關(guān)閉舊的 worker kill -WINCH 23712 # 再次查看進(jìn)程,可以發(fā)現(xiàn)舊的worker進(jìn)程關(guān)閉了 ps -ef | grep nginx root 23712 1 0 21:21 ? 00:00:00 nginx: master process /home/nginx/sbin/nginx root 27522 23712 0 21:41 ? 00:00:00 nginx: master process /home/nginx/sbin/nginx nobody 27524 27522 0 21:41 ? 00:00:00 nginx: worker process
保留舊的 master 進(jìn)程是為了在新的版本存在問題時,可以快速回退到原版本。如果發(fā)現(xiàn)問題要緊急回滾呢?
cp -f nginx.old nginx # 拉起舊版本的worker進(jìn)程(-HUP 相當(dāng)于 -s reload) kill -HUP old_master_pid # 讓新版本的 worker 不再接受請求 kill -USR2 new_master_pid # 關(guān)閉新版本的 woker 進(jìn)程 kill -WINCH new_master_pid
如果確認(rèn)無誤要退出老版本的 nginx,可以執(zhí)行命令:
kill -QUIT old_master_pid
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/40454.html
摘要:關(guān)于過程中如何細(xì)節(jié)控制一致性,穩(wěn)定性,信號控制,控制等等,敬請期待小拽的進(jìn)一步探索處理流程和模塊啟動進(jìn)程后,請求在內(nèi)部是如何流轉(zhuǎn)的,內(nèi)部包括哪些模塊處理過程請求到達(dá)后首先讀取,中初始時間便從此開始。 由于性能問題,需要將 apache + php5.2 升級到 nginx + php7,對于nginx的性能和熱加載早有耳聞,why nginx so diao。小拽進(jìn)行了初探,有任何疑問...
摘要:但是,隨著微服務(wù)架構(gòu)的興起以及容器時代的到來,這種情況又再次加劇。最重要的是,在微服務(wù)與容器領(lǐng)域有很好的基礎(chǔ),后期系統(tǒng)可完美實現(xiàn)微服務(wù)化與容器化。 1、Why Not PHP 使用PHP構(gòu)建的WEB程序,隨著業(yè)務(wù)發(fā)展到一定體量之后,都不得不面臨以下一些問題: 業(yè)務(wù)功能不斷擴張,如何避免某單一業(yè)務(wù)功能故障影響整體,維持系統(tǒng)健壯性 業(yè)務(wù)邏輯復(fù)雜度不斷上升,如何解耦與模塊化,降低系統(tǒng)復(fù)雜性...
摘要:本文將結(jié)合馬蜂窩容器化平臺賦能前端應(yīng)用構(gòu)建的實踐經(jīng)驗,介紹整個平臺背后的設(shè)計和實現(xiàn)原理,取得的一些效果及問題的優(yōu)化方案。如果使用容器化平臺就不會出現(xiàn)這方面的擔(dān)憂。 容器對前端開發(fā)真的有用嗎?答案是肯定的。 最初當(dāng)我向公司的前端同學(xué)「安利」容器技術(shù)的時候,很多人都會說:「容器?這不是用在后端的技術(shù)嗎?我不懂啊,而且前端開發(fā)用不上吧?!?showImg(https://segmentfau...
摘要:本文將結(jié)合馬蜂窩容器化平臺賦能前端應(yīng)用構(gòu)建的實踐經(jīng)驗,介紹整個平臺背后的設(shè)計和實現(xiàn)原理,取得的一些效果及問題的優(yōu)化方案。如果使用容器化平臺就不會出現(xiàn)這方面的擔(dān)憂。 容器對前端開發(fā)真的有用嗎?答案是肯定的。 最初當(dāng)我向公司的前端同學(xué)「安利」容器技術(shù)的時候,很多人都會說:「容器?這不是用在后端的技術(shù)嗎?我不懂啊,而且前端開發(fā)用不上吧?!?showImg(https://segmentfau...
摘要:本文將結(jié)合馬蜂窩容器化平臺賦能前端應(yīng)用構(gòu)建的實踐經(jīng)驗,介紹整個平臺背后的設(shè)計和實現(xiàn)原理,取得的一些效果及問題的優(yōu)化方案。如果使用容器化平臺就不會出現(xiàn)這方面的擔(dān)憂。 容器對前端開發(fā)真的有用嗎?答案是肯定的。 最初當(dāng)我向公司的前端同學(xué)「安利」容器技術(shù)的時候,很多人都會說:「容器?這不是用在后端的技術(shù)嗎?我不懂啊,而且前端開發(fā)用不上吧?!?showImg(https://segmentfau...
閱讀 3100·2021-11-22 09:34
閱讀 604·2021-11-22 09:34
閱讀 2453·2021-10-08 10:18
閱讀 3387·2021-09-22 15:57
閱讀 2598·2021-09-22 15:25
閱讀 2413·2019-08-30 15:54
閱讀 2126·2019-08-30 15:44
閱讀 1806·2019-08-29 11:18