Ubuntu安裝Mono2.10並使用Apache承載Asp.Net mvc3應用程式

來源:互聯網
上載者:User

      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.bz2tar -xjvf mono-2.10.tar.bz2cd mono-2.10./autogen.shmakesudo make installcd ..

記得make install需要sudo,否則會提示無許可權

參考資料[1]中的./autogen.sh一行有路徑參數,但發現實際輸入路徑參數會提示找不到該參數,故取消,安裝後路徑在/usr/local/bin下

3. 安裝XSP伺服器

wget http://ftp.novell.com/pub/mono/sources/xsp/xsp-2.10.tar.bz2tar -xjvf xsp-2.10.tar.bz2cd xsp-2.10./configuremakesudo make installcd ..

同第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_monosudo service apache2 restart

預設mod_mono安裝完成後mod_mono.conf會直接出現在/etc/apache2下,ubuntu下的apache2採取分離-包含的設定檔策略,需將mod_mono.conf複製至mods-available並啟用mod_mono

6. 修改網站設定檔

<VirtualHost *:80>ServerAdmin webmaster@localhostServerName mono.me.comDocumentRoot /var/www/monoMonoServerPath mono.me.com "/usr/local/bin/mod-mono-server4"MonoDebug mono.me.com trueMonoSetEnv mono.me.com MONO_IOMAP=allMonoApplications mono.me.com "/:/var/www/mono"<Location "/">Allow from allOrder allow,denyMonoSetServerAlias mono.me.comSetHandler monoSetOutputFilter DEFLATESetEnvIfNoCase 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 debugCustomLog /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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.