1. 程式人生 > >Ubuntu下利用Mono,Jexus搭建Asp.Net(MVC) Web伺服器

Ubuntu下利用Mono,Jexus搭建Asp.Net(MVC) Web伺服器

  最近在Ubuntu上搭建了Asp.Net的Web伺服器,其中遇到很多問題,整理一下思路,以備後用。

搭建環境以及配套軟體

安裝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工具包。