文章出處

最新更新參看: Centos 7.0 安裝Mono 3.4 和 Jexus 5.6

2012年初寫過一篇《32和64位的CentOS 6.0下 安裝 Mono 2.10.8 和Jexus 5.0》,2013年7月24日Mono 3.2發布了,3.2版本有很多期待的新特性,具體參看《跨平臺的 .NET 運行環境 Mono 3.2 新特性》,本文主要就是這篇文章的更新。

CentOS是一個基于RHEL的Linux發行版,其目的是為了提供一套免費與自由的企業等級Linux發行版。CentOS的名稱來自于「Community ENTerprise Operating System」,從名稱便可以知道這是一套由社區主導、并以企業級用戶為主要目標的操作系統。

目前CentOS是網頁服務器用途的主機中最廣為使用的一套Linux發行版。根據統計,目前大約有30%的Linux服務器使用CentOS。許多書籍、網站在介紹Linux的操作方式時,也會援引CentOS作為操作接口。通常CentOS都會在RHEL推出新版本之后,經過一小段時間的修改與測試之后再推出新的版本,而其版本編號大多也會跟隨RHEL的版本編號,例如目前最新版本的CentOS 6,其相對應的RHEL版本便是RHEL 6。

Jexus web server for linux 是一款基于.NET兼容環境,運行于Linux/unix操作系統之上,以支持ASP.NET為核心功能的高性能WEB服務器,用于替換Apache+mod_mono、Nginx+FastCgi 方案運行ASP.NET。Jexus不但具有跨平臺ASP.NET服務器這樣的標志性特征,同時還擁有內核級的安全監控、入侵檢測、URL重寫、無文件路由等一系列重要功能和專有特性。

Mono Xsp 和Jexus有什么區別呢:

  1. 速度方面: 對于ASP.NET網頁,大壓力訪問時Jexus處理速度更快; 對于靜態文件,Jexus遠快于XSP,而且對磁盤的要求和影響小N倍;
  2. 功能方面:   XSP是以ASP.NET測試工作開發的,功能單調,而Jexus是作為生產環境使用的真實的WEB服務開發的,功能全面,因此,xsp與Jexus在功能上可比性
  3. 穩定性方面: Jexus有良好的容錯和自動糾錯能力,可以長期不間斷運行,而XSP是單進程程序,沒有任何自動糾錯機制,無法保持不間斷運行。
  4. 安全性方面: Jexus有關鍵的入侵檢測功能,XSP沒有任何安全檢測功能,沒有可比性;
  5. 多站點支持: XSP支持一站,Jexus支持任意多網站。

Jexus for linux 有如下特點:

  1. 支持多種操作系統:Jexus最初的設計目標是“跨平臺的ASP.NET WEB服務器”,由于在Windows系統上,IIS已經是ASP.NET的優秀平臺,所以,當前的Jexus以支持Linux和FreeBSD等非Windows系統為主要設計目標。正因為這個原因,就Linux/FreeBSD等平臺的ASP.NET建設而言,Jexus具有特別重大的意義。
  2. 高性能:“高性能”是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服務器的處理能力和傳輸速度。
  3. 安全性:Jexus內核含有安全監控機制,絕大多數惡意訪問在進入網站前就會被Jexus直接禁止,這是Jexus有別于其它WEB服務器的又一大特色,所以,Jexus特別適合那些對安全要求較高的企業網站或政府網站使用。
  4. 穩定性:從運行機制而言,Jexus系統中,有專門檢測工作進程執行狀態的管理單元,任何一個進程退出或者任何一個ASP.NET網站應用程序域退出,被會被管理單元發現并得到重啟,從而保證了Jexus能夠7*24小時不間斷工作;從程序本身而言,Jexus程序代碼力求簡潔,BUG很少,同時,Jexus的每個版本在正式發布之前,都要經過嚴格的壓力測試,影響穩定性的因素,幾乎在正式發布之前即已被全部排除。
  5. 功能強大:Jexus支持URL重寫,支持多目標服務器的反向代理,支持PHP,支持GZIP壓縮傳輸,并且,可以利用不同端口、不同虛擬路徑、不同域名設置任意數量的網站,這些功能要素,表明了Jexus是一款功能完整而強勁的WEB服務器。
  6. 安裝、配置、操作極為簡單,服務社區化,各種問題能得到快速的處理,有良好的后續服務支撐能力。

本文是在Windows Azure云平臺上 使用CentOS 6.3 + Mono 3.2 + Jexus 5.4 的安裝簡要教程:

一、更新系統,安裝編譯環境,為編譯Mono源碼做準備。Mono 3.2的源碼編譯要求系統中存在一個Mono 2.4以上的環境,所以我們按照《32和64位的CentOS 6.0下 安裝 Mono 2.10.8 和Jexus 5.0》這篇文章編譯安裝完成2.10.8 環境,下面我簡要列一下:

1、 更新系統 

yum –y update

2、安裝Mono源碼安裝需要的庫

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 更新系統的時候就發生了如下錯誤:

