幾年前就了解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
下載源碼
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
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
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
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 SCRIPT_FILENAME $document_root$fastcgi_script_name;
或直接將起添加到nginx的fastcgi_params文件。
d.重啟nginx,測試
感興趣的朋友趕緊試一試吧。如不明白,歡迎加我QQ:188867734交流
