CentOS 6.3下 安裝 Mono 3.2 和Jexus 5.4

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

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

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

Mono Xsp 和Jexus有什麼區別呢:git

  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 有以下特色:github

  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 的安裝簡要教程:web

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

一、 更新系統 瀏覽器

yum –y update緩存

二、安裝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 。

 

三、安裝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

四、安裝 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才行呢。

2、源碼編譯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

3、安裝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

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

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

訪問http://mono.cloudapp.net/ 就能夠看到咱們的成功了:

image

相關文章
相關標籤/搜索