天天看點

使用Nginx從零開始搭建基于LNMP架構的電影系統之一_Linux運維

 按照正常,首先介紹一下Nginx是什麼?雖然51cto上鋪天蓋地的Nginx的技術文章,我們這裡也簡單介紹一下。

Nginx是一個類Apache、IIS的Web伺服器軟體,由俄羅斯的Igor Sysoev開發、在短短數年内市場占有率迅速躍居第三位的輕量級、高性能的HTTP服務軟體。Nginx專為性能優化而開發,其最知名的優點是它的穩定性和低系統資源消耗,以及對HTTP并發連接配接的高處理能力(單台實體伺服器可支援30000~50000個并發請求),正因為如此,大量提供社交網絡、新聞資訊、電子商務以及虛拟主機等服務的企業紛紛選擇Nginx來提供WEB服務,如新浪部落格、網易新聞、新華網RSS、六間房視訊、迅雷安全中心、騰訊3G下載下傳......等站點,都在使用Nginx服務。

Nginx的官方站點:http://sysoev.ru/en/、http://nginx.net

Nginx中文Wiki:http://wiki.codemongers.com/NginxChs

--------------------------------------------------------------------------

上面是對Nginx的一個簡單介紹,今天我要做的是首先使用Nginx、Mysql、PHP在CentOS5.4 X64上搭建LNMP平台,然後在LNMP平台上部署一套PHP視訊點播系統(SKYUC天空網絡電影系統),涉及的主要軟體全部使用源代碼安裝。

這個過程中涉及的軟體下載下傳位址:

Nginx:http://www.nginx.org

Mysql:http://www.mysql.com/downloads/

php:http://www.php.net/downloads.php

SKYUC電影系統:http://www.skyuc.com

從這裡開始,就正式進入安裝篇:

首先編譯安裝Nginx

1.安裝支援軟體。

Nginx的配置及運作需要pcre、zlib等軟體包的支援,是以應預先安裝這些軟體的開發包(devel)以便提供相應的庫和頭檔案,確定Nginx的安裝順利完成。

<a target="_blank" href="http://blog.51cto.com/attachment/201203/230853777.jpg"></a>

2.建立運作使用者、組

<a target="_blank" href="http://blog.51cto.com/attachment/201203/230930568.jpg"></a>

3.編譯安裝Nginx

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231006343.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231108116.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231140556.jpg"></a>

4.為了使Nginx伺服器的運作更加友善,可以為主程式Nginx建立連結檔案,以便管理者直接執行Nginx指令就可以調用Nginx的主程式

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231221417.jpg"></a>

5.檢查配置檔案

與Apache的主程式httpd類似,Nginx的主程式也提供了一個“-t”選項用來對配置檔案進行檢查,以便找出不當或錯誤的配置。配置檔案nginx.conf預設位于安裝目錄下的conf/子目錄中,若要檢查位于其他位置的配置檔案,可使用“-c”選項來指定路徑。

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231309243.jpg"></a>

6.啟動Nginx

直接運作Nginx即可啟動Nginx伺服器,這種方式将使用預設的配置檔案,若要改用其它配置檔案,需添加“-c 配置檔案路徑”選項來指定路徑。這裡需要注意:若伺服器中安裝有httpd等WEB服務軟體,應采取措施(修改端口/停用或解除安裝)避免沖突。

我這裡直接使用Nginx來啟動Nginx服務:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231346645.jpg"></a>

7.檢查Nginx程式的監聽狀态,或者在浏覽器中通路此WEB服務(預設頁面将顯示“Welcom to nginx!”),可以确認Nginx服務是否正常運作。

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231437824.jpg"></a>

這裡我使用Linux的字元終端浏覽器(lynx)來通路網站:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231535896.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231611808.jpg"></a>

8.Nginx的運作控制(重新加載/退出程式)

通過killall指令發送HUP信号表示重載配置,QUIT信号表示退出程序:

還可以使用kill信号來殺死程序:

(下面第一條指令重新加載配置檔案,第二條是退出Nginx程式,注意:關掉後,重新運作nginx開啟程式)

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231733179.jpg"></a>

9.使用Nginx服務腳本

為了使用Nginx服務的啟動、停止、重載等操作更加友善,可以編寫Nginx服務腳本,并使用chkconfig和service工具來進行管理,也更加符合RHEL系統的管理習慣。

下面是腳本内容:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231817975.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/231928773.jpg"></a>

#!/bin/bash

#chkconfig: - 99 20

#description: Nginx Service Control Script

#

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

