linux上支持.NET,一次艰难的配置mono过程

简介:
由于有ASP.NET的页面要放到linux上面,这还满新鲜的,以前没搞过,说是要装mono.装起来没想到这么麻烦,用了一天半的时间.以下就是整个过程,其中很大的篇幅是失败时的调试信息,很希望谁能帮我分析一下
 
环境:
redhat9,apache2,mysql5,php5
已经配了PHP环境,并能正常工作.
 
安装过程:
保险起见,安装过程中停掉了apache,mysql,所装版本是1.2.4,rpm安装
1.首先安装monorpm
rpm –vih *.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 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_monorpm包下载,将这两个软件写在了一起)所以应该是包含在一起了
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.confIE访问测试页面报错
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]里面写的 第一次monoxsp都放到了usr以外的地方,结果apache503的临时错误。估计是路径的问题,重新编译后就好了。
 
参考这篇文章采用源码安装,版本也用比较低的,恰好我的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
然后到目录下执行
装这个要很长时间
 
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
中加入
检查语法是否有错
 
这个地方报语法错误.最后我把后面三行都注释掉了
#    AllowOverride None
#    Order allow,deny
#    Allow from all
 
 
打开IE进行测试,地址是http://服务器IP/test/index.aspx
会看到XSP的欢迎页面.
 
但是发现我原来的PHP不能访问了,打开时会弹出一个下载文件的对话框.
查看了mod_monoINSTALL文件,修改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>
至于为什么报页面错误,还不知道是啥原因.
 
整个的安装过程就是这样,有点乱,因为是整个安装的过程确实比较曲折.其中很多的问题没解决.欢迎大家一起讨论,提出一些建议和方法.

本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/32816,如需转载请自行联系原作者
相关文章
|
3天前
|
Linux Shell 持续交付
Linux下vim的配置
本文介绍了如何对vim进行基础配置,如行号显示、缩进设置等,并推荐了一种自动化部署方案,通过链接下载预配置的vim环境脚本,简化了配置过程,提升开发效率。
15 3
Linux下vim的配置
|
5天前
|
关系型数据库 MySQL Shell
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
|
8天前
|
Linux 数据处理 数据库
探索Linux的`infocmp`命令:终端配置的得力助手
`infocmp`是Linux下用于查看和比较`terminfo`数据库中终端类型描述的命令。它显示终端的控制序列、按键映射等信息,并能找出不同终端的配置差异。通过参数如`-c`(以termcap格式输出)、`-d`(比较差异)和`-1`(单列显示)等可定制输出。例如,`infocmp $TERM`显示当前终端配置,`infocmp xterm vt100`比较两者差异。了解终端类型和选择合适输出格式是有效使用的关键。
|
17天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch,帮助你快速搭建起这个强大的工具
【6月更文挑战第7天】本文档详细介绍了如何在Rocky Linux 8上安装和配置Elasticsearch,首先通过添加Elasticsearch仓库并使用yum安装。接着,配置Elasticsearch,包括修改`elasticsearch.yml`、设置内存和文件描述符,以及可选的安全设置。启动Elasticsearch后,通过验证日志和测试连接确保其正常运行。文章还列举了常见问题及解决方法,如启动失败、内存不足和网络问题。按照这些步骤,用户可以在Rocky Linux 8上成功部署Elasticsearch,为数据管理与分析提供强大支持。
33 5
|
18天前
|
Linux Shell
Linux配置uwsgi环境
Linux配置uwsgi环境
|
18天前
|
监控 Linux
探索 Linux 中的 Chronyc:一个用于配置和管理 Chrony 的实用工具
Chronyc 是一款用于配置和管理 Linux 系统中 Chrony 时间同步工具的命令行实用程序。Chrony 结合了 ntpd 和 ntpdate 的优点,提供高精度和灵活性。要安装 Chrony,可使用包管理器(如 `apt` 或 `yum/dnf`)。常用 `chronyc` 命令包括:查看时间源状态(`sources`)、跟踪信息(`tracking`)、添加或删除服务器、手动同步时间(`makestep`)以及查看其他信息和帮助。`chronyc` 提供了便捷的方式来监控和调整系统时间同步。
|
18天前
|
Linux Shell 开发者
深入了解 Linux 命令 `autoscan`:为自动配置脚本做准备
`autoscan` 是 Linux 和 Unix-like 系统中用于软件配置的工具,它扫描源代码并生成 `configure.scan` 文件,为 `autoconf` 创建初始模板。开发者通常将 `configure.scan` 重命名为 `configure.ac` 并进行编辑,然后用 `autoconf` 转换为可执行的 `configure` 脚本。在使用前,记得备份项目,确保权限,并安装 `autoconf`。`configure` 脚本能适应多种系统,检查环境并生成 `Makefile`。
|
1月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
91 0
|
1月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
35 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
149 5