2014年8月6日 星期三

.NET+Nginx+Mono+MySQL安裝記錄


一開始買Pi是打算拿來練練Python+django的,

因緣際會下接到了一個友人委託的案子,
因為當初案子有點趕,所以只好用較能快速完成的ASP.NET進行開發
印象中Linux也有.NET平台解決方案,想說Pi應該也能夠支援才對,
就想說或許可以拿來當平台用,然後真正要用時候才發現........
難怪在找資料DeBug時看到有人回說
"Running ASP or MVC also sucks on Linux Mono" XD
所幸前前後後花了兩天時間,除了一堆Bug後終於可以Run了....
但還是有很多問題就是了,
我想主要應該是Mono支援度問題吧,Maybe,日後再研究。

要讓.Net再Linux/Pi上跑,主要就是安裝Nginx+Mono。
1.安裝Nginx+Mono    
sudo apt-get install nginx
sudo apt-get install mono-complete
sudo apt-get install mono-fastcgi-server4
2.安裝完Nginx後有兩個檔案需要進行修改,分別是
   a./etc/nginx/sites-available/default  (注意結尾要分號)     
  server {
       listen   80; 
       server_name  192.168.0.2;
       access_log /var/log/nginx/web.log;



  location / {
       root /var/www/[ProjectName]/;
       index index.html index.htm default.aspx Default.aspx;
       fastcgi_index Default.aspx;
       fastcgi_pass 127.0.0.1:9000;
       include /etc/nginx/fastcgi_params;
  }
 }
   server_name可為domain name或者IP,因為我沒domain所以以IP取代
   [ProjectName]為網站的專案名稱,自行替換為自己專案的名稱,
   該目錄下即放所有aspx網頁以及相關的CSS、JS等資料。
 b./etc/nginx/fastcgi_params在該檔案內新增底下兩行(一樣注意結尾要分號)
fastcgi_param   PATH_INFO      "";
fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name; 
然後重新載入設定
sudo nginx -t && sudo service nginx reload
3.安裝MySQL
sudo apt-get install mysql-server
4.安裝MySQL-Connector-Net    MySQL-Connector-Net要去官方下載最新Mono使用版本,
   下載完後解壓縮將其內的mysql.data.dll複製到mono的安裝目錄中
   在pi中mono目錄應該在/etc/mono下,
   至於connector要幾版的就看個人了,我是使用v4.0版本,
   然後這裡有個重點需要將dll安裝到gac中,
   在安裝前請先將mysql.data.dll改名為MySql.Data.dll
   然後在進行註冊安裝,不然會出現底下錯誤:
   Failure adding assembly mysql.data.dll to the cache:
   the filename "mysql.data.dll" doesn't match  the assembly name "MySql.Data"
   搞了半天原來是大小寫原因....Orz
   整個安裝過程指令如下:
sudo cp [path]/mysql.data.dll /etc/mono
sudo mv mysql.data.dll MySql.Data.dll
sudo gacutil -i MySql.Data.dll
5.修改MySQL語系
   這步驟幾乎在Linux必做的動作,否則中文顯示將會變成亂碼
   找到my.cnf檔案,在pi中應該在/etc/mysql/my.cnf
,加入以下設定
client]
default-character-set=utf8
     
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
6.把開發的網站丟到/var/www/[ProjectName]/下

7.啟動fastcgi-mono-server4
sudo fastcgi-mono-server4 /applications=/:/var/www/[ProjectName]/ 
/socket=tcp:127.0.0.1:9000 &
8.啟動nginx
sudo /etc/init.d/nginx start
上述步驟其實是先Linux Ubuntu試過ㄧ次,在於Pi上又測試一次,
確實可成功開啟.Net開發的網站,不過發現部分控制項功能有不支援的狀況.....
必須小修改外加除錯....有點累人就是了。

有機會要打掉用Python + django 重練!! 

沒有留言:

張貼留言

Android Audio 心得筆記(一):Audio Stream類型與預設音量

因為一些工作關係所以接觸到Android上層Audio Framework與Volume相關的部分, 記錄一下這一段時間追Code的心得,這邊會以Google N的Code為參考. Android Audio總共定義10種STREAM類型(不含DEFAULT), 用途都蠻...