mono平台及部署asp.net經驗之談

來源:互聯網
上載者:User

     幾年前就瞭解MONO平台了,但一直因為對linux不懂,所以沒敢碰。在最近一個月終於嘗試著使用mono了。花費將近1個月的時間去部署,吃盡無數苦頭,最終還是成功了。在此整理,給朋友們做參考,少吃苦頭。

 一:系統選擇

我選擇的是centos 6.2系統,如果使用ubuntu或opensusu的話,可能會不會這麼麻煩,mono和opensusu是同家公司的,有直接的安裝包可用。

 二:mono版本選擇

筆者採用的是mono2.6.7 ,開始用了2.8,2.10但結果均產生各種問題,當然是因為代碼

三:編譯代碼

mono是.net的跨平台實現,可不修改代碼或修改部分代碼來完成平台的遷移。不修改代碼的情況是代碼比較簡單,僅作為測試或示範使用。一般都是需要重新編譯的。您選擇mono2.6.7,那麼你代碼有擴充方法將編譯不通過,同時一些引用也會導致在mono下編譯不通過!

四:IDE選擇

當然首選是monodevelop,也可以使用 eclipse。在centos下不要嘗試去安裝monodevelop,筆者嘗試了7次都未成功,最後選擇了在ubuntu上調試編譯代碼,ubuntu 上的mono版本是2.6.7,所以我在伺服器上安裝的也是mono2.6.7。這樣可以保證只要測試編譯通過,無論是什麼linux系統,都能正常運行。

五:比較

在這裡,筆者提供2個網站供朋友們測試一下  www.xmwebs.com (windows iis) 和 www.ssite.info (centos mono)

可以通過輸入一個不存在的地址,在黃頁中查看編譯器的類型,如:

 

 

筆者未進行專門的測試,穩定性不考慮的情況下,我是非常希望運行在mono下的,經常看到國外的文章指出,mono效能可能會好於windows上的.net實現

 

六:選擇資料庫

mono支援除access以外的資料庫,比如mysql,mssql,oracle,posgresql,sqlite等,建議使用mysql

 

七:對asp.net mvc 的支援怎麼樣?

還算比較完美,上面給出的示範站也是用mvc開發的,最大的問題是路由上,需要花比較多的時間去修複

 

八:部署

使用nginx+xsp部署,當然也可以用apache+mod_mono 。

安裝所需環境在這裡僅做簡單說明,網上有很多資料。也可以點擊這裡查看.

 

 

首先安裝libgdiplus

下載源碼

tar jxvf libgdiplus-2.8.tar.bz2

cd libgdiplus-2.8

yum install glib2-devel  libpng-devel  libX11-devel  cairo-devel

yum install  libjpeg-devel (支援JPG)     giflib-devel(支援GIF)   其他格式,可以安裝相應組件

然後我們下載mono原始碼(在這裡我們用2.8)

a.安裝mono

tar jxvf mono-2.6.7.tar.bz2
cd mono-2.6.7
./configure –prefix=/opt/mono
make && make install 

安裝完成後/opt/mono/bin/mono -V 測試是否安裝成功,也可以使用下面的命令加到環境變數。

export   PATH=/opt/mono/bin:$PATH 
export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig:$PKG_CONFIG_PATH

執行/opt/mono/bin/mono-test-install 測試安裝

如果遇到libgdiplus找不到的問題,需要將路徑加入到/etc/ld.so.conf然後再ldconfig載入。

b.安裝xsp

tar jxvf  xsp-2.6.7.tar.bz2
cd xsp-2.6.7.tar.bz2 
./configure –prefix=/opt/mono
make && make install

至此MONO已經安裝完成,然後我們可以使用以下命令來開啟一個fastcgi進程

fastcgi-mono-server4   /applications/:/var/www    /socket=tcp:127.0.0.1:8080

注:fastcgi-mono-server4表示使用asp.net 4.0,對應有fastcgi-mono-server2和fastcgi-mono-server

 

c.配置nginx

server {
         listen                  80;
         server_name             www.ops.cc;
         access_log              /var/log/xsp.log;
 
         location / { 
                 include         fastcgi_params; 
                 root            /var/www/;
                 index           index.html Default.aspx;
                 fastcgi_pass    127.0.0.1:8080;
         }
 }

ASP.NET和ASP.NET MVC Web應用程式通過FastCGI協議Nginx的運行,需要添加:

fastcgi_param  PATH_INFO          "";
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

或直接將起添加到nginx的fastcgi_params檔案。

 

d.重啟nginx,測試

 

 

 

 

 感興趣的朋友趕緊試一試吧。如不明白,歡迎加我QQ:188867734交流

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.