zoukankan      html  css  js  c++  java
  • 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. 修改站点配置文件

    <VirtualHost *:80>
    	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"
    	<Location "/">
    		Allow from all
    		Order allow,deny
    		MonoSetServerAlias mono.me.com
    		SetHandler mono
    		SetOutputFilter DEFLATE
    		SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-zip dontvary
    	</Location>
    	<IfModule mod_deflate.c>
    		AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
    	</IfModule>
    
    	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
    </VirtualHost>
    

    除了手动更改, 该配置文件还可使用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

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/windvoice/p/2112153.html
Copyright © 2011-2022 走看看