Linux下面跑.NET程序

mono环境的部署

介绍再多也不过是纸上谈兵,实战才是硬道理。工欲善其事必先利其器,要实操,还必须先要有这个环境,下面进入本回合的重点环节,Mono环境的配置。

网上也有大量关于mono环境搭建的帖子,基本上都是搭配以下这两种类型的mono环境:以免费不开源jexus作为服务器软件的mono环境 和 以Apache(或nginx)作为服务器软件的mono环境,具体选择哪款环境读者可以自由选择。选择前者的,可以参考张善友先生的《32和64位的CentOS 6.0下 安装 Mono 2.10.8 和Jexus 5.0》;而选择后者的读者则可以参考《CentOS 6.0 安装 MONO 2.10.8》

这里我们就选择前者[选择的原因我打算放到下一回合再来说明]。

版本选择,均选择当前所能下载的最新版本(需要下载的可以链接下载):

操作系统:CentOS-6.4-x86_64

libgdiplus:libgdiplus-2.10.9

mono:mono-3.0.7

jexus:jexus-5.2.3(这里最新版其实是jexus-5.3.0 beta3,不过基于稳定性,我选择了最新的稳定发行版)

首先,先用Hyper-V虚拟机安装好系统,各位读者也可以选择用VM机或者其他虚拟机来安装操作系统,问题都不大。

装好Linux系统之后,我们正式的来搭建mono环境,我们把需要的源码包都上传到Linux中

(1)、更新系统 yum update   (这里我就不更新了,因为都是最新版的东西了)

(2)、通过yum安装编译mono所需要的库

yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel  cairo-devel
(3)、编译安装Libgdiplus

tar jxf libgdiplus-2.10.9.tar.bz2

cd libgdiplus-2.10.9

./configure --prefix=/usr/local/mono/

make && make install

echo "/usr/local/mono/lib" > /etc/ld.so.conf.d/mono.conf

ldconfig

(4)、安装mono

由于mono比较大,因此解压和编译安装都需要比较长的时间

tar jxf mono-3.0.7.tar.bz2

cd mono-3.0.7

./configure --prefix=/usr/local/mono/

make

make install

ldconfig

echo  PATH=/usr/local/mono/bin:$PATH>>~/.bash_profile

source ~/.bash_profile

执行  “ mono -V ”如果可以看到mono的版本信息,则表明编译安装成功

(5)、安装jexus

安装jexus比较简单,jexus安装分为全新安装和升级安装两种,由于我们这里是全新安装,所以只讲全新安装部分,升级安装可以阅读jexus中自带的readme文档,里面有详细介绍。

tar xzf jexus-5.2.3.tar.gz

mv jexus-5.2.3 /usr/local/jexus

cd /usr/local/jexus/

./jws.regsvr

ln -s /usr/local/mono/ /opt/mono

至此,jexus就安装完毕了

输入操作 “./jws.start”启动服务器,输入网址XXXX/info,得到以下画面,表明全部安装成功。

4、部署需要注意的事项与解释

上回合我们只是单纯的部署讲怎么部署mono,并没有对部署mono中每一步的作用做出解释,很多读者或许部署完了还不明白到底怎么回事,因此这回合我们就上回合的操作作出解释,并了解重点需要注意哪些事项。

(1)、部署 libgdiplus 时,执行最后一步是什么意思?

  上回合中,我们部署 libgdiplus 时执行了一步 “echo "/usr/local/mono/lib" > /etc/ld.so.conf.d/mono.conf”,这一步的作用其实到了部署mono时,执行 ldconfig 才正式的发挥作用。由于我们部署libgdiplus 和mono没有部署到系统默认的/usr 中,因此系统是不会默认的到我们部署mono的文件夹中搜寻和读取里面的动态库文件,这时,我们需要在/etc/ld.so.conf.d/文件夹中,手动的添加mono动态库文件夹的地址,再执行 ldconfig 来让系统能够找到我们的动态库文件。

(2)、部署mono后,执行 ldconfig 很重要

编译部署mono之后,我们会得到大量需要加载的动态库文件,而这些动态库文件,我们再下一步的时候就需要用到,因此需要让系统重新加载。(如果没有重新加载,有可能在部署jexus的时候会出现各种各样的问题)

(3)、部署mono之后,需要把bin目录的路径加入到环境变量PATH中

原理跟安装完jdk之后,需要在环境变量注册是一样的。

(4)、部署jexus需要执行注册

部署jexus的过程相当简单,只需要解压,然后把文件夹拷贝到我们想要它存放的目录就可以了,不过在此之后,我们需要注册全局程序集(./jws.regsvr),这个很重要

(5)、为什么注册完jexus之后需要添加一个软链接

事实上,本来这个软链接是不会写上来的,因为之前部署mono时,注册完jexus了,服务就可以正常的跑起来了。但是这次不同,注册完之后,“./jws.start”之后,服务并没有起来,执行"./jws.stop"系统报了个notfoundXXX(找不到XXX)。于是用vi随便打开了其中的一个脚本,注意到了如下的代码:

很明显,jws脚本哪里写有了寻找mono的搜寻路径,而恰好,我们部署的mono都不在这几个路径中,因此,jexus找不到想要的bin目录下的文件,所以就服务起不来或者报了个notfound。这时,我们只要在/opt/mono/ 中(当然Path中的任意一个都行,或者你也可以自己手动的一个一个脚本文件添加上mono的目录路径)添加一个软链接,把它链接到我们部署mono的目录下,jexus就能够顺利的找到想要的文件。



