Nginx 編譯安裝
Nginx (“engine x”) 是一個(gè)高性能的 HTTP 和 反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服
1、Apache服務(wù)器和nginx的優(yōu)缺點(diǎn):
Apache具有很優(yōu)秀的性能,而且通過模塊可以提供各種豐富的功能。
1)首先Apache對(duì)客戶端的響應(yīng)是支持并發(fā)的 ,運(yùn)行httpd這個(gè)daemon進(jìn)程之后,它會(huì)同時(shí)產(chǎn)生多個(gè)子進(jìn)程/線程,每個(gè)子進(jìn)程/線程分別對(duì)客戶端的請(qǐng)求進(jìn)行響應(yīng);
Apache兩種工作模式:是prefork模式與worker模式
prefork每個(gè)子進(jìn)程只有一個(gè)線程,效率高但消耗內(nèi)存大。worker模式每個(gè)子進(jìn)程有多個(gè)線程,內(nèi)存消耗低,但一個(gè)線程崩潰會(huì)牽連其它同子進(jìn)程的線程。
2)另外,Apache可以提供靜態(tài)和動(dòng)態(tài)的服務(wù) ,例如對(duì)于PHP的解析不是通過性能較差的CGI實(shí)現(xiàn)的而是通過支持PHP的模塊來實(shí)現(xiàn)的(通常為mod_php5,或者叫做apxs2)。
3)缺點(diǎn):
因此通常稱為Apache的這種Server為process-based server ,也就是基于多進(jìn)程的HTTPServer,因?yàn)樗枰獙?duì)每個(gè)用戶請(qǐng)求創(chuàng)建一個(gè)子進(jìn)程/線程進(jìn)行響應(yīng);
這樣的缺點(diǎn)是,如果并發(fā)的請(qǐng)求非常多(這在大型門戶網(wǎng)站是很常見的)就會(huì)需要非常多的線程,從而占用極多的系統(tǒng)資源CPU和內(nèi)存。因此對(duì)于并發(fā)處理不是Apache的強(qiáng)項(xiàng)。
4)解決方法:
目前來說出現(xiàn)了另一種WebServer,在并發(fā)方面表現(xiàn)更加優(yōu)越,叫做異步服務(wù)器。最有名的為Nginx和Lighttpd。所謂的異步服務(wù)器是事件驅(qū)動(dòng)程序模式的event-driven,除了用戶的并發(fā)請(qǐng)求通常只需要一個(gè)單一的或者幾個(gè)線程。因此占用系統(tǒng)資源就非常少。這幾種又被稱為lightweight web server。舉例,對(duì)于10,000的并發(fā)連接請(qǐng)求,nginx可能僅僅使用幾M的內(nèi)存;而Apache可能需要使用幾百M的內(nèi)存資源。
nginx和Apache類似都通過各種模塊可以對(duì)服務(wù)器的功能進(jìn)行豐富的擴(kuò)展,同樣都是通過conf配置文件對(duì)各種選項(xiàng)進(jìn)行配置。對(duì)于PHP等,nginx沒有內(nèi)置的模塊來對(duì)PHP進(jìn)行支持,而是通過FastCGI來支持的。
nginx則沒有自己提供處理PHP的功能,需要通過第三方的模塊來提供對(duì)PHP進(jìn)行FastCGI方式的集成。
Nginx專為性能優(yōu)化而開發(fā),其最知名的優(yōu)點(diǎn)是它的穩(wěn)定性和低系統(tǒng)資源消耗,以及對(duì)HTTP并發(fā)連接的高處理能力(單臺(tái)物理服務(wù)器可支持30000~50000個(gè)并發(fā)請(qǐng)求)。正因?yàn)槿绱?,大量提供社交網(wǎng)站、新聞資訊、電子商務(wù)以及虛擬主機(jī)等服務(wù)的企業(yè)紛紛選擇Ngnix來提供WEB服務(wù)。
2、Nginx的安裝及運(yùn)行控制:
目前Nginx的最新穩(wěn)定版本為1.0.8,開發(fā)版本為1.1.6,其安裝文件可以從官方網(wǎng)站http://www.nginx.org下載,下面以穩(wěn)定版為例,介紹nginx的安裝和運(yùn)行控制。
編譯安裝Nginx
1)安裝支持軟件:
Nginx的配置及運(yùn)行需要pcre、zlib等軟件包的支持,因此應(yīng)預(yù)先安裝這些軟件的開發(fā)包(devel),以便提供相應(yīng)的庫和頭文件,確保Nginx的安裝順利完成。

