nginx支持asp與php

經過兩天的實驗,終於讓nginx同時支持asp.net與php了。下面就把具體的配置過程記錄如下。

注意:本次實驗OS:centos6 64bit。

儘管網絡上有很多windows下nginx與asp.net集成的資料,但是windows環境下一直未測試成功。以下的實驗全部是在linux環境下進行的。nginx已經安裝成功,並運行如下:

clip_p_w_picpath001

在此我們講解的nginx與asp.net集成不是通過nginx的反向代理功能,也不是使用windows提供的IIS,而是通過fastcgi_pass來處理asp.net的,然後把處理後的結果交給nginx。說白了就是把nginx作爲web服務器。

Nginx與asp.net集成需要分以下幾個步驟:

1、mono安裝

2、xsp安裝

3、nginx與asp.net集成

4、測試集成效果

一、mono安裝

要想使linux支持asp.net,我們必須要安裝mono和xsp這兩個軟件包。

mono軟件包是Novell公司開發的跨平臺.NET運行環境。

目前mono最新版本的軟件包爲mono-3.10.0.tar.bz2,我們可以通過這個網址http://download.mono-project.com/sources/mono/。下載並上傳到centos服務器上。如下:

scp mono-3.10.0.tar.bz2 [email protected]:/root

clip_p_w_picpath002

除了mono-3.10.0.tar.bz2這個軟件包外,我們還需要安裝xsp這個軟件。

xsp是小型的.Net Web服務器,可以單獨作爲Web服務器,其中的fastcgi-mono-server2/4也可作爲nginx的fastcgi方式運行。

目前xsp軟件包最新版本爲xsp-2.10.2.tar.bz2,我們可以通過這個網址http://download.mono-project.com/sources/xsp/。下載並上傳到centos服務器上。如下:

scp xsp-2.10.2.tar.bz2 [email protected]:/root

clip_p_w_picpath003

我們先來解壓並安裝mono,mono軟件包比較大,有70M左右解壓速度比較慢。如下:

tar -xvf mono-3.10.0.tar.bz2

clip_p_w_picpath004

clip_p_w_picpath005

解壓完畢後,進入mono軟件包的解壓目錄,如下:

clip_p_w_picpath006

clip_p_w_picpath005[1]

在安裝mono之前我們需要安裝相關的軟件包,如下:

yum install gcc gcc-c++ glibc glibc-devel glib

clip_p_w_picpath007

clip_p_w_picpath008

現在開始配置mono,如下:

./configure

clip_p_w_picpath009

clip_p_w_picpath010

通過上圖,我們也可以看到目前mono已經可以支持.net2.0到.net4.5。

配置完畢後,現在開始make編譯mono,如下:

clip_p_w_picpath011

mono的make編譯過程很慢,需要耐心等待。在此過程中,我們可以看到有很多的已lo結尾的文件。這些文件就是使用libtool編譯出的目標文件。

clip_p_w_picpath012

clip_p_w_picpath013

Make編譯完畢後,我們就開始正式安裝mono,如下:

make install

clip_p_w_picpath014

在安裝過程中,如果你仔細觀察的話,會看到mono默認安裝到/usr/local/lib/mono目錄下。而且根據Linux習慣默認的./configure的軟件一般是在/user/local下。因爲是庫,所以文件是在/user/local/lib下。

當然我們也可在編譯時,通過./configure –help命令查看。如下:

clip_p_w_picpath015

clip_p_w_picpath016

通過上圖我們可以看出Linux的默認安裝位置,確實和我們上邊提到的是一樣的。

以下這張圖是mono安裝完畢的截圖:

clip_p_w_picpath017

安裝完畢後,我們根據安裝時提供的信息,來查看下mono的安裝位置。如下:

clip_p_w_picpath018

clip_p_w_picpath019

通過上圖可以看到,mono確實安裝到了/usr/local/lib目錄下。

現在我們來通過mono –V命令查看mono是否安裝成功。如下:

mono –V

clip_p_w_picpath020

顯示上圖的信息,說明mono已經安裝成功。

注意:mono命令位於/usr/local/bin/mono路徑下,如下:

clip_p_w_picpath021

同時現在系統的環境變量中,已經存在/usr/local/bin,這個路徑。如下:

