• 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

  • 相关阅读:
    python安装pip
    MySQL免安装版
    git仓库删除所有提交历史记录,成为一个干净的新仓库
    git地址带上密码,不用每次提交都输入密码
    virtualenv
    mac卸载python
    换源
    屏幕旋转,ViewController触发事件
    ViewController启动加载过程
    使用 symbolicatecrash转化crash日志
  • 原文地址:https://www.cnblogs.com/windvoice/p/2112153.html
Copyright © 2020-2023  润新知