Mono 之 Nginx


   在Linux上部署網站需要先安裝Web服務器端軟件,IIS只能在windows上使用,相對的我們可以選擇著名的apache、Ngnix等。本文將簡單Nginx的安裝、配置以及利用其運行一個簡單的Asp.net 網站。

Nginx

    Nginx (Engine X)是一個高性能的Web服務器,由於其穩定、功能豐富、低資源消耗等特點,已經有很多網站利用它進行部署(國內不少大公司開始利用nginx 取代 apache,畢竟LAMP 太教條化了)。

Nginx安裝

  本文將從源碼開始安裝nginx 目前最新版為 1.2.0,所有的安裝過程都是在Ubuntu操作系統下進行的。

首先下載源碼:

 wget http://nginx.org/download/nginx-1.2.0.tar.gz

然后解壓

tar -zxv -f nginx-1.2.0.tar.gz

進入解壓的目錄后接着執行

./configure

碰到了 PCRE Library 沒有安裝的問題

利用  apt-get install libpcre3 libpcre3-dev 命令安裝PCRE庫

再次運行./configure  發現缺乏Http gzip模塊

執行 :apt-get install libssl-dev 安裝對應的模塊。

再次運行./configure 

 

接着依次運行

make

make install

這樣就完成了Nginx的安裝,默認安裝在/usr/local/nginx下。

使用以下命令啟動Nginx

/usr/local/nginx/sbin/nginx

 

測試Nginx 

Nginx默認以Deamon進程啟動,輸入下列命令測試是否啟動成功:

curl -i http://localhost/

成功安裝后會得到以下結果:

如果出現以上信息,恭喜你Nginx 安裝成功。

如果想停止運行Nginx可以利用以下命令:

/usr/local/nginx/sbin/nginx -s stop

配置Nginx

    nginx的配置文件是純文本文件,主配置文件默認放在安裝目錄下的conf文件夾中。conf下有很多的配置文件,其中nginx.conf為主配置文件。整個配置文件以block的形式組織,每一個"{}"及其內容就代表一個block.block可以分為幾個層次,整個配置文件中main指令位於最高層,在main層下面可以有Events、HTTP等層級,而在HTTP層中又包含有server層,即server block,server block中又可分為location層,並且一個server block中可以包含多個location block.

 

 打開配置文件在 Http 配置塊內添加:

include /usr/local/nginx/conf/monotest.conf;

說明:這里利用 include 命令 將虛擬主機Server 節的配置移動到單獨的文件中方便管理,空格后面緊跟的是文件路徑。(不要忘記分號“;”).

Monotest .conf 的配置如下:

server{
    listen 8001;
    server_name localhost;

    location   / {
    root /home/ubuntu/www/monotest/;
    index default.aspx Default.aspx;
    fastcgi_index Default.aspx;
    fastcgi_pass 127.0.0.1:9001;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /usr/local/nginx/conf/fastcgi_params;
                    }

}

server 表示我們配置的虛擬主機,listen 指定服務監聽的端口(通常為80 ),這里我們指定為8001;server_name用來指定IP地址或者域名,多個域名之間用空格分開;

location 可以用於匹配URL,其語法為location [=|~|~*|^~] /uri/ { … }

  • location  / { 匹配任何查詢,因為所有請求都以 / 開頭。但是正則表達式規則將被優先和查詢匹配。
  • location =/ {} 僅僅匹配/
  • location ~* \.(gif|jpg|jpeg)$ {} 不區分大小寫匹配任何以gif,jpg,jpeg結尾的文件

root 表示站點的路徑;index  表示配置的默認頁。

fastcgi_pass  ,表示FastCgi服務啟動時所采用的地址

  Nginx並不直接支持外部程序到調用或解析(IIS 則可以直接調用IASPI進行擴展),需要通過FastCGI接口來調用。在Linux下FastCGI利用的是Socket,所以我們需要指定地址和綁定端口。

啟動站點

  啟動站點需要分別啟動nginx 和 fastcgi服務。

首先啟動nginx 輸入文章開始的 /usr/local/nginx/sbin/nginx 命令如果沒有其他提示表示運行成功(Linux的哲學啊!),接着啟動fastCgi 

su nohup fastcgi-mono-server4 /applications=/:/home/ubuntu/www/monotest/    /socket=tcp:127.0.0.1:9001 &

nohup ....  &  表示讓程序在后台運行。

fastcgi-mono-server4  針對的是 mono/.net 4.0   fastcgi-mono-server2 命令針對的是 mono/.net2.0 版本。

/application 參數用於指定虛擬路徑和物理路徑見的映射,"/: " 表示映射到根路徑,可參考:http://www.mono-project.com/FastCGI

/socket 指定地址和端口。

命令成功運行后會提示:

nohup: 忽略輸入並把輸出追加到"nohup.out"

新建簡單網站

    打開Monodevelop新建一個簡單的asp.net 網站,在項目模板張選擇“C#”-》“ASP.NET”-》“Web application”。

將項目名稱命名為“monotest”.

   網站只是用於測試nginx的配置,無需做太多的設計,使用項目模板的默認生成即可。

  右擊項目,選擇命令“工具”-》“Deloy to web”:

 點擊“Edit targets” 按鈕,然后在彈出的“工程選項”窗口左欄 找到 “部署”-》“Web deloyment target”

 

 點擊 “Add” 在彈出的窗口中填寫好要保存的目標路徑即可。最后將發布好的網站拷貝到上面server虛擬主機配置中指定的 路徑中。

運行效果

 

 

后記:經過一番折騰總算是成功運行,目前還不知道性能如何,文章中只是點到了一部分和Mono相關的內容,Nginx、FastCGi 的很多配置也沒有說明。

nginx依賴的庫

1. gzip module requires zlib library 
2. rewrite module requires pcre library 
3. ssl support requires openssl library

 

參考鏈接

http://wiki.nginx.org/Chs

http://kb.cnblogs.com/page/98352/

http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html

http://blog.sina.com.cn/s/articlelist_1834459124_0_1.html

http://book.51cto.com/art/201202/314644.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM