mono在國内的應用已經越來越多了。現在因為商業版權問題,很多公司都不敢将其用于生産環境上,但這無法擋住mono的魅力。.net的程式猿們,如果你還不知道mono那就太可惜了。
“Mono+Jexus”架構模式是Linux承載ASP.NET企業級應用的極為重要的架構方式。這種架構中,Jexus很好安裝、配置,基本上就是一個下載下傳、解壓、複制的過程,但mono安裝會麻煩點。這篇文章将記錄下在ubuntu作業系統下,使用Mono源碼安裝。後續安裝jexus,并使用一個測試頁面來驗證jexus安裝是否成功。jexus與mono的結合将在下一篇進行介紹。
一、選擇作業系統
因為整個過程運作于虛拟機,并且基于Linux發行版本選用問題,建議大家使用Ubuntu server版,我使用的版本是ubuntu server 12.04.2:
[plain] view plain copy print ?
- [email protected]:~$ cat /etc/issue
- Ubuntu 12.04.2 LTS \n \l
如果你想更新ubuntu系統,可以運作以下兩個指令:
[plain] view plain copy print ?
- sudo apt-get update
- sudo apt-get upgrade
因為 ubuntu server在安裝時,一般都會比較“幹淨”,是以我們還需要編譯環境,這些編譯環境,是順利完成mono源碼安裝的必要條件:
[plain] view plain copy print ?
- sudo apt-get install build-essential
- sudo apt-get install automake autoconf
- sudo apt-get install bison gettext libtool libglib2.0-dev libfreetype6-dev libfontconfig-dev
除了安裝好這些編譯環境外,在安裝mono前,需要先安裝Libgdiplus,而安裝 Libgdiplus 前,又需要先安裝以下的編譯環境及庫檔案:
[plain] view plain copy print ?
- sudo apt-get install libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev libjpeg62-dev
在運作上面的指令後,報了錯:
[plain] view plain copy print ?
- [email protected]:~$ sudo apt-get install libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev libjpeg62-dev
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- Some packages could not be installed. This may mean that you have
- requested an impossible situation or if you are using the unstable
- distribution that some required packages have not yet been created
- or been moved out of Incoming.
- The following information may help to resolve the situation:
- The following packages have unmet dependencies:
- libtiff4-dev : Depends: libjpeg-dev
- E: Unable to correct problems, you have held broken packages.
錯誤資訊也顯示出來了,是因為libtiff4-dev需要依賴于libjpeg-dev而不是libjpeg62-dev,是以需要把指令最後一個參數改成libjpeg-dev:
[plain] view plain copy print ?
- sudo apt-get install libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev libjpeg-dev
這樣就運作成功了。
二、安裝Libgdiplus
在前面的做準備工作做好後,其實後面就簡單了,和使用源碼安裝其他應用程式一樣的步驟。但在安裝mono前記得一定要先安裝Libgdiplus:
[plain] view plain copy print ?
- wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2
最新版本可以在這邊找到: Last modified
下載下傳完成後,解壓:
[plain] view plain copy print ?
- tar jvxf libgdiplus-2.10.tar.bz2
然後通過安裝“三步曲”完成安裝:
[plain] view plain copy print ?
- cd libgdiplus-2.10
- ./configure --prefix=/usr
- make
- sudo make install
- cd ..
三、安裝mono
安裝完Libgdiplus,就可以下載下傳mono源碼,并進行安裝了,安裝步驟和安裝Libgdiplus基本一樣:
[plain] view plain copy print ?
- wget http://download.mono-project.com/sources/mono/mono-3.0.10.tar.bz2
mono最新版本可以在這邊找到: Last modified
下載下傳完成後,解壓:
[plain] view plain copy print ?
- tar jvxf <span style="font-family: Arial, Helvetica, sans-serif;">mono-3.0.10.tar.bz2</span>
然後通過安裝“三步曲”完成安裝:
[plain] view plain copy print ?
- cd <span style="font-family: Arial, Helvetica, sans-serif;">mono-3.0.10</span>
- ./configure --prefix=/usr
- make
- sudo make install
- cd ..
如果在這時就進行配置安裝Mono的話,會在make階段得到一個“找不到 Microsoft.Portable.Common.targets 檔案”的錯誤提示,
是以需要先進行如下處理:
#> cd (mono安裝路徑的字首)/mono-3.4.0/mcs/tools/xbuild/targets
#> cp Microsoft.Portable.CSharp_4.0.targets Microsoft.Portable.Common.targets
#> vim Microsoft.Portable.Common.targets
在vim中将Microsoft.Portable.Common.targets檔案中的這行:
<Import Project="$(MSBuildToolsPath)/Microsoft.CSharp.targets" />删除,然後儲存退出。
四、mono另一種安裝方法
虛拟機下的Linux有時候在安裝mono時,在./configure這一步聚上,會出現gcc内部編譯錯誤,這些錯誤很多時候是無頭緒的。在這種情況下,可以使用以下方法來安裝mono:
1、安裝mono所需要的依賴程式 [plain] view plain copy print ?
- sudo apt-get install build-essential bison gettext pkg-config autoconf libtool automake
2、安裝mono3.0 下載下傳安裝包,解壓,并運作安裝的sh檔案: [plain] view plain copy print ?
- wget http://download.mono-project.com/sources/mono/mono-3.0.10.tar.bz2
- tar -xjvf mono-3.0.0.tar.bz2
- cd mono-3.0.0
- ./autogen.sh
- make
- sudo make install
- cd ..
這裡應該注意的一點是,./autogen.sh後面是可以帶安裝路徑參數的,預設是安裝路徑是:/usr/local
安裝成功後,檢視mono的版本:
五、安裝jexus
安裝jexus比較簡單,可到其官網下載下傳:http://www.linuxdot.net/。下載下傳連結位于官網右側“重要下載下傳”一欄中。咱們安裝的是Jexus web server V5.3.1 正式版。安裝指令如下:
[plain] view plain copy print ?
- wget http://www.linuxdot.net/down/jexus-5.3.1.tar.gz <span style="font-family: Arial, Helvetica, sans-serif;">tar -zxv -f </span><span style="font-family: Arial, Helvetica, sans-serif;">jexus-5.3.1</span><span style="font-family: Arial, Helvetica, sans-serif;">.tar.gz </span>
jexus-5.3.1檔案夾,該檔案夾下,有一個install,運作install解壓後,進入
[plain] view plain copy print ?
- cd jexus-5.3.1
- ./install
已經安裝成功。
檢視下jexus的預設配置,配置檔案在/usr/jexus/siteconf/default:
配置中都有示例,還是相當好了解的,這裡就不多說了。下面我們新在/var/www/default下面建立一個index.html頁面,頁面包含一些簡單的HTML代碼,如下 :
[html] view plain copy print ?
- <html>
- <head><title>Hello Jexus!</title></head>
- <body><h1>Hello Jexus!</h1><body>
- </html>
然後回到/usr/jexus,運作如下指令:
[plain] view plain copy print ?
- ./jws start
- curl http://localhost/index.html
可以看到,顯示的結果如下圖:
已經jexus服務已成功啟動。
下一篇将介紹jexus伺服器下mono的運作.net的web程式。