成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

模擬nginx熱部署

caige / 3170人閱讀

摘要:熱部署,就是在應(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)文章

  • nginx學(xué)習(xí)一】基本原理初探

    摘要:關(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)行了初探,有任何疑問...

    Simon 評論0 收藏0
  • 從PHP遷移至Golang - 基礎(chǔ)篇

    摘要:但是,隨著微服務(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ù)雜性...

    Kerr1Gan 評論0 收藏0
  • 馬蜂窩容器化平臺前端賦能實踐

    摘要:本文將結(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...

    wall2flower 評論0 收藏0
  • 馬蜂窩容器化平臺前端賦能實踐

    摘要:本文將結(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...

    余學(xué)文 評論0 收藏0
  • 馬蜂窩容器化平臺前端賦能實踐

    摘要:本文將結(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...

    desdik 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<