2)創(chuàng)建運(yùn)行用戶、組:
Nginx服務(wù)程序默認(rèn)以nobody身份運(yùn)行,為其創(chuàng)建專門的用戶賬號(hào),以便更準(zhǔn)確地控制其訪問權(quán)限,增加靈活性、降低安全風(fēng)險(xiǎn)。如:創(chuàng)建一個(gè)名為nginx的用戶,不建立宿主目錄,也禁止登錄到shell環(huán)境。

3)編譯安裝nginx:
釋放nginx源碼包

編譯前配置:

注:配置前可以參考:./configure --help給出說明
--prefix:設(shè)定Nginx的安裝目錄
--user和—group:指定Nginx運(yùn)行用戶和組
--with-http_stub_status_module:啟用http_stub_status_module模塊以支持狀態(tài)統(tǒng)計(jì)
編譯:

安裝:

至此Nginx安裝完成,為了使Nginx服務(wù)器的運(yùn)行更加方便,可以為主程序nginx創(chuàng)建鏈接文件,以便管理員直接執(zhí)行nginx命令就可以調(diào)用Nginx的主程序。

Nginx的運(yùn)行控制:
與apache的主程序httpd類似,Nginx的主程序也提供了”-t”選項(xiàng)用來對(duì)配置文件進(jìn)行檢查,以便找出不當(dāng)或錯(cuò)誤的配置。配置文件nginx.conf默認(rèn)位于安裝目錄下的conf/子目錄中。若要檢查位于其他位置的配置文件,可使用”-c”選項(xiàng)來指定路徑。

啟動(dòng)、停止Nginx:
直接運(yùn)行nginx即可啟動(dòng)Nginx服務(wù)器,這種方式將使用默認(rèn)的配置文件,若要改用其他配置文件,需添加”-c 配置文件路徑”選項(xiàng)來指定路徑。需要注意的是,若服務(wù)器中已安裝有httpd等其他WEB服務(wù)軟件,應(yīng)采取措施避免部突。

通過檢查 Nginx程序的監(jiān)聽狀態(tài),或者在瀏覽器中訪問此WEB服務(wù)(默認(rèn)頁面將顯示“Welcome to nginx!”),可以確認(rèn)Nginx服務(wù)是否正常運(yùn)行。
或使用elinks瀏覽器(需安裝elinks軟件包。yum -y install elinks)
注意:要在防火墻上允許80端口的通信。
停止Nginx服務(wù):
#Killall -9 nginx
當(dāng)Nginx進(jìn)程運(yùn)行時(shí),PID號(hào)默認(rèn)存放在logs/目錄下的nginx.pid文件中,因此若改用kill命令,也可以根據(jù)nginx.pid文件中的PID號(hào)來進(jìn)行控制。
為了使Nginx服務(wù)的啟動(dòng)、停止、重載等操作更加方便,可以編寫Nginx服務(wù)腳本,并使用chkconfig和service工具來進(jìn)行管理,也更加符合管理習(xí)慣。
腳本內(nèi)容如下:

通過kill或killall命令發(fā)送HUP信號(hào)表示重載配置, 用新的配置開始新的工作進(jìn)程
關(guān)閉舊的工作進(jìn)程。QUIT信號(hào)表示退出進(jìn)程,KILL信號(hào)表示殺死進(jìn)程。通過”-s”選項(xiàng)指定信號(hào)種類。
添加為系統(tǒng)服務(wù)。

這樣一來,就可以通過nginx腳本來啟動(dòng)、停止、重啟、重載Nginx服務(wù)器了。