最近在Ubuntu上搭建了Asp.Net的Web服务器,其中遇到很多问题,整理一下思路,以备后用。
搭建环境以及配套软件
Ubuntu: 11.10
Mono:3.0.6 下载地址(http://download.mono-project.com/sources/mono/mono-3.0.6.tar.bz2) 出于稳定性的考虑,建议不要使用比这个版本更高的其他版本。
Jexus:5.0 下载地址(http://www.linuxdot.net/down/jexus-5.0.1.tar.gz)
安装Mono
cd /downloads
wget http://download.mono-project.com/sources/mono/mono-3.0.6.tar.bz2
tar -jxvf mono-3.0.6.tar.bz2
cd mono-3.0.6
./configure --prefix=/usr/local
make
make install
第一步:是进到下载文件的目标文件夹,可以根据自己的习惯选择,这里使用系统的downloads文件夹。
第二步:是使用下载命令下载mono源码,在http://download.mono-project.com/sources/mono/这个目录下有很多版本的mono源码,也可以根据自己的需要下载不同版本的源码进行安装。
第三步:在目标文件夹中解压改文件,不同格式的解压参数不同,tar.bz2格式的文件解压参数为 -jxvf.
第四步:文件解压成功后,进到改目录。
第五步:configure是mono的一个安装配置文件,这里我们主要配置安装路径。在接下来安装的jexus中,需要配置mono的安装路径,而jexus默认的安装路径是 /usr/local/mono,所以建议设置为 /usr/local.
第五步:编译。
第六步:安装。
特别说明:如果系统安装了其他版本的Mono,需要先卸载改版本的Mono,卸载方法是进入到安装目录,然后使用uninstall命令进行卸载。同时可以通过mono -V(注意大小写)查看mono的版本号。
#卸载
cd /usr/local/mono
make uninstall
#查看版本号
mono -V
安装Jexus
#进到下载目录
cd /usr/loacal
#下载文件
wget http://www.linuxdot.net/down/jexus-5.0.1.tar.gz
#解压文件
tar -zxvf jexus-5.0.tar.gz
#进入jexus文件夹
cd jexus
#提权(涉及到jexus的操作都需要使用root权限)
sudo su
#注册
./jws.regsvr
Jexus是一个解压即可使用的程序,所以我们可以在下载的时候选择安装路径,当然也可以下载到专用的下载目录,解压后在mv到需要安装的目录。
涉及到jexus的操作有注册服务(regsvr),启动服务(start),停止服务(stop)以及重启(restart),所有这些操作都需要root权限。
注册服务以后,jexus生成一个默认的站点,使用以下地址检测服务是否启动(http://120.0.0.1/info)
jexus的站点配置文件在安装目录下的 siteconf 文件夹下面,每一个站点对应一个目录文件。系统有一个默认的 default 配置,在这个文件当中我们可以找到并修改站点的根目录、起始地址等配置信息。default 默认的网站根目录在 /var/www/default (注意:jexus不会自动创建default目录,需要手动创建。)
上传MVC网站文件
上传网站文件需要开启ftp服务,这里使用 vsftpd ,详细的使用教程这里不做讲解。
相比普通的webform网站来讲,MVC的网站配置相对较难。主要涉及到一些MVC类库的收集,之所以使用mono 3.0.6以上的版本也是因为较早的版本需要手动添加更多的dll文件,这里我整理了mvc3需要调用到的一些库文件。以下是库文件列表:
System.Web.Helpers.dll 1.0
System.Web.Mvc.dll 3.0
System.Web.Razor.dll 1.0
System.Web.WebPages.dll 2.0
System.Web.WebPages.Razor.dll 1.0
把这些文件放在网站的 bin 目录下,一起上传到网站根目录即可。这里需要注意的一个问题是,MVC3需要System.Web.WebPages.dll2.0以上的版本,而在window下这个dll都是1.0的版本,如果直接从window下拷贝将会发生依赖错误。
接下来的一个重要的步骤就是修改网站配置文件 web.config 。
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
--> <configuration>
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings> <system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<globalization cultrue="zh-CN" uiCultrue="en-US"/> <authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication> <pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages"/>
</namespaces>
</pages>
</system.web> <system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
这里有两个细节要注意 第一个是程序集配置节中的 System.Web.WebPages.dll 的版本号,原网站可能是1.0版本的,这里需要改为2.0.
此外需要添加 <globalization cultrue="zh-CN" uiCultrue="en-US"/> 配置节。
下载工具包
点击下载mvc3工具包。