如何部署基于Centos 6.x的ASP.NET环境

.NET

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 / -name jws.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/ #反向代理

# Jexus php fastcgi address is '/var/run/jexus/phpsvr'
#######################################################
fastcgi.add=php|socket:/var/run/jexus/phpsvr #php的fastcgi网关

# php-fpm listen address is '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 -y update
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
yum install -y ntp wget

3.3 安装步骤

In ser:

3.3.1 创建工作文件夹

mkdir ~/ctmj
cd ~/ctmj

3.3.2 ntp时间校准

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate -u pool.ntp.org

3.3.3 关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

3.3.4 下载安装包

wget -c http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.9.tar.bz2
wget -c http://download.mono-project.com/sources/mono/mono-3.10.0.tar.bz2
wget -c http://linuxdot.net/down/jexus-5.6.3.tar.gz

3.3.5 GDI+组件编译安装

tar jxf libgdiplus-2.10.9.tar.bz2
cd libgdiplus-2.10.9/
./configure --prefix=/usr
make && make install
ldconfig
cd ..

3.3.6 mono编译安装

tar jxf  mono-3.10.0.tar.bz2
cd mono-3.10.0
./configure --prefix=/usr
sed -i 's/#define HAVE_LOCALCHARSET_H 1/#define HAVE_LOCALCHARSET_H 0/g' eglib/config.h
make && make install
cd ..

mono -V

显示如下:

Mono JIT compiler version 3.10.0 (tarball Thu Jan  7 21:58:07 EST 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

3.3.7 jexus编译安装

tar zxf jexus-5.6.3.tar.gz
cd jexus-5.6.3
./install
cd ..
/usr/jexus/jws start

3.3.8 设置服务管理脚本

1)创建服务脚本

vim /etc/rc.d/init.d/jexus

输入如下内容:

#!/bin/bash
#chkconfig: 2345 10 90 
#description: Jexus Server
case "$1" in
start)
  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
  ;;
*)
  echo "Usage: jexus {start|stop|restart|status}"
  exit 1
  ;;
esac

注,以上脚本必须包含2-3行,否则脚本无法注册:
其中2345是默认启动级别,级别有0-6共7个级别。
— 等级0表示:表示关机   
— 等级1表示:单用户模式   
— 等级2表示:无网络连接的多用户命令行模式   
— 等级3表示:有网络连接的多用户命令行模式   
— 等级4表示:不可用   
— 等级5表示:带图形界面的多用户模式   
— 等级6表示:重新启动
10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。
2)注册服务启动脚本

chkconfig --add jexus

3.4 jws服务的配置

3.4.1 配置应用程序目录

mkdir -p /var/www/www.cmdschool.org
echo "www.cmdschool.org" > /var/www/www.cmdschool.org/index.html

3.4.2 配置虚拟目录

vim /usr/jexus/siteconf/www.cmdschool.org

加入如下配置:

port=80
root=/ /var/www/www.cmdschool.org
hosts=www.cmdschool.org
indexes=Default.aspx,index.aspx,index.html

3.4.3 重启服务

/etc/init.d/jexus restart

3.4.4 配置防火墙

1)编辑防火墙

vim /etc/sysconfig/iptables

加入如下配置:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

2)重启防火墙

/etc/init.d/iptables restart

3.4.5 静态测试

In Client:
1)模拟dns配置

vim /etc/hosts

加入如下配置:

10.168.0.165 www.cmdschool.org

2)测试服务

curl www.cmdschool.org

显示如下:

www.cmdschool.org

3.4.6 C#项目测试

1)下载开源的博客网站代码:
http://sourceforge.net/projects/tblogger/
或者直接下载:

wget http://nchc.dl.sourceforge.net/project/tblogger/tblogger/v0.23b/tBloggerV0.23bSource.zip

2)复制代码到测试目录下

unzip tBloggerV0.23bSource.zip
rm -rf /var/www/www.cmdschool.org/*
cp -rf tBloggerV0.23bSource/* /var/www/www.cmdschool.org/

3)编辑windows系统的hosts(模拟DNS配置):

notepad %SystemRoot%\System32\drivers\etc\hosts

加入如下内容:

10.168.0.165 www.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/

没有评论

发表回复

.NET
如何部署dotnet的web应用?

1 前言 一个问题,一篇文章,一出故事。 笔者最近接收到需要部署dotnet的web程序,于是整理此 …

.NET
如何部署二进制dotnet(.NET)?

1 基础知识 1.1 .NET的基础概念 1.1.1 .NET的概念 – .NET是一个 …

.NET
如何部署Docker .NET Core?

1 基础知识 1.1 基于Docker的.NET简介 – .NET Core可运行于Do …