case "$1" in

  start)

    $PROG

    ;;

  stop)

    kill -s QUIT $(cat $PIDF)

  restart)

    $0 stop

    $0 start

  reload)

    kill -s HUP $(cat $PIDF)

  *)

        echo "Usage: $0 {start|stop|restart|reload}"

        exit 1

esac

exit 0

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232102706.jpg"></a>

這樣依賴,就可以通過Nginx腳本來啟動、停止、重新開機、重載Nginx伺服器了

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232206546.jpg"></a>

10.配置檔案nginx.conf

在Nginx伺服器的主配置檔案nginx.conf中,包括全局配置、I/O事件配置、HTTP配置這三大塊内容,配置語句的格式為“關鍵字  值;”(末尾以分号表示結束),以“#”開始的部分表示注釋。

1)全局配置

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232237248.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232311954.jpg"></a>

上面的配置中,worker_processes表示工作程序的數量。若伺服器有多塊CPU或者使用多核處理器,可以參考CPU核心總數來指定工作程序數,如設為8;如果網站通路量需求并不大,一般設為1就夠用了。其它三項配置均已注釋,例如Nginx的運作使用者實際是編譯時指定的nginx,若編譯時未指定則預設為nobody。

2)I/O事件配置

使用“events { }”界定标記,用指定Nginx程序的I/O響應模型,每個程序連接配接數等設定,對于2.6及以上版本的核心,建議使用epoll模型以提高性能,每個程序的連接配接數應根據實際需要來定,一般在10000一下(預設為1024)

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232423981.jpg"></a>

注:我們來看看工作程序和程序連接配接數的換算關系:

若工作程序數為8,每個程序處理4096個連接配接,則允許Nginx正常提供服務的連接配接數已超過3萬個(4096*8=32768),當然具體還要看伺服器硬體,網絡帶寬等實體條件的性能表現。

3)HTTP配置

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232506724.jpg"></a>

11.Nginx的通路狀态統計

Nginx内置了HTTP_STUB_STSTUS狀态統計子產品,用來回報目前的WEB通路情況,配置編譯參數時可添加--with-http_stub_status_module來啟用此子產品。要使用Nginx的狀态子產品功能,除了啟用内模組化塊以外,還需要修改nginx.conf配置檔案,指定通路位置并打開stub_status配置:

因截圖不友善,這裡用文字描述:在nginx.conf中的HTTP配置的标記“sever { }”内指定通路位置并打開stub_status,方法如下:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232548891.jpg"></a>

儲存配置,用nginx -t 檢查一下配置檔案是否出錯,并重新啟動nginx服務:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232625441.jpg"></a>

在浏覽器中通路Nginx伺服器的/status網站位置,可以看到目前的狀态統計資訊:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232711672.jpg"></a>

Active connections:表示目前的活動連接配接數。

server accepts handled requests:表示已經處理的連接配接資訊,三個數字依次表示已處理的連接配接數(1)、成功的TCP握手次數(1)、已處理的請求數(1)

12.基于域名的虛拟WEB主機

使用Nginx搭建虛拟主機伺服器時,每個虛拟WEB站點擁有獨立的“server { }"配置段,各自監聽的IP位址、端口号可以單獨指定,當然網站名稱也是不同的,這裡我主要以兩個虛拟主機來介紹:www.yye1.com和bbs.yye1.com,關于域名解析問題,我用hosts檔案來完成,具體步驟這裡就不在闡述了。

1)準備網站目錄及測試檔案:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232752492.jpg"></a>

2)調整nginx.conf配置檔案:

配置兩個“server { }”區域,分别對應兩個WEB站點,指定各自的網站名稱、監聽位址、網站根目錄、通路日志等資訊,然後重載配置

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232836187.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/232938382.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/233041957.jpg"></a>

3)檢查nginx.conf配置檔案是否有錯誤,并重新加載一下配置檔案:

<a target="_blank" href="http://blog.51cto.com/attachment/201203/233145530.jpg"></a>

4)通路虛拟WEB主機

在浏覽器中分别通路兩個站點:www.yye1.com和bbs.yye1.com,若能看到各自的測試首頁内容,就表示虛拟WEB主機的配置成功。

<a target="_blank" href="http://blog.51cto.com/attachment/201203/233230871.jpg"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/233326405.jpg"></a>

因為篇幅的關系,這篇文章就寫到這裡,不過這個隻是第一部分,主要介紹了一下Nginx的使用,從下篇文章開始介紹LNMP平台的組合搭建并在LNMP架構上部署電影網站程式,請繼續關注,謝謝。

第二部分連結位址:

(第二部分更新後,我會在這裡粘貼位址的,敬請午飯們等待)

本文轉自 jundong 51CTO部落格,原文連結:http://blog.51cto.com/minitoo/813148,如需轉載請自行聯系原作者