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

 

 

 

posted on 2012-06-13 12:14  badsun  阅读(4104)  评论(11编辑  收藏  举报