最近在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工具包。