Nginx 編譯安裝
Nginx (“engine x”) 是一個高性能的 HTTP 和 反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服
1、Apache服務器和nginx的優缺點:
Apache具有很優秀的性能,而且通過模塊可以提供各種豐富的功能。
1)首先Apache對客戶端的響應是支持并發的 ,運行httpd這個daemon進程之后,它會同時產生多個子進程/線程,每個子進程/線程分別對客戶端的請求進行響應;
Apache兩種工作模式:是prefork模式與worker模式
prefork每個子進程只有一個線程,效率高但消耗內存大。worker模式每個子進程有多個線程,內存消耗低,但一個線程崩潰會牽連其它同子進程的線程。
2)另外,Apache可以提供靜態和動態的服務 ,例如對于PHP的解析不是通過性能較差的CGI實現的而是通過支持PHP的模塊來實現的(通常為mod_php5,或者叫做apxs2)。
3)缺點:
因此通常稱為Apache的這種Server為process-based server ,也就是基于多進程的HTTPServer,因為它需要對每個用戶請求創建一個子進程/線程進行響應;
這樣的缺點是,如果并發的請求非常多(這在大型門戶網站是很常見的)就會需要非常多的線程,從而占用極多的系統資源CPU和內存。因此對于并發處理不是Apache的強項。
4)解決方法:
目前來說出現了另一種WebServer,在并發方面表現更加優越,叫做異步服務器。最有名的為Nginx和Lighttpd。所謂的異步服務器是事件驅動程序模式的event-driven,除了用戶的并發請求通常只需要一個單一的或者幾個線程。因此占用系統資源就非常少。這幾種又被稱為lightweight web server。舉例,對于10,000的并發連接請求,nginx可能僅僅使用幾M的內存;而Apache可能需要使用幾百M的內存資源。
nginx和Apache類似都通過各種模塊可以對服務器的功能進行豐富的擴展,同樣都是通過conf配置文件對各種選項進行配置。對于PHP等,nginx沒有內置的模塊來對PHP進行支持,而是通過FastCGI來支持的。
nginx則沒有自己提供處理PHP的功能,需要通過第三方的模塊來提供對PHP進行FastCGI方式的集成。
Nginx專為性能優化而開發,其最知名的優點是它的穩定性和低系統資源消耗,以及對HTTP并發連接的高處理能力(單臺物理服務器可支持30000~50000個并發請求)。正因為如此,大量提供社交網站、新聞資訊、電子商務以及虛擬主機等服務的企業紛紛選擇Ngnix來提供WEB服務。
2、Nginx的安裝及運行控制:
目前Nginx的最新穩定版本為1.0.8,開發版本為1.1.6,其安裝文件可以從官方網站http://www.nginx.org下載,下面以穩定版為例,介紹nginx的安裝和運行控制。
編譯安裝Nginx
1)安裝支持軟件:
Nginx的配置及運行需要pcre、zlib等軟件包的支持,因此應預先安裝這些軟件的開發包(devel),以便提供相應的庫和頭文件,確保Nginx的安裝順利完成。
2)創建運行用戶、組:
Nginx服務程序默認以nobody身份運行,為其創建專門的用戶賬號,以便更準確地控制其訪問權限,增加靈活性、降低安全風險。如:創建一個名為nginx的用戶,不建立宿主目錄,也禁止登錄到shell環境。
3)編譯安裝nginx:
釋放nginx源碼包
編譯前配置:
注:配置前可以參考:./configure --help給出說明
--prefix:設定Nginx的安裝目錄
--user和—group:指定Nginx運行用戶和組
--with-http_stub_status_module:啟用http_stub_status_module模塊以支持狀態統計
編譯:
安裝:
至此Nginx安裝完成,為了使Nginx服務器的運行更加方便,可以為主程序nginx創建鏈接文件,以便管理員直接執行nginx命令就可以調用Nginx的主程序。
Nginx的運行控制:
與apache的主程序httpd類似,Nginx的主程序也提供了”-t”選項用來對配置文件進行檢查,以便找出不當或錯誤的配置。配置文件nginx.conf默認位于安裝目錄下的conf/子目錄中。若要檢查位于其他位置的配置文件,可使用”-c”選項來指定路徑。
啟動、停止Nginx:
直接運行nginx即可啟動Nginx服務器,這種方式將使用默認的配置文件,若要改用其他配置文件,需添加”-c 配置文件路徑”選項來指定路徑。需要注意的是,若服務器中已安裝有httpd等其他WEB服務軟件,應采取措施避免部突。
通過檢查 Nginx程序的監聽狀態,或者在瀏覽器中訪問此WEB服務(默認頁面將顯示“Welcome to nginx!”),可以確認Nginx服務是否正常運行。
或使用elinks瀏覽器(需安裝elinks軟件包。yum -y install elinks)
注意:要在防火墻上允許80端口的通信。
停止Nginx服務:
#Killall -9 nginx
當Nginx進程運行時,PID號默認存放在logs/目錄下的nginx.pid文件中,因此若改用kill命令,也可以根據nginx.pid文件中的PID號來進行控制。
為了使Nginx服務的啟動、停止、重載等操作更加方便,可以編寫Nginx服務腳本,并使用chkconfig和service工具來進行管理,也更加符合管理習慣。
腳本內容如下:
通過kill或killall命令發送HUP信號表示重載配置, 用新的配置開始新的工作進程
關閉舊的工作進程。QUIT信號表示退出進程,KILL信號表示殺死進程。通過”-s”選項指定信號種類。
添加為系統服務。
這樣一來,就可以通過nginx腳本來啟動、停止、重啟、重載Nginx服務器了。