最近研究如何在CentOS上部署mono 运行环境,之前出过几篇文章主要是在Ubutu上的部署细节,这次详细说一下在CentOS系统上如何部署Mono运行环境,欢迎大家提供更优的方式:
测试系统版本:CentOS6.8
Mono版本:4.6.0[截至文章编写时的最新版本]
一、 更新系统 [由于我的网络太差,这步直接忽略]
yum –y update
二、安装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
三、安装Mono需要的GDI+兼容API的库Libgdiplus
cd /usr/local/src/
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz
tar -jxvf libgdiplus-4.2.tar.bz2
cd libgdiplus-4.2
./configure –prefix=/usr
make
make install
四、安装 mono
cd /usr/local/src/
wget http://download.mono-project.com/sources/mono/mono-4.6.0.182.tar.bz2
tar -jxvf mono-4.6.0.182.tar.bz2
cd mono-4.6.0.182
./configure –prefix=/usr
make
make install
输入 mono -V 如有mono版本信息,则安装成功.
五 运行ldconfig命令完成配置! [关键要做的]
tip:(ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表. )
另外有一点也非常重要,要在编译Mono的是指定安装到/usr(./configure –prefix=/usr),如果安装到一个系统根本”不了解”的文件夹,仅ldconfig都不行,还要在/etc/ld.so.conf文件或/etc/ld.so.conf.d 中添加路径后再 ldconfig才行呢
以上就是 mono的安装过程
下面介绍如何在mono中跑我们的exe程序
一 将你的开发程序copy至系统的特定目录!
二 通过终端进入程序的copy目录!
三 运行mono demo.exe 开始看效果!
进阶[不安装mono 也能运行winform程序 以下内容摘录自宇内的博客]
让.NET应用程序在linux上运行,目前通用的做法就是在Linux上安装mono,然后通过”mono your.exe“命令运行这个程序。
这种运行.net程序的办法有两个弱点,一个是需要客户机安装mono,二个是 ”mono xx.exe“ 这种命令行总让人感到有点不太专业的味道。
那么,有没有办法既不安装mono,又能让你的.NET程序就像c语言编译的程序那么,”直接“在Linux上运行呢?
为了解决.net程序特别是.net控制台程序在Linux平台上部署和运行的简便性问题,我给大家准备了一个小工具,叫”AnyExec“,下面具体谈谈怎么将你的.net程序与 AnyExec整合起来,形成一个可以在Linux平台上无需安装mono就可以独立运行的程序系统。
为了解决.net程序特别是.net控制台程序在Linux平台上部署和运行的简便性问题,我给大家准备了一个小工具,叫”AnyExec“,下面具体谈谈怎么将你的.net程序与 AnyExec整合起来,形成一个可以在Linux平台上无需安装mono就可以独立运行的程序系统。
一,准备:
1,由于目前只有64位的AnyExec,所以需要大家准备一台64位Linux测试机。
2,下载 anyexec。在Linux测试机上运行命令: wget http://linuxdot.net/down/anyexec-1.1-linux_x64.tar.gz
3,解压。运行解压命令:tar -zxvf anyexec-1.1-linux_x64.tar.gz
4,把解压得到的,形如“anyexec-1.1-linux_x64”这样的文件夹名称改为你需要的名称,比如 myprog。命令是 mv anyexec-1.1-linux_x64 myprog。
然后进入 myprog,用ls命令可以看到有一个叫 any的程序文件和分别名为 app、lib和bin的三个文件夹。
你可以尝试运行一下 any,如果看到如下信息,说明 AnyExec能够在你的系统上正常工作。
二,整合:
1,准备一个 .NET 控制台程序。如果没有,可以新建一个,比如,我用VS创一个叫myprog的控制台文件,.NET版本选4.0或4.5。
然后编译出exe文件。
2,把exe文件上传到 anyexec文件夹(即你已经更名为myprog文件夹)下边名叫“app”的子文件夹中。
3,把名字叫 ”any“的可执行文件更名,让新文件名与你上传到 app文件夹中的exe文件名一致(不含扩展名),如:myprog
4,试运行:
现在,您可以尝试运行曾经叫 ”any“现在与你的程序同名(比如myprog)的这个linux程序了。
三,打包发布:
通过以上步骤,你的程序已经与anyexec整合为一个自带.net运行时,并且以你的程序命名的独立的,客户机无需安装mono也能正常运行的程序系统了。现在,你只需要把整个文件夹做成压缩包,就可以交给客户使用。
参考文章:
http://www.cnblogs.com/ylqmf/archive/2012/11/29/2793912.html
http://www.cnblogs.com/yunei/p/5347590.html
CentOS配置防火墙
iptables -I INPUT -p tcp -m tcp –dport 2100 -j ACCEPT
iptables -I INPUT -p udp -m udp –dport 2100 -j ACCEPT
service iptables save
service iptables restart
很感谢这些无私将自己知识共享出来的大神,这种分享精神值得我们每个技术人员去学习!