openSUSE上安装Mono并发布ASP.Net程序

Mono经过这么多年的发展,已经相当成熟并且强大。最新的Mono 2.10已经开始支持ASP.Net MVC 3。 今天试了一下在openSUSE中安装Mono做一下测试。之所以选择openSUSE而没有用UbuntuCentOS等是因为openSUSE和Mono的渊源更深些。整个过程安装得很顺利,花了我下午一个多小时来安装和解决问题。 

1. 环境:

我是在虚拟机中运行openSUSE 11.3的,宿主机是Window 7,使用桥接模式所以可以把openSUSE当成服务器(Web, Database, SVN...)来用。

使用的日本的源,速度还可以。附在这里,给有需要的同学。



 

2. 安装Mono

在Mono的官网上可以查到在openSUSE上安装最新版Mono的方法。使用zypper的确很方便。如果用的是别的Linux发布版,请参照安装指南。

取得root权限后执行下面的操作。

zypper addrepo mono-stable
zypper refresh --repo mono-stable
zypper dist-upgrade --repo mono-stable

安装mod_mono,会一并安装Apache, XSP和Mono.安装完成后可以查看所安装的版本。

zypper install mod_mono

mono -V 

3. 配置Mono

使用Configure Apache Mod_Mono () 来配置Mono确实很方便。主要是配置Server Name和Path to Document Root。配置完成后生成conf文件,把它放置在/etc/apache2/conf.d目录下就可以了.

请确保Apache2服务是开启的(chkconfig --list来查看)。开启可以用如下命令:

service apache2 restart

配置成开机自动启动,则更好:

chkconfig --level 2345 apache2 on 

4. 配置防火墙

这时我们可以写一个最基本的html文件,放在指定的Apache目录(就是上一步配置的Path to Document Root目录)下.

在openSUSE的环境下打下Firefox浏览 ,应该可以呈现出正确的html页面。

但是如果到外面Windows 7的环境下打开, 会显示错误。这是因为openSUSE默认防火墙开启的原因。你到openSUSE下把防火墙关了再试,应该就可以了。当然,更好的做法是开启HTTP SERVER.

运行Yast, 选择Security and Users,打开Firewall设置。在Interfaces里把etho设置成External Zone, 并把External Zone设成Allowed. 然后到Service to Allow里面,把HTTP Server加进去,一般Secure Shell Server也要加进去。

再到Windows 7的环境下去试一下,应该可以打开网页了。 

5. 发布ASP.NET程序

刚刚我们只是测试了最基本的html文件。我们可以测试一下ASP.Net程序。

到Windows 7环境下,编译好web程序并得到发布包。把所有文件复制到openSUSE Apache的目录下去试一下。很遗憾,我遇到了以下的错误:

System.IO.FileLoadException: Could not load file or assembly ‘System.IdentityModel, Version=3.0.0.0 ...

找了资料,说是缺少wcf的组件。通过安装mono-wcf解决。

zypper install mono-wcf

我测试了Framework 2.0和3.x的web程序,都没有任何问题 (可以先用MoMA工具来检查是否有不支持的代码)。只是在测试4.0的程序时,遇到错误说TargetFramework不是可识别的attribute,到web.config中把它删除掉就可以了。

我还试着测试一下Asp.net MVC 3的程序,不过没有成功。这个留等下次来试。 

总的来说,让ASP.Net在Linux上跑起来还能支持到.Net 4.0,已经很不错了。期待Mono的3.0版本。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wywpdy.html