Linux防健忘日誌No.58-Ubuntu 11.10 讓Apache支援ASP .NET 4.0網頁 & MySQL

今天中午設定了30分鐘Windows Server 2008 R2 SP1(以下簡稱S2K8)
雖然成功解決掉MySQL的問題
 (結果是自己Refer到舊版6.3.7.0的dll組件…而S2K8上的IIS7內當初裝是裝6.4.4.0,超白癡)

但想到這台Server要放在學校,而學校的網路的環境太錯綜複雜,不好解決
又懶的研究S2K8如何用VPN…

說來諷刺,當初是因為覺得讓Linux支援ASP SV麻煩

現在變成換S2K8要搞VPN麻煩…

索性還是回頭設法讓家中的Ubuntu Server支援ASP .NET

讓Ubuntu支援ASP .NET不外乎有兩個大方法
1.Apache2+Mono 模組
2.Jexus

我選了Mono模組搭配的方法

網路google了很久,這種Apache+MySql+ASP的簡稱LAMA
不過大家的文章的蠻散的
而且有點年紀,這裡再重新重整今天一下午建立的筆記

 
 
前置條件:
i.Apache服務要裝好設定好

ii.MySQL也已經設定好並且可供外連(除非你做單機)


1.要先更新apt source(因為mono最近才把新版的deb加入apt)
sudo apt-get upgrade
 
2.安裝mono插件
sudo apt-get install libapache2-mod-mono

這個過程可能會發現終端機卡住(我在實體Server作是沒卡住,但VM就有卡…)
如果等了10幾分鐘還沒過,請重新開機
再重新下一次這條指令確認一下

3.確認啟用mono模組
sudo a2enmod mod_mono

4.接著要改個mono組態檔,否則asp語法的網頁不會自己編譯執行
sudo vi /etc/apache2/mods-available/mod_mono.conf 

內容如下:

AddType application/x-asp-net .aspx .ashx .asmx .ascx .asax .config .ascx
DirectoryIndex index.aspx
MonoAutoApplication enabled//加入這行
MonoServerPath “/usr/bin/mod-momo-server4″//這行可有可無,如果你只想支援.net 2,就改為mod-momo-server2


# Include the web application definitions generated by mono-server{2,4}-update.
#
# If you want to use ASP.NET 2.0 (via mono-apache-server2), use:
# Include /etc/mono-server2/mono-server2-hosts.conf
#
# If you want to use ASP.NET 4.0 (via mono-apache-server4), use:
# Include /etc/mono-server4/mono-server4-hosts.conf


Include /etc/mono-server4/mono-server4-hosts.conf     

5.修改完組態檔要重新啟動apache
sudo service apache2 restart

6.接著你可以把一個aspx專案丟上去跑看看,基本上應該會過

基本aps .net 4.0 on linux伺服器就架設完成

但我的asp網站有用到GridView連接MySQL資料庫
所以出現Failed to find or load the registered .Net Framework Data Provider ‘MySql.Data.MySqlClient
這個錯誤訊息


如果要看到錯誤訊息
你要在web.config中的system.web區塊加入

@@@

     ~~~~~~~~~other code~~~~~~~~~~
       
     ~~~~~~~~~other code~~~~~~~~~~
          
@@@

 
唉,架個站一波三折

接下來來解決這個問題
1.去MySQL官網抓Not Install 版本的Connector(打這篇文章的時候版號是6.4.4.0)
http://dev.mysql.com/downloads/mirror.php?id=403989

2.解壓縮之後把底下的mysql.data.dll複製到SV上..(我這裡是v4資料夾底下的3個dll都複製到linux底下的’/home/thkaw/ec/MySql.Data.dll’ )
注意,如果你當初在Visual Studio 下Refer的dll是有大小寫之分(例如MySql.Data.dll)
到了Linux底下,必須要把名稱更正為當初編譯Refer的名稱

3.接著要匯入剛剛複製的dll
sudo gacutil -i ‘/home/thkaw/ec/MySql.Data.dll’ 

4.重啟apache
sudo service apache2 restart

之後試看看吧~

如果很不幸的還是出問題…

請到web.config找個地方貼上以下內容:

 
   
     
     
           description=”.Net Framework Data Provider for MySQL”
  type=”MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,
  Version=6.1.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”/>
   

其中的Version請自行更改到合適的值
結束~~

thx for:
http://www.ylmf.net/ubuntu/tips/201010287914_4.html
http://docs.dynamichoice.com/?p=23
http://www.mono-project.com/Assemblies_and_the_GAC
http://mono.1490590.n4.nabble.com/I-cannot-get-working-Mono-with-MySql-connector-and-the-System-Data-Common-namespace-td1837252.html 

Leave a comment

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料