nginx的熱部署以及平滑公升級和回滾

2021-10-01 20:28:38 字數 1615 閱讀 3919

1,先來說一下執行nginx服務開啟的程序情況

ngnix中的程序分為兩類,一類是master程序,一類是worker程序   

其中master程序是用來管理監控控制其下邊的worker程序的主程序,這個程序由root發起

其中原因是http這個服務需要啟用80埠,而只有root才有許可權啟用80埠

而顧名思義,worker程序才是真正working的程序,才是真正處理請求的程序

這些程序全部都是master程序的子程序,這些程序是以普通使用者的身份進行執行的,這樣就可以極大增加程式的安全性

就算是萬一有乙個程序被劫持,那也不會有管理員許可權   

worker程序中,原生的功能只有最基本的web服務

但是由於nginx是高度模組化的應用程式,所以,在每乙個worker程序中,有著乙個或者多個模組

但是需要注意的是,裝載的模組可不是全部一次載入進去的,只有當這個進**的需要這個模組的時候,才會被這個工作程序載入

在我看來,模組化的思想和物件導向的思想,是推動現代整個開發的重要思想

由於nginx這個高度模組化的機制,也成就了其高效輕量的特點

2,進行熱部署的前提條件(也就是為什麼nginx可以進行熱部署)3,什麼是熱部署4,熱部署的分類1,將安裝1.16的nginx服務更新到1.17

nginx的平滑公升級

tar zxf nginx-1.17.1.tar.gz #解壓

cd nginx-1.17.1

./configure --prefix=/usr/local/nginx #原始碼的編譯

cd /usr/local/nginx/sbin/

cp -r nginx nginx.old #做好備份

make

#安裝之後出有objs目錄

cd objs

cp -f nginx /usr/local/nginx/sbin/nginx #複製二進位制程式,替換舊的版本

ps -ef |

grep nginx #檢視主程序和子程序,

/usr/local/nginx/sbin/nginx -s reload #重建引導程式

kill -usr2 舊版本 #舊版本nginx不再接收新的請求

ps -ef |

grep nginx #會有四個程序,更新之後的程序並未工作

kill -winch 舊版本 #舊版本的nginx處理完成之後停止工作

./nginx -v #可以產看nginx的版本資訊

nginx的回滾

之前舊版本的主程序不要kill關閉,以防萬一公升級失敗還可以進行回滾

kill -hup 舊版本 #喚醒舊版本的主程序

kill -winch 新版本的主程序 #關閉新的程序

cd /usr/local/nginx/sbin/

cp -f nginx.old nginx #將備份舊版本的nginx的再次複製過來

./nginx -v #檢視版本資訊

nginx平滑公升級

先來說下我今天要實驗nginx平滑公升級的環境,從nginx.1.8.0公升級到nginx1.9.5 大概的流程 nginx的程序分為master主程序和work工作程序,master程序主要管理事件訊號接受和分發,所有的請求處理都由work程序處理並返回結 果,nginx的平滑重啟或過載配置檔案等...

Nginx平滑公升級

原文 來自nginx官網 如果想要公升級nginx版本 或者在原本版上增加 刪除模組 同時保持服務不間斷,採用如下方式可滿足要求。1.使用新的二進位制檔案替換老的二進位制檔案,這需要注意的是nginx原始碼在執行make編譯後,不要直接make install,否則可能會覆蓋其他配置檔案,命令如下 ...

Nginx平滑公升級

有時,我們需要對我們的伺服器進行公升級更高版本。此時,如果我們強行將伺服器停止然後直接公升級,這樣原來在伺服器上執行著的程序就會被影響。如何解決這個問題呢?可以通過平滑公升級的方式來解決。平滑公升級時,不會停掉在執行著的程序,這些程序會繼續處理請求,但不會再接受新請求,在這些老程序在處理完還在處理的...