您好,登錄后才能下訂單哦!
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/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。