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

时间:2022-05-24 09:40:02

这篇文章打算分两部分来写,第一部分介绍在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.-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..tar.bz2
cd mono-2.10.

然后

./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..tar.bz2
cd mono-3.2.
./autogen.sh --prefix=/usr
make

编译完3.2后,需要先卸载2.10.8

cd ~/mono/mono-2.10.
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无法正常启动的错误

- ::: ==================== 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>:
at A.C..ctor (System.String A) [0x00000] in <filename unknown>:
at A.o.A (System.String[] A) [0x00000] in <filename unknown>:
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下就可以成功运行。虽然问题解决了,但这个错误的具体原因还不得而知,望有高人指点。