最近在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 /downloadswget 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/monomake 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.0System.Web.Mvc.dll 3.0System.Web.Razor.dll 1.0System.Web.WebPages.dll 2.0System.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 visithttp://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工具包。