这篇文章将为大家详细讲解有关如何部署Mono开发环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
部署Mono开发环境的具体步骤如下:
下载Mono并上传到腾讯的服务器上。
腾讯的服务器是没有配置dns解析功能的,所以不能直接用yast2来通过更新源来升级Mono;对于可以用yast2安装的,可以参考我的《在openSUSE中部署基于apache的Mono环境》。而用rpm手工安装,太多的程序依赖处理起来很麻烦,只好用通过编译Mono源码的方式来安装了。
在这里可以下载到Mono的源码,我们只需要Mono-2.8.tar.bz2/xsp-2.8.tar.bz2/mod_Mono-2.8.tar.bz2。Mono-2.8.tar.bz2当然是Mono的核心了,xsp-2.8.tar.bz2是一个轻量级的web服务器,而mod_Mono-2.8.tar.bz2是apache的模块,使用这个来解析.net开发的网站。
上传文件到腾讯的服务器需要分2部走,首先用rz -be把文件上传到腾讯的跳板机,然后再用scp命令把文件传到目标服务器。
安装Mono-2.8.tar.bz2。
切换到Mono-2.8.bar.bz2的目录,执行
tar xf Mono-2.8.tar.bz2
解压Mono源码包。之后再
cd Mono-2.8
进入解压出来的文件夹后,执行配置命令,这里都使用默认配置,如果使用–prefix指定目录的话,需要修改很多配置,操作起来非常麻烦。
./configure
之后就是最常规的
make
进入漫长的编译过程。中间过程如果出错,根据它的提示安装相当的文件。然后直接进行安装。
make install
到这里,Mono就安装完成了。这步非常简单。我走的弯路是腾讯要求要把软件都安装到/usr/local/services/目录,而Mono指定安装目录后,需要设置系统变量及在后面的软件安装过程都要显式的指定Mono目录,一直都没有折腾好,***只好使用默认安装,结果一次就好了。
安装xsp-2.8.tar.bz2。
一样解压文件并执行configure,
123 tar xf xsp-2.8.tar.bz2cd xsp-2.8./configure
到这里一直都是正确的,但是执行
make
的时候,就不能进行下去了。会有这样一个提示:
Your sqlite3 version is old – please upgrade to at least v3.5.0!
Unhandled Exception:System.EntryPointNotFoundException: sqlite3_next_stmt
…….
提示这个错误是因为linux本身的sqlite3版本号不够,默认的是3.1.3。你要么升级sqlite要么修改xsp的文件。查看xsp的安装文件发现是在编译xsp的demo文件时产生的错误。在$XSP_PATH/test/1.1/webcontrols目录下有dbpage1.aspx/dbpage1.sqlite/dbpage2.aspx/dbpage2.sqlite/dbpage_test_setup.cs这几个文件,错误就是在编译这些文件的时候产生的。于是我修改了这个目录下的Makefile/Makefile.am/Makefile.in这三个文件,把和sqlite有关的都删除掉了。
分别编辑这三个文件,找到:
samples_Data =
把这个值的
dbpage1.aspx\ dbpage2.aspx\
把这两个删掉,还有:
sqlitedir = $(pkglibdir)/test/1.1/webcontrols sqlite_DATA = dbpage.sqlite \ dbpage2.sqlite samplesbindir = .... samplesbin_SCRIPTS = ... dbpage_test_setup_build = ... EXTRA_Dist = $(sqlite_DATA) ... all: all-am
这些都删掉。在页面的底部还有:
1234 dbpage_test_setup.exe :$(dbpage_test_setup_build)....# ...... 一直到 ......dbpage2.sqlite: dbpage_test_setup.exe $(RUNTIME) dbpage_test_setup.exe
全部都需要删掉。三个页面都执行这样的删除操作。删除完后,再make,就能成功编译了。完了再
make install
安装Mono最麻烦的问题就是这里编译出错。网上查这个编译错误,貌似很多人都有遇到,但是又都没有说怎么解决。期间我还尝试升级sqlite3,可是没有升级成功。***一个文件一个文件打开来看,才发现Makefile文件的秘密。主要是***次折腾linux系统,所以多走了很多弯路。
安装mod_Mono-2.8.tar.bz2。
安装这个也没有遇到什么问题,主要是如果你的apache文件不是安装在默认目录的,需要在configure命令时指定apache的bin目录。
都安装好后,剩下的就是配置apache了。
编辑$APACHE_PATH/conf/httpd.conf文件,增加一个配置:
#Mono module Include conf/mod_Mono.conf
安装mod_Mono之后,这个mod_Mono.cnf是自动生成的,和apache的httpd.conf在相同的目录。
对于网站的配置,Mono的官方网站有一个mod_Mono的配置生成工具,建议使用里面的Virtual Host的方式来生成配置文件。它能帮我们生成这样的配置文件:
<VirtualHost *:80> ServerName mono.moozi.net ServerAdmin moozi@moozi.net DocumentRoot /srv/www/mono.moozi.net # MonoServerPath can be changed to specify which version of ASP.NET is hosted # mod-mono-server1 = ASP.NET 1.1 / mod-mono-server2 = ASP.NET 2.0 # For SUSE Linux Enterprise Mono Extension, uncomment the line below: # MonoServerPath mono.moozi.net "/opt/novell/mono/bin/mod-mono-server2" # For Mono on openSUSE, uncomment the line below instead: MonoServerPath mono.moozi.net "/usr/bin/mod-mono-server2" # To obtain line numbers in stack traces you need to do two things: # 1) Enable Debug code generation in your page by using the Debug="true" # page directive, or by setting <compilation debug="true" /> in the # application's Web.config # 2) Uncomment the MonoDebug true directive below to enable mod_mono debugging MonoDebug mono.moozi.net true # The MONO_IOMAP environment variable can be configured to provide platform abstraction # for file access in Linux. Valid values for MONO_IOMAP are: # case # drive # all # Uncomment the line below to alter file access behavior for the configured application MonoSetEnv mono.moozi.net MONO_IOMAP=all # # Additional environtment variables can be set for this server instance using # the MonoSetEnv directive. MonoSetEnv takes a string of 'name=value' pairs # separated by semicolons. For instance, to enable platform abstraction *and* # use Mono's old regular expression interpreter (which is slower, but has a # shorter setup time), uncomment the line below instead: # MonoSetEnv mono.moozi.net MONO_IOMAP=all;MONO_OLD_RX=1 MonoApplications mono.moozi.net "/:/srv/www/mono.moozi.net" <Location "/"> Allow from all Order allow,deny MonoSetServerAlias mono.moozi.net SetHandler mono </Location> </VirtualHost>
为了提高apache的处理性能,我们需要对这个配置再做一些修改,***的配置如下:
<VirtualHost *:80> ServerName mono.moozi.net ServerAdmin mono@moozi.net DocumentRoot /srv/www/mono.moozi.net/ MonoServerPath mono.moozi.net "/usr/local/bin/mod-mono-server4" #这里我用.net 4.0 MonoDebug mono.moozi.net true MonoSetEnv mono.moozi.net MONO_IOMAP=all MonoApplications mono.moozi.net "/:/srv/www/mono.moozi.net/" <Location "/"> Allow from all Order allow,deny MonoSetServerAlias mono.moozi.net SetHandler mono </Location> <Location ~ "^/(styles|scripts|images)/"> SetHandler default-handler </Location> <Location ~ "^/[^/]+\.(txt|html|ico|js|css|jpg|jpeg|gif|png)"> SetHandler default-handler </Location> </VirtualHost>
这里我们增加了两个<Location />配置节,让静态资源文件使用apache的默认handler处理。
***,重启apache就好了。
关于“如何部署Mono开发环境”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。