MONO

本文提供了一步一步的指导,教你如何在类UNIX系统上通过Mono部署.NET应用。包括下载及安装所需的RPM包、配置Apache使其支持.NET应用、设置虚拟主机等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MONO是一种在类UNIX系统上开发C#的工具,类似MSDN,也支持APACHE运行.NET.,当然,我想利用的只是后面所提到的功能.

1.下载 http://ftp.novell.com/pub/mono/download-stable/rhel-4-i386/

   下载 所有 Mono RPM包

   下载 所有 XSP/mod_mono RPM包 

   

*如果你的apache是自定义安装的,请下载源代码的 XSP/mod_mono 包

    http://ftp.novell.com/pub/mono/sources-stable/

  • xsp-1.9.1.tar.bz2
  • mod_mono-1.9.tar.bz2
  •  

    2.安装

     安装所有Mono的RPM包.

     如果中途出现缺少包的情况,请下载相应的包装上

     我安装的时候缺少以下包

    glib2-2.12.3-2.fc6.i386.rpm 

    glib2-devel-2.12.3-2.fc6.i386.rpm(这个包没有提示需要,但是这个也要装才有libexif.so.9这个文件,而且版本和glib2的版本一样才行)

    libexif-0.5.12-2.rhel3.dag.i386.rpm

    libexif-devel-0.5.12-1.fr.i386.rpm

    pkg-config-0.23.tar.gz

    giflib-4.1.3-8.i386.rpm

    一般情况下载系统碟中可以搜索出来

    友情提示一下:多数情况下提示的包你安装后还是提示少了那个包的话,你可以安装一下相应的devel包试试看,,多数情况下都可以成功,注意的是包和devel包的版本要一样!!!

     

    安装XSP/mod_mono

    如果是用系统默认的apache则直接安装XSP/mod_mono的RPM包.

    如果自定义安装的apache则安装源代码版的XSP/mod_mono包

    安装mod_mono的时候,   ./configure --prefix=/usr --with-apxs=/usr/sbin/apxs   注意路径,我的apache是装在/usr/local/apache2里面的,所以我的aspx路径在/usr/local/apache2/bin/apxs 注意修改成自己的apxs所在的目录

     

    配置apache

    在httpd.conf最后加上

    LoadModule mono_module modules/mod_mono.so

    AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx

    Alias /demo "/usr/lib/xsp/test"
    MonoApplications "/demo:/usr/lib/xsp/test"

    <Directory /usr/lib/xsp/test>
                  SetHandler mono
                   <IfModule mod_dir.c>
                             DirectoryIndex index.aspx
                   </IfModule>
    </Directory>

     

    在/usr/lib/xsp/test中放入.net的站点, 使用http://localhost/demo/访问即可

    可将demo别名更改掉..

     

     

    基于主机头的.net虚拟主机

    <apps>
             <web-application>
                <name>{appname}</name>
                <vhost>{virtual host for application}</vhost>
                <vport>{port for the application}</vport>
                <vpath>{virtual directory in apache}</vpath>
                <path>{physical path to aspx files}</path>
                <!-- Default value for <enabled> is true -->
                <enabled>{true|false}</enabled>
             </web-application>
     </apps>

    将上面的内容保存在一个文件中,然后使用下面的语句包含进去

    MonoApplicationsConfigFile default "/var/www/applications.webapp"

     

     

    也可以包含多个文件,把文件放进一个专门的文件夹,然后使用下面的语句加载整个文件夹的文件

    MonoApplicationsConfigDir default "/var/www/webapp"


     

     

    最后别忘了重新启动apache

     

03-22
### Mono 的定义与功能 Mono 是一个开源的 .NET Framework 实现,它遵循 C# 和公共语言基础结构 (CLI) 的 ECMA 标准[^1]。该项目提供了完整的开发工具链,包括编译器、运行时环境以及类库支持。 #### 主要组成部分 - **C# 编译器**: 支持按照 ECMA 标准编写的应用程序代码转换为目标文件。 - **兼容运行时**: 提供了一个与 Microsoft Common Language Runtime (CLR) 兼容的执行环境。 - **类库集合**: 不仅包含了微软的标准库(如 ADO.NET 和 ASP.NET),还有额外扩展的功能模块和第三方组件。 #### 跨平台能力 作为第三方实现者, Mono 特别强调其跨操作系统的能力, 它可以被嵌入至不同类型的软件产品内部以便于分发部署的同时保持应用的一致性和稳定性[^2]. 此外值得注意的是尽管大部分核心语法行为在这两个平台上表现一致但是仍然存在一些细微差异可能影响特定场景下的互操作性或者移植过程中的调整需求. ```go // Example of using Go to implement basic operations similar conceptually found within an LSM Tree structure. package main import ( "fmt" ) type Node struct { key int value string } func insert(node *Node, key int, val string){ if node == nil{ new_node := &Node{key:key,value:val} fmt.Println("Inserted new element:",new_node.key,new_node.value) }else if key < (*node).key { // Simplified logic; actual implementation would require more details about balancing etc. fmt.Printf("Would attempt insertion on left side but stubbed out here.\n") } else if key >(*node).key{ fmt.Printf("Would try adding onto the right subtree instead...\n"); } else { fmt.Printf("Key already exists updating its associated data %s->%s\n",(*node).value,val); (*node).value=val; } } func main() { root:=&Node{} insert(root,5,"Five") insert(root,3,"Three") insert(root,7,"Seven") insert(root,5,"New Five") } ``` 上面展示了一段用Go语言模拟LSM树基本操作的例子[^3],虽然这并非直接关联到Mono本身的技术细节上,但它展示了如何利用其他编程语言来构建高效的数据存储解决方案——这也是现代开发者经常面临的挑战之一,在选择合适技术栈时候需要考虑的因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值