ubuntu 8.10 server配置mono2.0.1运行asp.net 2.0

    很早之前就知道mono的大名了,但复杂的安装配置过程让人望而却步。由于最近开始考虑将公司的部分项目移植到Linux+mono上,因此进行了一些尝试,由于安装过程较长,可能以下步骤并非尽善尽美,望见谅:

相关网址:

ubuntu server 8.10: http://www.verycd.com/topics/422364/

mono源代码下载:http://ftp.novell.com/pub/mono/sources-stable/

参考:http://www.119797.com/howto/nginx-mono/


操作系统:ubuntu 8.10 server
mono :mono 2.01 mod_mono 2.0 xsp 2.0 gdiplus 2.0
终端软件:putty或Xmanager

 

1.安装ubuntu server 8.10
    没什么好讲的,网上教程也很多,安装时选择LAMP。需要注意的是ubuntu server默认的root密码是随机的,在你使用安装时的用户登录后:

 

  1. xud@xd-mobi:~$ sudo passwd root

 

修改密码,以方便以后的使用

2.安装mono 2.01
首先检查安装必须的包:

 

  1. xud@xd-mobi:~$ sudo apt-get build-dep mono 

 

注意:该过程可能会很长(呵呵,我的默认安装,好多没有啊...)

从novell下载mono源代码包,并减压、编译、安装

 

  1. xud@xd-mobi:~$ wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.0.1.tar.bz2
  2. xud@xd-mobi:~$ tar -jvxf mono-2.0.1.tar.bz2
  3. xud@xd-mobi:~$ cd monbo-2.0.1
  4. xud@xd-mobi:~$ ./configure --prefix=/usr/local
  5. xud@xd-mobi:~$ make
  6. xud@xd-mobi:~$ sudo make install

 

漫长的编译...完成后运行

 

  1. xud@xd-mobi:~$ mono --version

 

Mono JIT compiler version 2.0.1 (tarball)
Copyright (C) 2002-2008 Novell, Inc and Contributors.
www.mono-project.com
        TLS:           __thread
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  x86
        Disabled:      none
至此mono安装成功。

从novell下载xsp2源代码,减压、编译、安装

 

  1. xud@xd-mobi:~$ wget http://ftp.novell.com/pub/mono/sources/xsp/xsp-2.0.tar.bz2
  2. xud@xd-mobi:~$ tar -jvxf xsp-2.0.tar.bz2
  3. xud@xd-mobi:~$ cd xsp-2.0
  4. xud@xd-mobi:~$ ./configure
  5. xud@xd-mobi:~$ make
  6. xud@xd-mobi:~$ sudo make install

 

下载mod_mono源代码,减压、编译、安装

 

  1. xud@xd-mobi:~$ wget http://ftp.novell.com/pub/mono/sources/mod_mono/mod_mono-2.0.tar.bz2
  2. xud@xd-mobi:~$ tar -jvxf mod_mono-2.0.tar.bz2
  3. xud@xd-mobi:~$ cd mod_mono-2.0
  4. xud@xd-mobi:~$ ./configure
  5. xud@xd-mobi:~$ make
  6. xud@xd-mobi:~$ sudo make install

 

注意:在ubuntu默认安装时,会因缺少包而无法编译,请核对所缺的包,并实用sudo apt-get后再继续编译。

下载gdilus,减压、编译、安装

 

  1. xud@xd-mobi:~$ wget http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-2.0.tar.bz2
  2. xud@xd-mobi:~$ tar -jvxf libgdiplus-2.0.tar.bz2
  3. xud@xd-mobi:~$ cd libgdiplus-2.0
  4. xud@xd-mobi:~$ ./configure
  5. xud@xd-mobi:~$ make
  6. xud@xd-mobi:~$ sudo make install

 

注意:ubuntu server默认未安装exif/tiff/gif支持,如果需要支持这些格式,请先行下载

至此,在linux上运行asp.net 2.0的条件已经具备。

3.xsp2测试
为了验证asp.net是否可以正常运行,首先使用xsp进行测试:
使用xshell连接上服务器,并打开xftp,将我写的一个测试项目上传到服务器的/var/www/xdb

 

  1. xud@xd-mobi:~$ xsp2 --root /var/www/xdb

 

在浏览器中输入: http://192.168.1.202:8080(xsp默认端口为8080,需要注意),运行正常!

4.配置apache运行asp.net
编辑/etc/apache2/httpd.conf

xud@xd-mobi:~$ sudo vi /etc/apache2/httpd.conf

在配置文件中加入
ServerName 127.0.1.1
Include mod_mono.conf

Alias /xdb "/var/www/xdb"
MonoApplications "/xdb:/var/www/xdb"
<Location /xdb>
    SetHandler mono
</Location>

按esc键后输入 :wq退出vi

重启apache2
xud@xd-mobi:su
root@xd-mobi:~# export APACHE_RUN_USER=www-data
root@xd-mobi:~# export APACHE_RUN_GROUP=www-data
root@xd-mobi:~# service apache2 restart
root@xd-mobi:~# exit
请注意:

如果mod_mono安装正常,则mod_mono.conf应该存在于/etc/apache2目录下
第一行加入ServerName是为了apache2启动时不再报错。
export APACHE_RUN...两行是为了在重启服务时不报错。


在本地计算机浏览器中输入 http://192.168.1.202/xdb/,访问正常。

5.总结
安装mono还是比较麻烦的,大部分时间都花在如何解决包的依赖性上了。
发现的问题:
*mono中的XmlSerializer和.net 2.0中略有不同,在测试项目中,windows上能顺利进行Xml序列化输出的类报错。
*在使用存储过程分页的时候,.net 2.0中返回三个表,第一个为空表。而mono中貌似比较正常,返回两个表
*System.Web.Hosting中略有不同,IsHosted始终为false.似乎在apache下Web Application无宿主程序。(在IIS上是w3p3??)

*在项目中有使用反射调用类方法的时候,上传到后因为程序集名称大小写问题无法调用,解决到大小写后仍然报错,可能mono的反射机制与.net 2.0不太相同

最严重的一个问题:项目重新编译上传后,访问时发现Apache死锁,重启后才可以访问

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值