Nginx之公升級和構建後新增新的模組

2021-08-11 08:29:49 字數 1967 閱讀 1773

當需要對正在執行的nginx進行公升級時,可以在不停止nginx的情況下,使用新版本或者重編譯的可執行程式替換舊版本的可執行程式,這裡我們從nginx-1.10.1公升級到nginx-1.11.1。

因為nginx的公升級,實質只是用新版本的可執行檔案,替換舊版本的可執行程式,所以,對於備份,既可以只備份舊版本可執行檔案,也可以打包備份整個舊版本安裝目錄,參考命令分別如下:

只備份舊版本可執行檔案

打包備份整個舊版本安裝目錄

因為只是對nginx進行公升級,並不涉及配置引數的修改,所以,我們一般使用和舊版本相同的配置(當然你也可以使用全新的配置資訊),來編譯新版本的nginx,使用如下命令檢視舊版本配置資訊:

可以得到構建引數,比如:

到新的原始碼包下

make

如果有錯誤text file busy之類的,強制覆蓋

傳送 usr2訊號給舊版本主程序號:

kill -usr2 舊版本的nginx主程序號

舊版本nginx主程序接收到-usr2訊號,將重新命名它的.pid檔案為.oldpid,然後執行新版本的nginx可執行程式,依次啟動新版本的主程序和工作程序:

此時,新、舊版本的nginx例項會同時執行,共同處理請求,如果此時給舊版本主程序傳送winch 訊號,舊版本主程序將會給它的工作程序傳送訊息,請求它們從容關閉,此後,舊版本的工作程序開始逐步退出:

kill -winch 舊版本的nginx主程序號

應該注意的是,此時,舊版本的主程序還尚未關閉它監聽的套接字,如果有需要,你仍可以恢復舊版本工作程序。如果由於某些原因,新版本的可執行檔案運**況不理想,下面有幾種方案可供參考:

給舊版本主程序傳送 hup 訊號。舊版本主程序將在不重新讀取配置資訊的情況下,重新開啟工作程序。然後,通過給新版本主程序傳送 quit 訊號,所有新版本的程序將會從容關閉。

給新版本主程序傳送 term 訊號。然後,他將會給它的工作程序傳送訊息,要求它們立即退出,緊接著,這些工作程序就會立即退出。(如果因為某些原因,新版本程序沒有退出,應該給新版本主程序傳送 kill 訊號,強制新版本主程序退出。)新版本主程序退出的同時,舊版本主程序將會自動啟動它的工作程序。

新版本主程序退出後,舊版本主程序將會移除名字以.oldpid 結尾的檔案,恢復為它的 .pid 檔案。

如果公升級成功,應該給舊版本主程序傳送 quit 訊號,使其退出,只保留新版本程序:

kill -quit 舊的主程序

剛接觸nginx時,只知道nginx的功能是分模組的,並不清楚有些模組預設是不參與到構建中去的,比如ngx_http_ssl_module,郵件相關的模組,預設情況下是沒有構建到nginx中的。

隨著業務不斷擴充套件,如果需要nginx支援某些模組,而這些模組預設不在nginx的構建計畫中,構建nginx時,又沒有指定加入這些模組,該怎麼辦呢?是否能夠給已經執行的nginx動態新增這些模組呢?答案是肯定的!

給執行中的nginx動態新增模組的方案,與上面提到的平滑公升級nginx的方案很類似。下面我們來看一下如何給執行中的nginx新增 這些 模組。

比如新加echo模組

注意不能make install,否則就覆蓋了nginx之前的一些東西

進入nginx原始碼包下objs目錄,把nginx檔案替換掉之前的

直接把編譯目錄下objs/nginx檔案直接覆蓋老的nginx檔案.如果你需要安裝多個nginx第三方模組,你只需要多指定幾個相應的--add-module即可.

cd /opt/tools/nginx-1.10.3/objs

nginx –v

ubuntu 公升級後執行nginx報錯

ubuntu 公升級後執行nginx報錯 usr local nginx sbin nginx error while loading shared libraries libssl.so.0.9.8 cannot open shared object file no such file or di...

nginx管理和nginx公升級

nginx web伺服器安裝完畢,可以執行如下命令對其進管理和維護 檢視nginx程序 ps ef grep nginx 平滑啟動nginx 重啟nginx kill hup cat var run nginx.pid 或者 nginx s reload 常用 其中程序檔案路徑在配置檔案nginx....

解決mac公升級後nginx啟動問題

在mac上安裝了nginx,用起來好好的,後來公升級了下mac,發現很多命令都不能用了,包括之前安裝的node,grunt,nginx等,重新安裝這些之後都好了 但是啟動nginx,出現以下情況 chunbomac lichunbo sudo nginx password dyld library ...