編譯Nginx的要求如下:
磁盤(pán)空間:需要保證有10MB以上的剩余磁盤(pán)空間。Nginx安裝完畢后會(huì)占據(jù)4MB左右的磁盤(pán)空間,實(shí)際的磁盤(pán)空間需求會(huì)因編譯設(shè)置和是否安裝第三方模塊而有所不同。
GCC編譯器及相關(guān)工具:GCC全稱為GNU CompilerCollection,
另外,您還必須安裝Autoconf和Automake工具,它們用于自動(dòng)創(chuàng)建功能完善的Makefile,當(dāng)前大多數(shù)軟件包都是用這一工具生成Makefile的,Nginx也不例外。在CentOS系統(tǒng)下,您可以使用yum命令安裝GCC編譯器及相關(guān)工具:
yum -y install gcc gcc-c++ autoconfautomake
模塊依賴性:Nginx的一些模塊需要其他第三方庫(kù)的支持,例如gzip模塊需要zlib庫(kù),rewrite模塊需要pcre庫(kù),ssl功能需要openssl庫(kù)等。同樣,如果是在CentOS系統(tǒng)下,我們可以使用yum命令安裝或下載源碼包編譯安裝這些模塊依賴的庫(kù):
yum -y install zlib zlib-devel openssl openssl--devel pcrepcre-devel
Nginx在Linux環(huán)境下可以通過(guò)編譯源碼的方式來(lái)安裝,最簡(jiǎn)單的安裝命令如下:
tar zxvf nginx-版本號(hào).tar.gz
cd nginx-版本號(hào)
./configure
make
make install
按照以上命令,Nginx將被默認(rèn)安裝到/usr/local/nginx目錄下。您可以通過(guò)/configure--help命令查看Nginx可選擇的編譯選項(xiàng)。
編譯選項(xiàng)舉例如下:
--prefix=<path>
--sbin-path=<path>
--conf-path=<path>
--pid-path=<path>
等等
Nginx的啟動(dòng),停止,平滑重啟
啟動(dòng)Nginx
啟動(dòng)Nginx,可以執(zhí)行以下命令。假設(shè)Nginx安裝在/usr/locaUnginx/目錄中,那么啟動(dòng)Nginx的命令就是:
Nginx的停止
Nginx的停止方法有很多種,一般通過(guò)發(fā)送系統(tǒng)信號(hào)給Nginx主進(jìn)程的方式來(lái)停止Nginx。
我們可以通過(guò)ps命令來(lái)查找Nginx的主進(jìn)程號(hào):
ps –ef | grep nginx
從圖中可以看到,1個(gè)Nginx進(jìn)程的備注信息為“master process”,表示它為主進(jìn)程,另外的1個(gè)進(jìn)程備注信息為“workerprocess”,表示它們?yōu)樽舆M(jìn)程。32244為主進(jìn)程號(hào)。
如果在nginx.conf配置文件中指定了pid文件存放的路徑(例如:/usr/local/webserver/nginx/logs/nginx.pid;),該文件中存放的就是Nginx當(dāng)前的主進(jìn)程號(hào)。如果沒(méi)有指定pid文件存放的路徑,nginx.pid文件默認(rèn)存放在Nginx安裝目錄的logs目錄下。所以,我們也可以直接通過(guò)以下命令來(lái)完成,省下尋找Nginx主進(jìn)程號(hào)的步驟:
kill -信號(hào)類型
(1)從容停止Nginx。
kill - QUIT Nginx主進(jìn)程號(hào)
(2)快速停止Nginx
kill - TERM Nginx主進(jìn)程號(hào)或者
kill - INTNginx主進(jìn)程號(hào)
(3)強(qiáng)制停止所有Nginx進(jìn)程
pkill –9 nginx
Nginx的平滑重啟
如果改變了Nginx的配置文件(nginxconf),想重啟Nginx,同樣可以通過(guò)發(fā)送系統(tǒng)信號(hào)給Nginx主進(jìn)程的方式來(lái)進(jìn)行。不過(guò),重啟之前,要確認(rèn)Nginx配置文件(nginx.conf)的語(yǔ)法是正確的,否則Nginx將不會(huì)加載新的配置文件。通過(guò)以下命令可以判斷Nginx配置文件是否正確:
/usr/local/webserver/nginx/conf/nginx.conf
如果配置文件不正確,屏幕將會(huì)提示配置文件的第幾行出錯(cuò):
[emerg]:unknown directive”abc“in/usr/local/webserver/nginx/conf/nginx.conf:55
configuration file /usr/local/webserver/nginx/conf/nginx.conf testfailed
如果配置文件正確,屏幕將提示以下兩行信息:
the configuration file/usr/local/webserver/nginx/conf/nginx.conf
configuration file/usr/local/webserver/nginx/conf/nginx.conf
這時(shí)候,就可以平滑重啟Nginx了。
kill -HUP Nginx主進(jìn)程號(hào)
kill一HUP
當(dāng)Nginx接收到HUP信號(hào)時(shí),它會(huì)嘗試先解析配置文件,如果成功,就應(yīng)用新的配置文件(例如,重新打開(kāi)日志文件或監(jiān)聽(tīng)的套接字)。之后,Nginx運(yùn)行新的工作進(jìn)程并從容關(guān)閉舊的工作進(jìn)程。通知工作進(jìn)程關(guān)閉監(jiān)聽(tīng)套接字,但是繼續(xù)為當(dāng)前連接的客戶提供服務(wù)。所有客戶端的服務(wù)完成后,舊的工作進(jìn)程被關(guān)閉。如果新的配置文件應(yīng)用失敗,Nginx將繼續(xù)使用舊的配置進(jìn)行工作。
Nginx支持以下幾種信號(hào)類型:
·TERM,INT快速關(guān)閉;
·QUIT從容關(guān)閉;
·HUP平滑重啟,重新加載配置文件;
·USR1重新打開(kāi)日志文件,在切割日志時(shí)用途較大;
·USR2平滑升級(jí)可執(zhí)行程序;
·WINCH從容關(guān)閉工作進(jìn)程。
Nginx的平滑升級(jí)
當(dāng)需要將正在運(yùn)行中的Nginx升級(jí)、添加,刪除服務(wù)器模塊時(shí),可以在不中斷服務(wù)的情況下,使用新版本、重編譯的Nginx可執(zhí)行程序替換舊版本的可執(zhí)行程序。步驟如下:
(1)使用新的可執(zhí)行程序替換舊的可執(zhí)行程序,對(duì)于編譯安裝的Nginx,可以將新版本編譯安裝到舊版本的Nginx安裝路徑中。替換之前,您最好備份一下舊的可執(zhí)行文件。
(2)發(fā)送以下指令:
kill –USR2 舊版本的nginx主進(jìn)程號(hào)
(3)舊版本Nginx的主進(jìn)程將重命名它的.pid文件為.oldbin(例如:/usr/local/webserver/nginx/logs/nginx.pid.oldbin),然后執(zhí)行新版本的Nginx可執(zhí)行程序,依次啟動(dòng)新的主進(jìn)程和新的工作進(jìn)程。
(4)此時(shí),新、舊版本的Nginx實(shí)例會(huì)同時(shí)運(yùn)行,共同處理輸入的請(qǐng)求。要逐步停止舊版本的Nginx實(shí)例,你必須發(fā)送WINCH信號(hào)給舊的主進(jìn)程,然后,它的工作進(jìn)程就將開(kāi)始從容關(guān)閉:
kill -WINCH 舊版本的Nginx主進(jìn)程號(hào)
(5) 一段時(shí)間后,舊的工作進(jìn)程(workerprocess)處理了所有已連接的請(qǐng)求后退出,僅由新的工作進(jìn)程來(lái)處理輸入的請(qǐng)求了:
(6)這時(shí)候,我們可以決定是使用新版本,還是恢復(fù)到舊版本:
kill–HUP
kill –QUIT
kill –TERM
kill
新的主進(jìn)程退出后,舊的主進(jìn)程會(huì)移除.oldbin前綴,恢復(fù)為它的.pid文件,這樣,一切就都恢復(fù)到升級(jí)之前了。如果嘗試升級(jí)成功,而你也希望保留新的服務(wù)器時(shí),可發(fā)送QUIT信號(hào)給舊的主進(jìn)程,使其退出而只留下新的服務(wù)器運(yùn)行:
聯(lián)系客服