--> Running transaction check ---> Package gc.x86_64 0:7.1-10.el6 will be installed    ---> Package glibc-headers.x86_64 0:2.12-1.80.el6_3.5 will be installed    --> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.                                                                                                 12-1.80.el6_3.5.x86_64    --> Processing Dependency: kernel-headers for package: glibc-headers-2.12-1.80.e                                                                                                 l6_3.5.x86_64    --> Finished Dependency Resolution    Error: Package: glibc-headers-2.12-1.80.el6_3.5.x86_64 (updates)               Requires: kernel-headers    Error: Package: glibc-headers-2.12-1.80.el6_3.5.x86_64 (updates)               Requires: kernel-headers >= 2.2.1    You could try using --skip-broken to work around the problem    ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:    kernel-2.6.32-220.13.1.el6.x86_64 has missing requires of kernel-firmware >= ('0                                                                                                 ', '2.6.32', '220.13.1.el6') 

解決方法:修改文件vi /etc/yum.conf 將exclude=kernel*前加注釋即可解決,此參數的意思是排除安裝或更新kernel開頭的軟件,而我們安裝gcc需要依賴kernel相關的軟件glibc-headers-2.12-1.80.el6_3.5.x86_64 。 

 

3、安裝Mono需要的GDI+兼容API的庫Libgdiplus

cd /usr/local/src/

wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2

tar -jxvf libgdiplus-2.10.tar.bz2

cd libgdiplus-2.10

./configure --prefix=/usr

make

make install

4.1、源碼安裝Mono

cd /usr/local/src/

wget http://download.mono-project.com/sources/mono/mono-3.2.1.tar.bz2

tar -jxvf mono-3.2.1.tar.bz2

./configure --prefix=/usr

make

make install

輸入 mono -V 如有mono版本信息,則安裝成功.

4.2、Git安裝 mono

cd /usr/local/src/

wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.bz2

tar -jxvf mono-2.10.8.tar.bz2

cd mono-2.10.8

./configure --prefix=/usr

make

make install

輸入 mono -V 如有mono版本信息,則安裝成功.

如果是64位版本的CentOS,在后續安裝好Jexus 5,啟動的時候會發生以下錯誤:

Sender: jws.exe, Sender TypeName: AppDomain
Exception Source: jws, TargetSite Name: A
Message is:
An exception was thrown by the type initializer for Mono.Unix.Native.Stdlib
StackTrace is:
  at A.G.A (System.String[] A) [0x00000] in <filename unknown>:0 
IsTerminating: True

建議你運行下命令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才行呢。

二、源碼編譯mono 升級到最新3.2 版本,我這里用了Git方式安裝,從Mono的主干上拉下來的代碼編譯后是3.3版本:

安裝前把mono所需的依賴包安裝好:

yum –y install build-essential automake autoconf libtool bison libglib2.0-dev libfreetype6-dev libfontconfig-dev gettext libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev libjpeg-dev

git clone git://github.com/mono/mono.git
./autogen.sh --prefix=/usr    [要注意目標文件夾,一定要指定同一個地方,強烈建議用 --prefix=/usr 參數]
make

編譯完后,進入安裝mono 2.10.8 的源文件夾,以管理員身份運行 “make uninstall”。

cd /usr/local/src/mono-2.10.8

sudo make uninstall

然后進入mono-3.2.0 目錄

sudo make install

運行mono -V命令就可以看下下面的結果表示安裝成功:

image

三、安裝Jexus 5.4 :從5.3.1版本開始,Jexus的安裝過程簡化了,內置了兩個新的腳本,它們分別是“install”和“upgrade”,對應原來的“安裝”和“升級”,將Jexus的安裝過程自動化了。jexus本身的安裝和升級方式并沒有發生更多的變化,因此對于已經習慣于5.3.1之前版本的使用方式的用戶,你們仍然可以采用之前的安裝方式。

wget http://www.linuxdot.net/down/jexus-5.4.tar.gz
tar -zvxf jexus-5.4.tar.gz

cd jexus-5.4
sudo ./install 

安裝完成~!!!在執行install腳本時,jexus默認是安裝到/usr/jexus/中,如果想安裝到其他目錄,可以在執行該腳本時增加一個目錄的參數(比如 sudu install /usr/local/jexus/)。對于升級就是執行upgrade腳本。

啟動jexus 檢查是否正常了

cd /usr/jexus

sudo ./jws start

image

看到了Jexus已經成功啟動的日志,我們還可以通過瀏覽器來檢查下:http://mono.cloudapp.net/info

image

四、放一個網站上去測試下,我這里放個小泥鰍的Mono兼容代碼版本上去,可以從這里獲取https://github.com/geffzhang/LoachsMono

使用VS編譯后通過Winscp 上傳到服務器,具體可以參看《使用WinSCP軟件在windows和Linux中進行文件傳輸》。

訪問http://mono.cloudapp.net/ 就可以看到我們的成功了:

image

 

最新更新參看: Centos 7.0 安裝Mono 3.4 和 Jexus 5.6


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()