由于有
ASP.NET
的页面要放到
linux
上面
,
这还满新鲜的
,
以前没搞过
,
说是要装
mono.
装起来没想到这么麻烦
,
用了一天半的时间
.
以下就是整个过程
,
其中很大的篇幅是失败时的调试信息
,
很希望谁能帮我分析一下
环境
:
redhat9,apache2,mysql5,php5
已经配了
PHP
环境
,
并能正常工作
.
安装过程
:
保险起见
,
安装过程中停掉了
apache,mysql,
所装版本是
1.2.4,
用
rpm
安装
1.
首先安装
mono
的
rpm
包
用
rpm �Cvih *.rpm
时停住不动
,
估计是要加
―nodeps
所以用如下的顺序一个一个装
libgdiplus
mono-core
mono-data
mono-data-firebird
mono-data-oracle
mono-data-postgresql
mono-data-sqlite
mono-data-sybase
ibm-data-db2
mono-nunit
mono-locale-extras
rpm -ivh mono-web-1.2.4-3.novell.i586.rpm
�C
nodeps
//
这个和下面的winforms相互依赖,实在不行,所以加上了
―
nodeps
参数
rpm -ivh mono-winforms-1.2.4-3.novell.i586.rpm
rpm -ivh mono-devel-1.2.4-3.novell.i586.rpm
rpm -ivh mono-extras-1.2.4-3.novell.i586.rpm
rpm -ivh mono-jscript-1.2.4-3.novell.i586.rpm
rpm -ivh mono-basic-1.2.4-0.novell.noarch.rpm
rpm -ivh bytefx-data-mysql-1.2.4-3.novell.i586.rpm
rpm -ivh mono-complete-1.2.4-3.novell.i586.rpm
2.
然后装xsp/mod_mono
(
下载页面[url]http://www.go-mono.com/download-stable/redhat-9-i386[/url]上面并没有单独的mod_mono的rpm包下载,将这两个软件写在了一起)所以应该是包含在一起了
rpm -ivh xsp-1.2.4-0.novell.noarch.rpm
注
:
rpm安装的XSP的目录结构
/usr/bin/xsp
/usr/lib/mono/gac/xsp
/usr/lib/xsp
/usr/share/doc/packages/xsp
rpm安装mono的目录结构
/etc/mono
/usr/bin/mono
/usr/lib/mono
/usr/share/mono-1.0/mono
/usr/include/mono-1.0/mono
/usr/lib/xsp/test测试目录
不知道如何修改
httpd.conf,
因为
mod_mono
的库文件不知道装哪了
,
找不到
所以改用源码安装
mod_mono,
修改了
httpd.conf
用IE访问测试页面报错
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
--------------------------------------------------------------------------------
Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7a mod_mono/1.2.4 PHP/5.0.4 Server at 192.168.0.111 Port 80
IE的标题栏显示503错误
没找到解决办法
,
此时参考到
[url]http://www.xiaojb.com/archives/it/mono.shtml[/url]
里面写的
”
第一次
mono
和
xsp
都放到了
usr
以外的地方,结果
apache
报
503
的临时错误。估计是路径的问题,重新编译后就好了。
”
参考这篇文章采用源码安装
,
版本也用比较低的
,
恰好我的
apache
的安装路径和文章中的一样为
/usr/local/apache2/,
源码下载路径
:[url]http://go-mono.com/sources-maintenance/[/url]
1.
首先安装
libgdiplus-1.1.13.6
,但是报错要装glib-2.4.0,装了glib以后make仍然报错
./configue正常,输出为:
……
前面省略
cairo will be compiled with the following surface backends:
Xlib: yes
Quartz: no
XCB: no
Win32: no
PostScript: no
PDF: no
glitz: no
the following font backends:
FreeType: yes
Win32: no
ATSUI: no
and the following features:
PNG functions: yes
---
Configuration summary
* Installation prefix = /usr/local
* Codecs supported:
- TIFF: yes
- JPEG: yes
- GIF: yes
- PNG: yes
NOTE: if any of the above say 'no' you may install the
corresponding development packages for them, rerun
autogen.sh to include them in the build.
make报错信息为
……
前面省略
n file included from ../cairo/src/cairo-ft.h:47,
from gdip.h:38,
from adjustablearrowcap.c:27:
/usr/include/ft2build.h:55:38: freetype/config/ftheader.h: No such file or directory
In file included from gdip.h:38,
from adjustablearrowcap.c:27:
../cairo/src/cairo-ft.h:48:10: #include expects "FILENAME" or <FILENAME>
In file included from gdip.h:38,
from adjustablearrowcap.c:27:
../cairo/src/cairo-ft.h:60: parse error before "face"
../cairo/src/cairo-ft.h:64: parse error before "cairo_ft_scaled_font_lock_face"
cc1: warnings being treated as errors
../cairo/src/cairo-ft.h:64: warning: type defaults to `int' in declaration of `cairo_ft_scaled_font_lock_face'
../cairo/src/cairo-ft.h:64: warning: data definition has no type or storage class
adjustablearrowcap.c: In function `gdip_adjust_arrowcap_clone_cap':
adjustablearrowcap.c:75: warning: implicit declaration of function `memcpy'
make[2]: *** [adjustablearrowcap.lo] Error 1
make[2]: Leaving directory `/home/yahoon/mono/libgdiplus-1.1.13.6/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/yahoon/mono/libgdiplus-1.1.13.6'
make: *** [all] Error 2
查了好像与freetype有关,
libgdiplus
包里面还有一个
cairo文件夹,它的安装说明提示要装freetype-2.1.4但是用src.rpm装freetype-2.1.4提示要symlinks,源码装又报错
…
受不了放弃了.还是回头用rpm把这个libgdiplus装好(很奇怪这样安装整个过程没报错)
2.装mono
解压mono-1.1.13.8.2.tar.gz
然后到目录下执行
./configure --prefix=/usr
make
make install
装这个要很长时间
3.装mod_mono
在其README里面写到
”
mod_mono is an apache module that provides ASP.NET functionality.
”
知道它就是给提供ASP.NET支持的apche模块.
解压缩mod_mono-1.1.13.5.tar.gz
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
make install
4.安装xsp
解压缩xsp-1.1.13.7.tar.gz
./configure --prefix=/usr
make
make install
按照那篇文章里面讲的,修改httpd.conf配置文件
cd /usr/local/apache2/conf
mod_mono.conf
已经存在了,只需要包含到
httpd.conf
里边就可以了
httpd.conf
中加入
Include /usr/local/apache2/conf/mod_mono.conf
Alias /test "/usr/lib/xsp/test"
AddMonoApplications default "/test:/usr/lib/xsp/test"
SetHandler mono
AllowOverride None
Order allow,deny
Allow from all
检查语法是否有错
/usr/local/apache2/bin/apachectl configtest
这个地方报语法错误.最后我把后面三行都注释掉了
# AllowOverride None
# Order allow,deny
# Allow from all
启动apache
/usr/local/apache2/bin/apachectl start
打开
IE
进行测试,地址是
http://服务器IP/test/index.aspx
会看到
XSP
的欢迎页面
.
但是发现我原来的
PHP
不能访问了
,
打开时会弹出一个下载文件的对话框
.
查看了mod_mono的INSTALL文件,修改httpd.conf时,需要在SetHandler子句前后加上一个判断,修改后为
Include /usr/local/apache2/conf/mod_mono.conf
Alias /test "/usr/lib/xsp/test"
AddMonoApplications default "/test:/usr/lib/xsp/test"
<Location /test>
SetHandler mono
# AllowOverride None
# Order allow,deny
# Allow from all
</Location>
这样就PHP和测试页面都正常了.
打开mod_mono.conf,看到里面的内容为,就知道mono支持的文件类型了.
<IfModule !mod_mono.c>
LoadModule mono_module /usr/local/apache2/modules/mod_mono.so
AddType application/x-asp-net .aspx
AddType application/x-asp-net .asmx
AddType application/x-asp-net .ashx
AddType application/x-asp-net .asax
AddType application/x-asp-net .ascx
AddType application/x-asp-net .soap
AddType application/x-asp-net .rem
AddType application/x-asp-net .axd
AddType application/x-asp-net .cs
AddType application/x-asp-net .config
AddType application/x-asp-net .Config
AddType application/x-asp-net .dll
DirectoryIndex index.aspx
DirectoryIndex Default.aspx
DirectoryIndex default.aspx
</IfModule>
将开发的源码文件放到/test:/usr/lib/xsp/test下,假设目录为/usr/lib/xsp/test/CLRate,其主页文件为Main.aspx,访问地址[url]http://ip/test/CLRater/Main.aspx[/url],奇怪的是此时报页面错误.没办法了,修改httpd.conf,将test虚拟目录直接指到这里
Include /usr/local/apache2/conf/mod_mono.conf
Alias /test "/usr/lib/xsp/test/CLRater"
AddMonoApplications default "/test:/usr/lib/xsp/test/CLRater"
<Location /test>
SetHandler mono
# AllowOverride None
# Order allow,deny
# Allow from all
</Location>
访问[url]http://IP/test/Main.aspx[/url]正常显示
至于为什么报页面错误,还不知道是啥原因.
整个的安装过程就是这样,有点乱,因为是整个安装的过程确实比较
”
曲折
”
.
其中很多的问题没解决.欢迎大家一起讨论,提出一些建议和方法.