echo $PATH

clip_p_w_picpath022

二、xsp安裝

mono安裝完畢後,我們還需要安裝XSP這個小型的.NET web服務器。解壓並安裝xsp,如下:

tar -xvf xsp-2.10.2.tar.bz2

clip_p_w_picpath023

配置xsp,如下:

./configure

clip_p_w_picpath024

但是你會發現系統提示錯誤如下:

clip_p_w_picpath025

爲什麼會提示出錯呢?

因爲C#程序執行時必須需要動態鏈接庫,故要添加在環境變量。而且有的鏈接庫mono的編譯器需要用,其內部使用的是pkgconfig工具,故要配置PKG_CONFIG_PATH環境變量。pkgconfig工具位於/usr/local/lib/pkgconfig這個路徑下。如下:

clip_p_w_picpath026

我們現在需要做的就是配置pkgconfig工具的路徑使用export命令,如下:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

clip_p_w_picpath027

Pkgconfig工具的路徑設置完畢後,我們再次配置xsp,如下:

clip_p_w_picpath028

通過上圖可以看到,現在xsp就沒有報錯了。

xsp配置完畢後,我們現在來通過make編譯該軟件,如下:

make

clip_p_w_picpath029

xsp編譯完畢後,我們現在來正式安裝xsp,如下:

make install

clip_p_w_picpath030

xsp安裝完畢後,我們就可以查看fastcgi-mono-server2/4這個程序。如下:

clip_p_w_picpath031

通過上圖,我們可以看到fastcgi-mono-server2/4這個命令就位於/usr/local/bin下。

注意這個命令非常重要,我們在啓動xsp這個.Net web服務器時,就是通過該命令完成的。

三、nginx與asp.net集成

以上就是mono與xsp的安裝,下面開始與nginx進行集成。asp.net與nginx集成,我們是通過nginx的虛擬主機來實現的。

修改nginx的配置文件nginx.conf,在http標籤中添加如下命令:

server {

listen 80;

server_name b.ilanni.com;

charset utf-8;

location / {

root /ilanni/b.ilanni.com;

index index.aspx index.html index.htm;

fastcgi_pass 127.0.0.1:9001;

include fastcgi_params;

}

}

注意我們在前文中已經介紹過nginx與asp.net集成原理。Nginx通過fastcgi_pass來處理asp.net的請求,然後把處理後的結果交給nginx。而fastcgi_pass是代理xsp web服務器的。

同時我們還要注意此時fastcgi_pass代理的xsp端口是9001,該端口可以任意定義,只要不要和系統中正在使用的端口衝突即可。

clip_p_w_picpath032

這個文件修改完畢後,我們還需要修改fastcgi_params這個文件。

我們只需要在該文件的最後邊,添加一下兩行代碼即可。如下:

fastcgi_param PATH_INFO "";

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

clip_p_w_picpath033

以上兩個文件修改文件後,我們現在來啓動xsp web服務器。使用入選命令:

fastcgi-mono-server2 /applications=/:/ilanni/b.ilanni.com /socket=tcp:127.0.0.1:9001 &

注意該命令中的/ilanni/b.ilanni.com是Nginx虛擬主機的根目錄,127.0.0.1:9001爲xsp使用127.0.0.1:9001這個地址。&表示該命令在後臺運行。

clip_p_w_picpath034

通過上圖我們可以看到xsp服務器已經正常啓動了,現在我們弄一個asp.net的探針來測試下。

clip_p_w_picpath035

現在我們來訪問Nginx的虛擬主機b.ilanni.com,如下:

clip_p_w_picpath036

通過上圖,我們可以很容易的看到。目前asp.net的程序已經可以訪問了。

四、測試集成效果

通過以上的截圖,我們很容易的看到。現在Nginx與asp.net已經完全集成。下面我們來看看php的集成。

其實現在不應該說是Nginx與php集成,因爲Nginx支持php也是通過fastcgi_pass來代理php-fpm,然後把請求的結果發給Nginx。

現在我們再來新建一個Nginx虛擬主機,如下:

clip_p_w_picpath037

訪問虛擬主機a.ilanni.com。如下:

clip_p_w_picpath038

到此爲止,我們可以看到現在Nginx已經完全支持asp.net與php。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章