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


     幾年前就了解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交流

 

 

 


免責聲明!

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



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