CentOS 7在CentOS 6的基础上有很大的调整,本文是这篇文章的更新,主要介绍CentOS 7下安装Mono 3.4 和 Jexus 5.6。
Mono是.NET的跨平台实现
在众多关于语言的争论中,.NET一直被以不能跨平台而诟病,Mono改变了这一现状。
有人当心Mono会涉及版权啥的问题。高深的偶不懂,不过我觉得Unity3D都能用,为什么我们不能用。 :)
Jexus是Linux下免费的服务器软件。Jexus作者宇内,已对Mono做了大量尝试,稳定靠谱。
CentOS 7 有很多新特性:
包含 Kernel 3.10 版本,支持 swap 内存压缩可保证显著减少 I/O 并 提高性能,采用 NUMA (统一内存访问) 的调度和内存分配,支持 APIC (高级程序中断控制器) 虚拟化,全面的 DynTick 支持,将内核模块列入 黑名单,kpatch 动态内核补丁 (技术预览) 等等
引进网络分组技术作为链路聚集的捆绑备用方法,对 NetworkManager 进行大量改进,提供动态防火墙守护进程 firewalld,加入 DNSSEC 域名系统安全扩展,附带 OpenLMI 用来管理 Linux 系统提供常用的基础 设施,引进了可信网络连接功能 (技术预览)等。
引入 Linux 容器 Docker
编译工具链方面,包含 GCC 4.8.x、glibc 2.17、GDB 7.6.1。
MariaDB 5.5、PostgreSQL 9.2
在系统和服务上,使用 systemd 替换了 SysV
引入 Pacemaker 集群管理器,同时使用 keepalived 和 HAProxy
Jexus web server for linux 是一款基于.NET兼容环境,运行于Linux/unix操作系统之上,以支持ASP.NET为核心功能的高性能web服务器,用于替换Apache+mod_mono、Nginx+FastCgi 方案运行ASP.NET,最新的5.6版本已经支持OWIN协议。Jexus不但具有跨平台ASP.NET服务器这样的标志性特征,同时还拥有内核级的安全监控、入侵检测、URL重写、无文件路由等一系列重要功能和专有特性。
Mono Xsp 和Jexus有什么区别呢:
速度方面: 对于ASP.NET网页,大压力访问时Jexus处理速度更快; 对于静态文件,Jexus远快于XSP,而且对磁盘的要求和影响小N倍;
功能方面: XSP是以ASP.NET测试工作开发的,功能单调,而Jexus是作为生产环境使用的真实的WEB服务开发的,功能全面,因此,xsp与Jexus在功能上可比性
稳定性方面: Jexus有良好的容错和自动纠错能力,可以长期不间断运行,而XSP是单进程程序,没有任何自动纠错机制,无法保持不间断运行。
安全性方面: Jexus有关键的入侵检测功能,XSP没有任何安全检测功能,没有可比性;
多站点支持: XSP支持一站,Jexus支持任意多网站。
Jexus for linux 有如下特点:
支持多种操作系统:Jexus最初的设计目标是“跨平台的ASP.NET WEB服务器”,由于在Windows系统上,IIS已经是ASP.NET的优秀平台,所以,当前的Jexus以支持Linux和FreeBSD等非Windows系统为主要设计目标。正因为这个原因,就Linux/FreeBSD等平台的ASP.NET建设而言,Jexus具有特别重大的意义。
高性能:“高性能”是Jexus的重要的设计目标。虽然Jexus基于Mono环境运行,但Jexus并非全部由Mono的.NET组件构成,对于涉及性能的关键代码,Jexus非常巧妙地大量采用了Linux/Unix本身的优秀特性,从代码层保证了Jexus的性能优势。
同时,Jexus的框架特征也为高性能提供了基础保证。Jexus不象XSP那样,纯HTML也需要经过ASP.NET处理,更不象Apache和Nginx等服务器,需要通过插件的形式间接地对ASP.NET进行支持,Jexus把HMTL静态文件处理模块、ASP.NET处理模块、静态文件高速缓存机制、epoll/poll数据传输机制等进行了高度集成,从架构本身入手,最大限度地提高WEB服务器的处理能力和传输速度。
安全性:Jexus内核含有安全监控机制,绝大多数恶意访问在进入网站前就会被Jexus直接禁止,这是Jexus有别于其它WEB服务器的又一大特色,所以,Jexus特别适合那些对安全要求较高的企业网站或政府网站使用。
稳定性:从运行机制而言,Jexus系统中,有专门检测工作进程执行状态的管理单元,任何一个进程退出或者任何一个ASP.NET网站应用程序域退出,被会被管理单元发现并得到重启,从而保证了Jexus能够7*24小时不间断工作;从程序本身而言,Jexus程序代码力求简洁,BUG很少,同时,Jexus的每个版本在正式发布之前,都要经过严格的压力测试,影响稳定性的因素,几乎在正式发布之前即已被全部排除。
功能强大:Jexus支持URL重写,支持多目标服务器的反向代理,支持PHP,支持GZIP压缩传输,并且,可以利用不同端口、不同虚拟路径、不同域名设置任意数量的网站,这些功能要素,表明了Jexus是一款功能完整而强劲的WEB服务器。
安装、配置、操作极为简单,服务社区化,各种问题能得到快速的处理,有良好的后续服务支撑能力。
一、更新系统,安装编译环境,为编译Mono源码做准备。
1、 更新系统
yum –y update
2、安装Mono源码安装需要的库
yum -y install wget glib2-devel libtiff libtiff-devel libjpeg libjpeg-devel giflib giflib-devel libpng libpng-devel libX11 libX11-devel freetype freetype-devel fontconfig fontconfig-devel libexif libexif-devel gcc-c++ gettext unzip zip bzip2 bzip2-devel curl-devel gtk2-devel boost-devel
3、安装Mono需要的GDI+兼容API的库Libgdiplus
git clone git://github.com/mono/libgdiplus.git
cd libgdiplus
./autogen.sh --prefix=/usr
make
make install
二、源码安装Mono 3.4
3.4这个版本官方的源码包,少了一些文件,以至于安装会出现问题,具体可以参考 mono-3.4.0 源码安装时出现的问题 [do-install] Error 2 [install-pcl-targets] Error 1 解决方法。
下载后上传到/usr/local/src
tar -zxvf mono-3.4.0.tar.gz
./configure --prefix=/usr --libdir=/usr/lib64
这里加上--libdir=/usr/lib64 ,主要是P/Invoke ,具体参考 MONO x64 amd_x64
make
make install
输入 mono -V 如有mono版本信息,则安装成功.
如果是64位版本的CentOS,建议你运行下命令ldconfig,建议大家在安装mono后,都 ldconfig一下 。(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才行呢。
三、安装Jexus 5.5
从5.3.1版本开始,Jexus的安装过程简化了,内置了两个新的脚本,它们分别是“install”和“upgrade”,对应原来的“安装”和“升级”,将Jexus的安装过程自动化了。jexus本身的安装和升级方式并没有发生更多的变化,因此对于已经习惯于5.3.1之前版本的使用方式的用户,你们仍然可以采用之前的安装方式。
wget linuxdot.net/down/jexus-5.6.1.tar.gz
tar -zxvf jexus-5.6.1.tar.gz
cd jexus-5.6.1
./install
安装完成~!!!在执行install脚本时,jexus默认是安装到/usr/jexus/中,如果想安装到其他目录,可以在执行该脚本时增加一个目录的参数(比如 sudu install /usr/local/jexus/)。对于升级就是执行upgrade脚本。
启动jexus 检查是否正常了
启动 /usr/jexus/jws start停止 /usr/jexus/jws stop重启 /usr/jexus/jws restart
自此,使用 http://你的IP/info即可验证Jexus是否启动
五、添加为系统服务,随系统启动
Zendic 写的 Centos、Ubuntu 安装 Mono、Jexus,其中有把Jexus添加为系统服务的代码:
cd /etc/init.d/ vi jws
按i编辑模式,粘贴下面内容
#!/bin/bash#chkconfig: 2345 80 05#description:jws#. /etc/rc.d/init.d/functionscase "$1" instart) echo "Jexus Start.." /usr/jexus/jws start ;;stop) echo "Jexus Stop.." /usr/jexus/jws stop ;;restart) echo "Jexus Restart" /usr/jexus/jws restart ;;status) /usr/jexus/jws status ;;*) exit 1 ;;esacexit $RETVAL
按ESC后,输入:wq保存文件
把这个脚本作为“服务”加入
chmod 766 jws
chkconfig --add jws
至此,JEXUS已跟随系统启动,可以reboot一下试试看
你也可以通过修改 /usr/jexus/siteconf 里面的文件,来修改站点配置。
按照步骤操作下来,发现libgdiplus无论如何都无法安装成功,最后请教了 宇内大哥,终于解决了,以下为解决方法:
yum -y install libtool*
git clone git://github.com/mono/libgdiplus.git
cd libgdiplus
./autogen.sh --prefix=/usr
make
sudo make install