关于什么是 Mono,请翻我上篇博文《在Linux上运行.NET——Mono》(● ̄(エ) ̄●)
本来想用 Apache + mod_mono 来架设 Web 服务器,但是想想最后还是决定使用 Mono + Jexus 的方法架设。好久没有使用国人写的东西了,心里还有些小激动呢(°∀°)ノ
关于怎么使 Apache/Nginx 和 Jexus 同时生效,只要用 Apache/Nginx 搭个反向代理就 ok 了。
更新时间:2016.06.04
安装 Mono
安装 Mono 有三种方法,以下博主将逐一介绍:
一、yum 安装 Mono(仅支持 CentOS 7)
使用 yum
也是 Mono 官网建议的安装方式,不同的系统安装方式略有不同,像 openSUSE 还有官方的发行包,在这里有官方提供的各平台安装方法。
针对 CentOS 用户来说,CentOS 7 可以直接用 yum
安装,也就是说 CentOS 6 就别想了_(:3」∠)_
1.添加 Mono 和 EPEL 的源,并安装依赖包
以下 Shell 需要使用 root 权限运行
yum -y install yum-utils # 安装必须工具 rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" #添加Mono的GPG密钥 yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ #添加Mono的仓库地址 yum -y install epel-release #添加EPEL源 yum -y install bison cairo-devel freetype-devel gcc gcc-c++ gettext giflib-devel make libexif-devel libjpeg-devel libpng-devel libtiff-devel pkgconfig yum -y update
2.安装 mono-complete
因为是 CentOS 7,其最新 GLIBC 版本是 2.17,高于最低限制 glibc 2.16
可以正常安装。而且用于安装依赖包 libgdiplus0
的 4.0 版 libtiff
和 1.5 版 libpng
也集成在 CentOS 7 中。
要知道 CentOS 6 的 glibc
只有 2.12
,libtiff
只有 3.9
,libpng
只有 1.2
。这就是无法跨越的鸿沟…
安装 mono-complete
会安装全部的 mono 相关的包。
yum -y install mono-complete
二、编译安装 Mono
若是使用 CentOS 7 以下的版本 ,就不要考虑 yum
命令直接安装了,还是老老实实编译安装吧。
1.安装必须的库
先安装必须的库,安装完成后再升级下需要升级的库。
yum -y install autoconf automake bison cairo-devel freetype-devel gcc gcc-c++ gettext giflib-devel glib2-devel make libexif-devel libjpeg-devel libpng-devel libtiff-devel libtool #安装必须的库 yum -y update
2.编译安装 libgdiplus
安装用于实现 System.Drawing
的 libgdiplus
。至博主编译时,libgdiplus
最新版本为 4.2,在这里下载最新版 libgdiplus
。
在安装 libgdiplus
时,建议将其安装在 /usr
里,这样在编译 Mono 的时候,系统会自动找到需要链接的文件,也就不需要去修改 /etc/ld.so.conf.d
里的内容了。
cd /usr/local/src wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz tar -zxf libgdiplus-4.2.tar.gz cd libgdiplus-4.2 ./configure --prefix=/usr make make install
安装完 libgdiplus
后,就可以安装 Mono 了。
3.编译安装 Mono
Mono 官网提醒,如果安装 2.8 版本以下的 Mono ,需要先安装低版本的 Mono ,然后再安装高版本的 Mono 。因为 2.8 之前的版本不能自己生成 C# 的编译器,需要使用低版本的 C# 编译器,而从 Mono 2.8 开始,Mono 将自己生成 C# 的编译器供自己使用。
(碎碎念:为嘛前面一句话让我想到了:你再 poipoi 地叫小心我 poi 了你哦 poi Σ(゚д゚;))
至博主编译时,Mono 最新稳定版本为 4.2.3.4,在这里下载最新版 Mono。
cd /usr/local/src wget http://download.mono-project.com/sources/mono/mono-4.2.3.4.tar.bz2 tar -jxvf mono-4.2.3.4.tar.bz2 cd mono-4.2.3 ./configure --prefix=/usr/local make make install #如果有多个线程,可以使用make -j 线程数 使用多线程编译Mono,提高编译速度
经过漫长地编译安装过程,终于装完了…好歹有 700M 啊
其实我想了想,觉得把它装在一个文件夹内貌似更好 –prefix=/usr/local/mono
4.测试 Mono 是否安装成功
mono -V Mono JIT compiler version 4.2.3 (Stable 4.2.3.4/832de4b Sat Jun 4 20:43:24 CST 2016) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: none Misc: softdebug LLVM: supported, not enabled. GC: sgen
如果出现了上面的版本信息,那么表示 Mono 安装成功,否则安装失败了…
三、使用 Git 安装 Mono
使用 Git 会取得最新的 Mono 版本,但是最新的版本不一定是稳定的版本,是否使用最新版本请自己拿捏。
记得先自己装上 Git,不然没法用 git
命令哦~
1.安装必须的库
先安装必须的库,安装完成后再升级下需要升级的库。
yum -y install autoconf automake bison cairo-devel freetype-devel gcc gcc-c++ gettext giflib-devel glib2-devel make libexif-devel libjpeg-devel libpng-devel libtiff-devel libtool #安装必须的库 yum -y update
2.安装 libgdiplus
安装用于实现 System.Drawing
的 libgdiplus
。
在安装 libgdiplus
时,建议将其安装在 /usr
里,这样在编译 Mono 的时候,系统会自动找到需要链接的文件,也就不需要去修改 /etc/ld.so.conf.d
里的内容了。
cd /usr/local/src git clone git://github.com/mono/libgdiplus.git cd libgdiplus ./autogen.sh --prefix=/usr make make install
安装完 libgdiplus
后,就可以安装 Mono 了。
3.安装 Mono
cd /usr/local/src git clone git://github.com/mono/mono.git #大概有 100M 左右内容要下载 ./autogen.sh --prefix=/usr/local make make install
漫长的等待…
4.测试 Mono 是否安装成功
mono -V
如果出现了版本信息,那么表示 Mono 安装成功,否则安装失败了…
编译安装如果所有安装路径都按博主的来,那么
libgdiplus 安装在 /usr
里,它的文件散落在 /usr/lib
文件夹中
Mono 安装在 /usr/local
里,文件散落在 /usr/local/include
、/usr/local/lib
中
将要安装的 Jexus 安装在 /usr/local/jexus
里,文件都在 /usr/local/jexus
中,默认网站目录为 /data/www/aspnet/default
安装Jexus
安装完成 Mono 后,就可以安装 Jexus 了。Jexus 的安装非常简单,相当于执行一个一键脚本。
Jexus 的官网是中文的,里面的说明什么的只要你是个中国人相信都能看懂,你也能在这里获得最新版本的 Jexus。
cd /usr/local/src wget http://www.linuxdot.net/down/jexus-5.8.1.tar.gz tar -zxf jexus-5.8.1.tar.gz cd jexus-5.8.1 ./install /usr/local/jexus #默认安装在/usr/jexus中,可以设置为/usr/local/jexus中,只要在install最后加上路径即可,例如 ./install /usr/local/jexus
安装完成后,只要稍微配置下里面的配置文件即可,甚至可以不进行配置,默认网站目录是 /var/www/default
,只要把 .NET Web 程序放在这里面就行了。经过下面的配置,会把默认网站目录更改为 /data/www/aspnet/default
。
接下来我们将 Jexus 设置为开机启动,再进行一些配置:
chmod -R 755 /usr/local/jexus sed -i 's@^root.*@root=/ /data/www/aspnet/default@' /usr/local/jexus/siteconf/default #把默认网站目录修改为 /data/www/aspnet/default sed -i 's@^# indexes.*@indexes=index.aspx,default.aspx,index.html,default.html@' /usr/local/jexus/siteconf/default #设置默认文件 sed -i 's@^# UseGZIP=true@UseGZIP=true@' /usr/local/jexus/siteconf/default #为网站开启gzip压缩 groupadd jexus useradd -g jexus -s /sbin/nologin jexus #为Jexus添加用户 mkdir -p /data/www/aspnet/default chmod -R 755 /data/www/aspnet chown -R jexus:jexus /data/www/aspnet sed -i 's@^# httpd.User=www-data@httpd.User=jexus@' /usr/local/jexus/jws.conf #让Jexus的工作进程和网站工作于指定的用户权限(身份)下 echo /usr/jexus/jws start >> /etc/rc.local #设定开机启动 #请确认系统中没有把其他占用80端口的 Web 服务器设置为开机启动 ln -s /usr/local/jexus/jws /usr/bin/jws sed -i 's@^JWS_HOME=.*@JWS_HOME=/usr/local/jexus@' /usr/local/jexus/jws #为jws创建软链接,注意这里修改了jws文件,否则软链接无效 ln -s /usr/local/jexus/log /var/log/jexus #日志软链接 sed -i 's@^# export MONO_IOMAP="all"@export MONO_IOMAP="all"@' /usr/local/jexus/jws #使Jexus不区分文件大小写 jws start #启动Jexus
值得注意的是多站点的配置,以下节选 Jexus 中 README 部分:
Jexus 支持多站点,可以用不同的端口、域名、虚拟路径设置任意多的网站。
必须把所有网站配置文件放到
jws.conf
指定的网站配置文件夹内(这个文件夹常常是jws
工作目录内的siteconf
文件夹),这个文件夹除了网站配置文件,不能有其它任何文件,因为 Jexus 会认为这儿的任何一个文件都代表着一个不同的网站。每个网站有且只有一个配置文件,配置文件的文件名就是这个网站的名称,比如 www.mysite.cn 这个网站,配置文件名可以写成
mysite
,当然也可以写成其它文件名,以便管理员容易记忆和识别,但要特别注意:文件名不能有空格!一个网站可以拥有任意多的域名,不同网站不能有相同的域名,没有域名的网站只能有一个,这个没有域名的网站叫做“默认网站”,而一台服务器最多只能有一个默认网站。
*** 再次强调:
1、网站配置文件的文件名不能有空格;
2、网站配置文件夹中只能有网站配置文件,不能有其它文件文件存在。
安装完成了,现在就可以在 Linux 上使用 .NET 了。
PS:如果要升级 Jexus,只需要在下载的新版本文件夹中运行 ./upgrade /usr/local/jexus
就好了,./upgrade
后面跟的是原本 Jexus 的安装目录。注意要是建立了软链接,记得执行 sed -i 's@^JWS_HOME=.*@JWS_HOME=/usr/local/jexus@' /usr/local/jexus/jws
使软链接生效。
原创文章,转载请以链接形式注明出处:https://blog.ttionya.com/article-1030.html