好了,要讲的暂时就这么多,我们的Linux.NET环境就基本搭建起来了。各位读者此刻时候有一种跃跃欲试的感觉,如果有,欢迎您马上行动,纸上得来终觉浅绝知此事必躬行。

此外:由于本人对Linux.NET接触时间并不太久,手上也没有比较有效的资料,因此很多时候都是采取摸着石头过河的方式来学习研究,如果在讨论学习的过程中有任何错漏的,欢迎各位读者能够指正出来,同时,如果各位读者有任何的意见或者建议,也欢迎大家提出。

时间: 2024-10-12 22:44:03

Linux下面跑.NET程序的相关文章

Linux Screen命令使程序远离断网影响

linux中强大的screen命令2008-12-02 21:53今天发现了一个“宝贝”,就是Linux的screen命令,对于远程登录来说,不仅提供了类似于nohup的功能,而且提供了我非常喜欢的“多个桌面”的功能. 平常开一个putty远程登录,经常需要在两个程序之间来回切换,怎么办?ctrl-z和fg.bg?这些太麻烦了.其实我们可以借助screen命令来实现轻松便捷的切换. 我主要是参考了下面的两篇文章(附在结尾),我自己总结的方法是: “首先用screen [-S]命令建立一个sess

ubuntu如何跑arm程序

1. 首先确定一间配置好arm linux 交叉编译器,可以使用arm-linux-gcc. 2. 看示例代码hello.c #include<stdio.h> int add(int a,int b){ int c = a+b; return c; } int main() { printf("Ubuntu, i am linux-arm-toolchain\n"); } 3. 在hello.c文件的目录下面执行:arm-linux-gcc -static hello.c

如何使用加多宝(jdb)在linux下调试Java程序

毕业时写了一段时间的C,那时候调试使用gdb,后来转了java,当时就想java程序怎么调试,找了一下,果然,那就是jdk自带的jdb windows里是这样的 Linux下是这样的 一般我在linux下来调试Java程序 好,那么,问题来了,这玩意怎么用?有好几种玩法 第一种玩法:以经典的HelloWorld为例,先写一个Java程序,如下: 我们把编译好的类上传到linux下,如下所示 务必强调一下:类所在的包名的层次结构也要在linux下体现出来 下面我们来玩起来,在linux下操作如下

linux 2440 LCD 应用程序编程

一.Linux的帧缓冲设备 帧缓冲(framebuffer)是 Linux 为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.这种操作是抽象的,统一的.用户不必关心物理显存的位置.换页机制等等具体细节.这些都是由Framebuffer 设备驱动来完成的.帧缓冲驱动的应用广泛,在 linux 的桌面系统中,Xwindow 服务器就是利用帧缓冲进行窗口的绘制.尤其是通过帧缓冲可显示汉字点阵,成为 Linux汉化的唯一可行方案. 帧缓冲设备对

两种在linux下创建应用程序快捷方式的方法

两种在linux下创建应用程序快捷方式的方法: A. 在桌面上创建快捷方式 B. 在应用程序菜单中添加快捷方式 在桌面上创建快捷方式 这是最简单的一种方法,在桌面上单击鼠标右键,会有一个“创建启动器”栏.这里我以为mplayer创建快捷方式为例说明: 名称-mplayer(或者你喜欢的任何名称,这个名称会出现在快捷图标的 下方) 命令-/usr/bin/gmplayer(这个是mplayer的gui应用程序的执行文件,跟 安装路径相关,可以通过which gmplayer找到) 图标-一般应用程

Linux下C/C++程序调试基础(GCC,G++,GDB,CGDB,DDD)

在写程序的时候,经常会遇到一些问题,比如某些变量计算结果不是我们预期的那样,这时我们需要对程序进行调试.本文主要介绍调试C/C++在Linux操作系统下主要的调试工具. 在Linux下写程序,C/C++主要的编译器有GCC/G++,ICC等,像我等穷码农,最喜欢GCC了,很大原因是他免费!所以,我们以GCC/G++为例介绍主要的调试工具. 分以下几个内容介绍: 1.调试之前的工作 2.选择调试工具 3.调试步骤 点我,请帮我投一票! 调试之前的工作 编译器在编译阶段需要产生可供调试的代码,才能被

linux学习笔记--vim程序编辑器

1,在linux系统中使用文本编辑器来编辑自己的linux参数配置文件是一件很重要的事情,因此系统管理员至少应该要熟悉一种文本编辑器. 2,不同的linux distribution各有不同的附加软件,linux命令行界面下的文本编辑器有Emacs,pico,nano,joe与vim 3,学习vim的重要性 (1)所有的UNIX Like系统都内置vi文本编辑器,其他的文本编辑器不一定存在 (2)很多软件的编辑接口都会主动调用vi (3)vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确

Linux Epoll介绍和程序实例

1. Epoll是何方神圣? Epoll但是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select类似,事实上都I/O多路复用技术而已,并没有什么神奇的. 事实上在Linux下设计并发网络程序,向来不缺少方法,比方典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东东呢?那还是有得说说

为linux主机安装应用程序

实验案列:为linux主机安装应用程序 需求:使用rpm的方式安装软件 使用源代码方式安装软件zhcon软件 步骤: 1下载所需软件包 2rpm安装软件包 Rpm –ivh: 安装linuxqq软件包 Realplayer wemin软件包 -qa:显示当前系统中以rpm方式安装的所有软件列表 Cd切换/usr/src/目录下 Tar:解压并释放(恢复) 归档压缩包文件 -c :指定目标目录 "Configure'脚本采用软件默认的值进行配置-prefix:指定软件包安装的目标文件夹