[转载]Ubuntu安装Mono2.10并使用Apache承载Asp.Net mvc3应用程序

[转载]Ubuntu安装Mono2.10并使用Apache承载Asp.Net mvc3应用程序 – 傲雪啸风 – 博客园.

ASP.NET长久以来令大规模部署所诟病的便是其成本的高企,mono的出现为.net应用程序打开了通往linux的一扇大门,使得.Net应用程序 低成本部署成为可能。最近为了尝试将ASP.NET Mvc3部署在Linux下,查阅了很多资料,但发现大多数都是在OpenSUSE的,介绍如何Ubuntu下使用Apache2的文章比较少,但也终于 找到了一些比较有价值的并最终安装部署成功,把安装过程总结出来,供广大.Neter参考。

0. 在安装之前

Ubuntu10.04为全新安装,并在安装的过程中选择了ssh server, LAMP server, samba三个角色

1. 安装依赖程序

apt-get install build-essential bison gettext pkg-config autoconf libtool automake

2. 安装Mono2.10

wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.10.tar.bz2
tar -xjvf mono-2.10.tar.bz2
cd mono-2.10
./autogen.sh
make
sudo make install
cd ..

记得make install需要sudo,否则会提示无权限

参考资料[1]中的./autogen.sh一行有路径参数,但发现实际输入路径参数会提示找不到该参数,故取消,安装后路径在/usr/local/bin下

3. 安装XSP服务器

wget http://ftp.novell.com/pub/mono/sources/xsp/xsp-2.10.tar.bz2
tar -xjvf xsp-2.10.tar.bz2
cd xsp-2.10
./configure
make
sudo make install
cd ..

同第2步,参考资料[1]中的./configure一行有路径参数,但发现实际输入路径参数会提示找不到该参数

4. 安装apache-dev

apt-get install apache2-dev

5. 修整相关文件

sudo mv /etc/apache2/mod_mono.conf /etc/apache2/mods-available/
sudo a2enmod mod_mono
sudo service apache2 restart

默认mod_mono安装完成后mod_mono.conf会直接出现在/etc/apache2下,ubuntu下的apache2采取分离-包含的配置文件策略,需将mod_mono.conf复制至mods-available并启用mod_mono

6. 修改站点配置文件


ServerAdmin webmaster@localhost
ServerName mono.me.com
DocumentRoot /var/www/mono

MonoServerPath mono.me.com "/usr/local/bin/mod-mono-server4"
MonoDebug mono.me.com true
MonoSetEnv mono.me.com MONO_IOMAP=all
MonoApplications mono.me.com "/:/var/www/mono"

Allow from all
Order allow,deny
MonoSetServerAlias mono.me.com
SetHandler mono
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-zip dontvary


AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript

ErrorLog /var/log/apache2/error-mono.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog /var/log/apache2/access-mono.log combined

除了手动更改, 该配置文件还可使用Mono Config Tool自动生成.

需要注意”MonoServerPath mono.me.com “/usr/local/bin/mod-mono-server4″一行,mono2.10采取上述默认过程安装完成后并不在很多文章中提到的/usr/bin下,而在/usr/local/bin下

还有DocumentRoot /var/www/mono 此目录需要有执行权限,否则apache会报403错误

7. 部署站点

新建一个Asp.Net Mvc3应用程序,将该Mvc项目生成部署包,通过samba复制至第6步中设置的站点根目录下,并重启apache2服务,在客户机设定好Host并在 浏览器中输入设定的域名,如果一切正常,恭喜你可以看到一个经典的Asp.Net错误页,将customerError设为Off,将会看到,是因为缺少 一个System.Web.Helpers的dll。此时,回到Mvc项目中,你需要

(1). 添加如下引用

System.Web.Razor.dll
System.Web.WebPages.Razor.dll
System.Web.WebPages.Deployment.dll

(2). 将如下引用的dll设定为复制到本地

System.Web.Helpers.dll
System.Web.Mvc.dll
System.Web.WebPages.dll
System.Web.Razor.dll
System.Web.WebPages.Razor.dll
System.Web.WebPages.Deployment.dll

(3). 重新生成部署包,覆盖服务器上的bin目录即可。

OK,此时,你已经摆脱了昂贵的Window Server,当然,使用盗版的同学可以偷偷走开,如果你还想摆脱昂贵的SQL Server,那么你可以使用MySQL、PostgreSQL、Mongodb,如果你不需要多么强大的性能,那么sqlite也是一个不错的选择。

参考资料:

[1] 《How to get ASP.NET MVC 2 working with Mono in 10 Steps》buddylindsey

[2] 《ASP.NET MVC 3 with Razor on Mono 2.10.1》Robert Jordan

[3]  Configure Apache Mod_Mono

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