ASP.NET基于Centos 6.5的跨平台实践
1、前言
应技术主管要求,为公司实现ASP.NET框架跨平台运行于Linux服务器上。笔者读书时候也学过C#,现在是一名运维工程师,工作跟C#开发并没有半点关系,但看到C#可以跑在linux下,笔者还是非常高兴的。
2、理论部分
-- mono
是指由Novell公司(由Xamarin发起,并由Miguel de lcaza领导的,一个致力于开创·NET在Linux上使用的开源工程。
-- Jexus(免费非开源)
即 Jexus Web Server,简称JWS,是Linux平台上 的一款ASP.NET WEB服务器。它是 Linux、Unix、FreeBSD 等非Windows系统架设 ASP.NET WEB 服务器的核心程序。
2.1、Jexus
2.1.1、Jexus主配置文件位置
配置文件的查找
find/-namejws.conf
一般显示如下:
/usr/jexus/jws.conf
2.1.2、Jexus主配置文件
SiteLogDir=log#网站及Jexus系统日志存放目录(必填,基于jws相对路径)SiteConfigDir=siteconf#子配置文件存放目录(必填,绝对路径或相对jws.conf路径)Runtime=v4.0.30319#设定Jexus的.NET版本(可选)httpd.processes=1#开启进程数(可选,建议6-8核CPU一个进程,最大4进程)httpd.user=www-data#运行进程身份(可选,默认root)php-fcgi.set=/usr/bin/php-cgi,6#逗号前指定php-cgi路径,逗号后指定php进程数(可选PHP)CertificateFile=/xxxx/xx.crt#SSL证书路径(可选)CertificateKeyFile=/xxxx/xx.key#SSL密钥文件路径(可选)
2.1.3、子配置文件
1)子配置文件路径
SiteConfigDir=siteconf#主配置文件定义的绝对路径或相对jws.conf路径
注意:子配置文件名称不能含空格
2)配置文件选项
port=80#倾听端口(必填)root=//var/www/www.cmdschool.org#网站跟目录(必填)hosts=www.cmdschool.org#站点域名(默认网站只一个)addr=0.0.0.0#端口倾听地址CheckQuery=false#关闭URL安全检测NoLog=true#禁用日志功能NoFile=/index.aspx#没文件首页回应Keep_Alive=false#关闭长连接UseGZIP=true#启用传输压缩UseHttps=true#启用ssl加密DenyFrom=192.168.0.233,192.168.1.*,192.168.2.0/24#拒绝访问的主机或网段AllowFrom=192.168.*.*#允许访问的主机或网段DenyDirs=~/cgi,~/upfiles#拒绝访问的文件或文件夹indexes=index.aspx,index.html#首页文件(选填)rewrite=^/.+?\.(asp|php|cgi|pl|sh)$/index.aspx#URL重写reproxy=/bbs/http://192.168.1.112/bbs/#反向代理#Jexusphpfastcgiaddressis'/var/run/jexus/phpsvr'#######################################################fastcgi.add=php|socket:/var/run/jexus/phpsvr#php的fastcgi网关#php-fpmlistenaddressis'127.0.0.1:9000'############################################fastcgi.add=php|tcp:127.0.0.1:9000#php的fastcgi网关
3、实践部分
3.1、主机信息
ser:
ipaddress=10.168.0.165
client:
ipaddress=10.168.0.8
3.2、yum源安装
yum-yupdateyum-yinstallgccgcc-c++bisonpkgconfigglib2-develgettextmakelibpng-devellibjpeg-devellibtiff-devellibexif-develgiflib-devellibX11-develfreetype-develfontconfig-develcairo-develyuminstall-yntpwget
3.3、安装步骤
Inser:
3.3.1、创建工作文件夹
mkdir~/ctmjcd~/ctmj
3.3.2、ntp时间校准
cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtimentpdate-upool.ntp.org
3.3.3、关闭selinux
sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/configsetenforce0
3.3.4、下载安装包
wget-chttp://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.9.tar.bz2wget-chttp://download.mono-project.com/sources/mono/mono-3.10.0.tar.bz2wget-chttp://linuxdot.net/down/jexus-5.6.3.tar.gz
3.3.5、GDI+组件编译安装
tarjxflibgdiplus-2.10.9.tar.bz2cdlibgdiplus-2.10.9/./configure--prefix=/usrmake&&makeinstallldconfigcd..
3.3.6、mono编译安装
tarjxfmono-3.10.0.tar.bz2cdmono-3.10.0./configure--prefix=/usrsed-i's/#defineHAVE_LOCALCHARSET_H1/#defineHAVE_LOCALCHARSET_H0/g'eglib/config.hmake&&makeinstallcd..mono-V
显示如下:
MonoJITcompilerversion3.10.0(tarballThuJan721:58:07EST2016)Copyright(C)2002-2014Novell,Inc,XamarinIncandContributors.www.mono-project.comTLS:__threadSIGSEGV:altstackNotifications:epollArchitecture:amd64Disabled:noneMisc:softdebugLLVM:supported,notenabled.GC:sgen
3.3.7、jexus编译安装
tarzxfjexus-5.6.3.tar.gzcdjexus-5.6.3./installcd../usr/jexus/jwsstart
3.3.8、设置服务管理脚本
1)创建服务脚本
vim编辑/etc/rc.d/init.d/jexus
输入如下内容:
#!/bin/bash#chkconfig:23451090#description:JexusServercase"$1"instart)echo"JexusStart.."/usr/jexus/jwsstart;;stop)echo"JexusStop.."/usr/jexus/jwsstop;;restart)echo"JexusRestart"/usr/jexus/jwsrestart;;status)/usr/jexus/jwsstatus;;*)echo"Usage:jexus{start|stop|restart|status}"exit1;;esac
注,以上脚本必须包含2-3行,否则脚本无法注册:
其中2345是默认启动级别,级别有0-6共7个级别。
-- 等级0表示:表示关机
-- 等级1表示:单用户模式
-- 等级2表示:无网络连接的多用户命令行模式
-- 等级3表示:有网络连接的多用户命令行模式
-- 等级4表示:不可用
-- 等级5表示:带图形界面的多用户模式
-- 等级6表示:重新启动
10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。
2)注册服务启动脚本
chkconfig--addjexus
3.4、jws服务的配置
3.4.1、配置应用程序目录
mkdir-p/var/www/www.cmdschool.orgecho"www.cmdschool.org">/var/www/www.cmdschool.org/index.html
3.4.2、配置虚拟目录
vim编辑/usr/jexus/siteconf/www.cmdschool.org
port=80root=//var/www/www.cmdschool.orghosts=www.cmdschool.orgindexes=Default.aspx,index.aspx,index.html
3.4.3、重启服务
/etc/init.d/jexusrestart
3.4.4、配置防火墙
1)编辑防火墙
vim编辑/etc/sysconfig/iptables
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT
2)重启防火墙
/etc/init.d/iptablesrestart
3.4.5、静态测试
In Client:
1)模拟dns配置
vim编辑/etc/hosts
10.168.0.165www.cmdschool.org
2)测试服务
curlwww.cmdschool.org
显示如下:
www.cmdschool.org
3.4.6、C#项目测试
1)下载开源的博客网站代码:
http://sourceforge.net/projects/tblogger/
或者直接下载:
wgethttp://nchc.dl.sourceforge.net/project/tblogger/tblogger/v0.23b/tBloggerV0.23bSource.zip
2)复制代码到测试目录下
unziptBloggerV0.23bSource.ziprm-rf/var/www/www.cmdschool.org/*cp-rftBloggerV0.23bSource/*/var/www/www.cmdschool.org/
3)编辑windows系统的hosts(模拟DNS配置):
notepad%SystemRoot%\System32\drivers\etc\hosts
加入如下内容:
10.168.0.165www.cmdschool.org
4)浏览器测试
参考文献:
http://www.mono-project.com/
http://www.jexus.org/
官方安装脚本:
http://security.ivannet.com/linux/shell/centos6.x_mono_jexus_default.sh
官方安装教程:
http://www.linuxdot.net/bbsfile-3084
测试博客网站下载:
http://sourceforge.net/projects/tblogger/
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。