1. 程式人生 > >在Ubuntu13.04中配置Jexus+Mono3.2執行Asp.Net Mvc 4站點 (一)

在Ubuntu13.04中配置Jexus+Mono3.2執行Asp.Net Mvc 4站點 (一)

這篇文章打算分兩部分來寫,第一部分介紹在Ubuntu中安裝和配置.Net Framework4.5環境,第二部分介紹如何部署Asp.Net Mvc 4站點並確保Mvc4的幾個重要特性都能正常工作。

一、在Ubuntu中安裝和配置.Net Framework4.5環境

2年前嘗試過在Ubuntu中安裝與配置Mono、mod_mono及Apache來承載Mvc 3站點,事後總結記錄了一篇部落格。時過境遷,如今的Mono從支援.Net Framework 4.5以來也已經走過了3.x的大大小小的版本,4天前剛剛釋出了3.2版。在這期間也曾經試過Mono 3.0.x系列,但因為沒注意自從2.11後,Mono的安裝需要一個已經存在的Mono C#編譯環境,所以一直沒有成功,直到前天看到張善友的

《CentOS 6.3下 安裝 Mono 3.2 和Jexus 5.4》。參考他的步驟,終於在Ubuntu上覆制了他的成功。期間也走了彎路,我會在最後介紹怎樣解決遇到的錯誤。

1. 安裝編譯Mono需要的環境

第一行為必須,第二行為可選

sudo apt-get install build-essential automake autoconf libtool bison gettext pkg-config libgdiplus
sudo apt-get install libglib2.0-dev libfreetype6-dev libfontconfig-dev gettext libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev libjpeg-dev

如果你的網路環境還湊合,上述過程應該不耗多少時間,但下面兩個就比較慢了,不妨喝杯茶,把兩個版本的Mono下下來

cd ~/mono
wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.bz2
wget http://download.mono-project.com/sources/mono/mono-3.2.0.tar.bz2

2. 安裝Mono 2.10.8

cd ~/mono
tar -xjvf mono-2.10.8.tar.bz2
cd mono-2.10.8

然後

./configure --prefix=/usr
make sudo make install

注意必須使用“--prefix=/usr”選項,為了確保Mono 2.10.8, Mono 3.2以及Jexus都安裝在相同位置。安裝成功後,mono -V應能看到版本資訊。

3. 安裝Mono 3.2

同樣,首先解壓,然後帶著“--prefix=/usr”引數configure,編譯,此時先不要安裝

cd ~/mono
tar -xjvf mono-3.2.0.tar.bz2
cd mono-3.2.0
./autogen.sh --prefix=/usr
make

編譯完3.2後,需要先解除安裝2.10.8

cd ~/mono/mono-2.10.8
sudo make uninstall

然後再繼續安裝Mono 3.2

sudo make install

安裝完成後,mono -V應可看到3.2的版本資訊。此時還需要ldconfig一下,確保新安裝的動態庫可被找到。

ldconfig

4. 安裝Jexus

cd ~/jexus
wget http://www.linuxdot.net/down/jexus-5.4.tar.gz 
tar -zvxf jexus-5.4.tar.gz
cd jexus-5.4 
sudo ./install

預設Jexus會被安裝在/usr/jexus下,此時進入該安裝路徑啟動jexus應可成功看到info頁

cd /usr/jexus
sudo ./jws start

Jexus的站點配置檔案在siteconfig中,日誌在log中,執行./jws start後無論成功失敗沒有任何訊息提示,需要進入log檢視,或者./jws status也行。

關於Jexus的站點配置,可參考這裡:http://www.linuxdot.net/bbsfile-3084

關於Jexus與IIS8的效能比較,可參考這裡:http://www.cnblogs.com/linqingfeng/archive/2013/06/14/3135716.html

啟動成功後,http://localhost/info 即可看到Jexus的info頁,在default站點目錄下,放一個內容為<%=DateTime.Now%>的Default.aspx檔案,如果可以看到

後記-錯誤的過程

在得出上述的步驟之前,我曾經按照如下過程安裝過,最後遇到了jexus無法正常啟動的錯誤

07-27 19:33:13: ==================== jws.exe error message =========================
Sender: jws.exe, Sender TypeName: AppDomain
Exception Source: jws, TargetSite Name: A
Message is:
An exception was thrown by the type initializer for Mono.Unix.Native.Syscall
StackTrace is:
  at A.C.A () [0x00000] in <filename unknown>:0
  at A.C..ctor (System.String A) [0x00000] in <filename unknown>:0
  at A.o.A (System.String[] A) [0x00000] in <filename unknown>:0
IsTerminating: True

1. 通過apt安裝Mono,安裝完成顯示版本為2.10.8

2. 使用Mono 3.2在github上介紹的方法安裝 Mono3.2

3. 在/usr/local下安裝Jexus

Jexus的這個錯誤在Google上查了半天也沒有查到,但只要將Mono 2.10.8、Mono 3.2和Jexus都安裝在/usr下就可以成功執行。雖然問題解決了,但這個錯誤的具體原因還不得而知,望有高人指點。