Linux(CentOS 6.7)下配置Mono和Jexus而且部署ASP.NET MVC三、四、5和WebApi(跨平臺)

1.開篇說明

  a. 首先我在寫這篇博客以前,已經在本身本地配置了mono和jexus而且成功部署了asp.net mvc項目,我也是依賴於在網上查找的各類資料來配置環境而且部署項目的,而其在網上也已有了不少這方面的文章,故而我就想我是寫仍是不寫呢,可是想來想去,我仍是寫一下吧,由於網上的文章太雜亂,不是最新版本,不是很整齊而且也可能會遇到各類各樣的問題,因此我決定寫一篇從無到部署項目上線的文章而且會友情提示不少內容以及解決方案,但願也可以融入本身的思想。
  b. 由於如今跨平臺是一個趨勢,網上學習的人員不少,我可能寫的很差,但願你們見諒,下面開始從無到有的過程吧。

2.Mono和Jexus簡單說明

  a. Mono是由Novell公司(由Xamarin(已被微軟收購而且將會開源,前途一片光明)發起,一個致力於開創.NET在Linux上使用的開源工程。它包含了一個C#語言的編譯器,一個CLR的運行時和一組類庫,而且實現了ADO.NET和ASP.NET,可以使的開發人員在Linux下用C#開發程序。)主持的項目,該項目的目標就是建立一系列符合標準的ECMA(Ecma-334和Ecma-335)的.NET工具,包括C #編譯器和共同語言(CL 即 Common Language)執行平臺(Platform),與微軟的.Net不一樣:Mono項目不只能夠運行於Windows系統內,還能夠運行於Linux、 FreeBSD、Unix、Mac OS X和Solaris,能夠說是完徹底全的跨平臺。html

  b. Jexus即Jexus Web Server,簡稱JWS,是再linux平臺上的一款ASP.NET WEB服務器,Jexus for linux有以下特色:linux

    b.1 支持多種操做系統:Jexus最初的設計目標就是"跨平臺的ASP.NET WEB服務器",因爲在window系統上,IIS已是ASP.NET的優秀平臺,因此當前的Jexus以支持Linux和FreeBSD等非Windows系統爲主要設計目標。c++

    b.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服務器的處理能力和傳輸速度。web

    b.3 安全性:Jexus內核含有安全監控機制,絕大多數惡意訪問在進入網站前就會被Jexus直接Pass掉,這是Jexus有別於其它Web服務的一大特點。shell

    b.4 穩定性:從運行機制而言,Jexus系統中,有專門監測工做進程執行狀態的管理單元,任何一個進程退出或者任何一個ASP.NET網站應用程序域退出,就會被管理單元發現而且重啓,從而保證了Jexus可以時時刻刻不間斷的工做,舊程序自己而言,Jexus程序的代碼力求簡潔,Bug不多,同時,Jexus的每一個版本在正式發佈以前,都要進過嚴格的壓力測試,影響穩定性的因素,幾乎在正式發佈以前既已被所有排除。vim

    b.5 功能強大,Jexus支持URL重寫,支持多目標服務器的反向代理,支持PHP,支持GZIP壓縮傳輸而且能夠利用不一樣端口,不一樣虛擬路徑,不一樣域名設置任意數量的網站。centos

    b.6 安裝、配置、操做即爲簡單,服務社區化,各類問題都能快速的處理,有良好的後續服務支撐能力。瀏覽器

    b.7 在官網下還有一些好處請查看:http://www.linuxdot.net/bbsfile-3084緩存

      備註:部份內容來自網絡,感謝張善友等社區活躍人物。安全

    c. Mono官網:http://www.mono-project.com/

    d. Jexus官網:http://www.jexus.org/

    e. 工欲善其事必先利其器,那麼下面咱們來進行配置mono和Jexus而且部署MVC網站,本次操做須要用到的軟件以及系統以下所示:虛擬機(Vmware)、虛擬機中安裝的Centos系統(64位)(IP:192.168.37.138)、Xshell、Xftp至於如何使用它們咱們下面會說到。

3.  配置Mono須要的GDI+兼容API的庫Libgdiplus

  a. 經過上面簡單的哦介紹以後,咱們開始配置mono和jexus,在配置mono以前,首先來配置Libgdiplus。

  b. 使用XShell鏈接Centos,而後輸入更新系統命令:yum -y update將低版本的系統升級(個人從centos6.4升級到6.7),6.4下配置也能夠。

  c. 執行完畢以後,在安裝必要的軟件,命令以下:

    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

    備註:可能電腦已經安裝了這些文件,可用rpm -qa libexif*命令查看,可是這裏爲了確保萬無一失,直接所有執行。

  d. 執行完畢以後跳轉到local下面建立屬於本身的文件夾kencery,在此文件夾下面建立libgdiplus文件夾,命令以下:

        d.1 (1):cd usr/local/    (2):mkdir kencery    (3):cd kencery/   (4):mkdir libgdiplus  (5):cd libgdiplus/

  e. 使用命令wget下載最新版本的libgdiplus,命令以下,下載完成以後將包解壓(至於安裝包裏面是什麼內容,請自行使用命令ls -l查看),以下圖所示:

    e.1 wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz

    e.2 tar -zxvf libgdiplus-4.2.tar.gz

      

    備註:能夠打開http://download.mono-project.com/sources/libgdiplus/此網站查看全部的文件,選擇想要下載的文件,我這裏下載的是最新的libgdiplus。

  f. 進入libgdiplus-4.2(cd libgdiplus-4.2)文件下,執行下面的命令進行安裝

    f.1 ./configure --prefix=/usr

    f.2 make

    f.3  make install

4.  配置Mono

  a. Mono的安裝在整個 過程當中時間比較長,請你們耐心安裝。

  b. cd跳轉到文件夾kencery,在此文件夾下面建立mono文件夾,命令以下:

    b.1 (1):cd /usr/local/kencery  (2):mkdir mono  (3):cd mono/

  c. 使用命令wget下載最新版本的mono,命令以下,下載完成以後將包解壓(至於安裝包裏面是什麼內容,請自行使用命令ls -l查看),以下圖所示:

    c.1 wget http://download.mono-project.com/sources/mono/mono-4.4.0.148.tar.bz2

    c.2 tar -jxvf mono-4.4.0.148.tar.bz2

      

    備註:能夠打開http://download.mono-project.com/sources/mono/此網站查看全部的文件,選擇想要下載的文件,我這裏下載的是最新的mono。

  d. 進入mono-4.4.0(cd mono-4.4.0)文件下,執行下面的命令進行安裝

    d.1 ./configure --prefix=/usr

    d.2 make (發現會出現不少警告,不用擔憂,不會影響到項目部署)

    d.3 make install

  e. 上述命令執行完成以後,輸入mono -V若是含有mono的版本信息,則說明安裝成功,版本信息如圖所示:

    

5.  配置Jexus

  a. 當mono配置完成而且測試沒有問題的狀況下,這時候咱們就能夠對Jexus進行配置了。

  b. cd跳轉到文件夾kencery,在此文件夾下面建立jexus文件夾,命令以下:

    b.1 (1):cd /usr/local/kencery  (2):mkdir jexus (3):cd jexus/

  c. 使用命令wget下載最新版本的jexus,命令以下,下載完成以後將包解壓(至於安裝包裏面是什麼內容,請自行使用命令ls -l查看),以下圖所示:

    c.1 wget http://www.linuxdot.net/down/jexus-5.8.1.tar.gz

    c.2 tar -zxvf jexus-5.8.1.tar.gz

      

      備註:在官網下找到最新的jexus下載。

  d. 進入jexus-5.8.1(cd jexus-5.8.1)文件下,執行下面的命令進行安裝

    d.1 sudo ./install

    備註:在執行install腳本時,jexus默認是安裝到/usr/jexus/中,若是您想安裝到自定義的目錄,能夠在執行該腳本的時候增長一個目錄參數(sudo ./install /usr/local/kencery/jexus/)

  e. 由於Jexus是一個服務,故而能夠控制整個服務的啓動、中止、重啓,命令以下,請自行測試

    e.1 啓動 sudo /usr/jexus/jws start

    e.2 中止 sudo /usr/jexus/jws stop

    e.3 重啓 sudo /usr/jexus/jws restart

  f. 固然也能夠控制指定網站的啓動,中止,重啓,命令以下:請自行測試

    f.1 啓動 sudo /usr/jexus/jws start website(網站名稱)

    f.2 中止 sudo /usr/jexus/jws stop sizeName(網站名稱)

    f.3 重啓 sudo /usr/jexus/jws restart sizeName(網站名稱)

  g. 使用命令:sudo /usr/jexus/jws start啓動,若是jexus啓動OK,則說明安裝成功了。

  h. 當jexus啓動成功,這時候咱們想在外面訪問jexus,可是瀏覽器訪問出錯,使用ping 域名是能夠ping通,可是瀏覽器訪問就是失敗(提示:沒法訪問此網站,192.168.37.138的響應時間過長),這是爲何呢?這是由於jexus默認是80端口,而系統安裝完成以後80端口是不容許外界訪問的,故而訪問不了,設置將80端口開放使外界能夠訪問。

    h.1 cd /etc/sysconfig/

    h.2 vim iptables 修改而且保存,如圖所示:

      

    h.3 重啓服務  service iptables restart

  i. 當h完成以後,重啓jexus,輸入以下網址訪問,如圖所示,則說明jexus安裝徹底成功,接下來咱們就須要部署ASP.NET MVC項目了。

    

  備註:快捷安裝方法(一對命令將會安裝成功Jexus)

    1.安裝:sudo curl jexus.org/release/install | sh

    2.更新:sudo curl jexus.org/release/upgrade | sh

     說明:使用這種命令的安裝方法將會吧Jexus安裝到/usr/jexus 位置。

 

-------------------------------------華麗的分割線—>下面將ASP.NET MVC項目部署到Jexus下-------------------------------------------------------

6.  部署ASP.NET MVC項目

  a. 當mono配置完成而且測試沒有問題的狀況下,這時候咱們就須要向其部署MVC項目,那麼如何部署項目呢?這塊很重要

  b. 那麼怎麼部署一個新的網站程序呢?

    b.1 首先須要創建一個"網站配置文件",jexus安裝的路徑下(我本機安裝在/usr/jexus)下有一個siteconf文件夾,這裏面的每個文件都是一個網站的配置文件,每個配置文件就表明一個網站,在(/usr/jexus/siteconf/)中,就已經有一個默認的網站配置文件,文件名爲:"default";你能夠修改這個配置文件,也能夠將這個配置文件賦值並修改成一個新的站點。

    b.2 在配置文件中,有關鍵的三項是必填項:

      port:端口號定義,端口號是一個整數,通常是80,也能夠是65535如下的其它整數,可是這個端口號必須沒有其它服務程序佔用。

      root:虛擬根路徑和物理根路徑的定義,根路徑由兩部分組成,中間用空格分開,空格前表示這個網站訪問時的虛擬根路徑(通常都是"/",不用修改),空格後是存放這個網站內容的文件夾的物理路徑(好比:"/var/www/default/")

      hosts:域名定義,填寫訪問這個網站的域名,若是有多個域名,域名間用英文逗號分開,同時還能夠用"泛域名",好比:"*.mysite.com"。

      網站名稱:jexus把網站配置文件的名稱做爲網站名。

    b.3 首先拷貝一份default文件,拷貝到jexus安裝的路徑下的siteconf下,而後修改裏面的內容,命令以下:

      (1):cd /usr/jexus/siteconf/       (2):cp default  mms     (3):vim mms    修改以後保存如圖所示:

          

    b.3 這時候在jexus中咱們將網站配置文件已經配置完成,可是尚未上傳網站,這時候咱們須要上傳網站,上傳的路徑如上圖所示在/var/www/mms下,若是沒有文件,則建立便可。

  c. Visual Studio部署網站

    c.1 首先咱們將下面的項目遷移到Jexus下,此項目不是Demo,是一個在實際場景中使用的項目,故而結構就不截圖了,只簡單將主項目截圖,項目結構如圖所示:

      

    c.2 而後使用VS的發佈功能,將項目發佈,和通常的項目發佈如出一轍,這裏就不作詳細講解了,請參考: http://blog.sina.com.cn/s/blog_8ce459cd0102v1kx.html,在發佈的時候請注意設置選項下的配置,如圖所示:(我剛開始配置始終不成功就是由於這裏配置的緣由)

      

    c.3 項目發佈完成以後,刪除無用的文件信息,如圖所示:

         

  d.  將項目遷移到Jexus

    d.1 首先在Linux下跳轉到須要放置項目的目錄下(cd /var/www/mms),打開XFtp,將網站文件上傳都此目錄下,如圖所示:

           

    d.2 其次咱們須要開放8080端口,在文章上面已經說過如何開放端口80,參考開放便可,這裏就不在累贅了。

    d.3 使用jexus的重啓功能從新啓動Jexus或者啓動網站(./jws start或者./jws start mms(若是這個訪問仍是有問題,則使用前面的命令進行啓動))

  e.  部署完成後訪問項目

    e.1  部署完成以後訪問發現出現了以下圖所示的錯誤,出現了很亂的內容,這是由於Linux下是區分大小寫的,故而咱們須要配置jexus,使其大小寫均可以轉換,那麼會如何配置呢?

      

    e.2 打開jexus的配置文件(vim jws),取消# export MONO_IOMAP="all"這段內容的前面的#,保存,而後從新啓動jexus(./jws restart),以下圖所示:

      

    e.3 最後咱們在瀏覽器中訪問(http://192.168.37.138:8080/),如圖所示:項目已經完全遷移到Jexus下。

      

    備註:我對項目進行了簡單的操做,沒有遇到任何問題。

  f.  說明:本博客部署的項目是ASP.NET MVC5項目,還能夠部署MVC三、4和WebApi,歡迎你們嘗試,若是遇到什麼問題解決不了,歡迎聯繫我諮詢,咱們共同窗習。

    Jexus的發展很是迅速,之前在使用Jexus下必須安裝mono,如今已經出現了不須要安裝mono就可使用的Jexus版本了(固然仍是依賴於mono,只不過是Jexus內部內置了一個小的mono環境),學習地址:http://www.cnblogs.com/yunei/p/5452120.html

      備註:本地已作測試,按照宇內大師兄的文章去實現,沒有任何問題,詳細請參考上面的博客。

    最後感謝張善友的文章給個人思路和實現:http://www.cnblogs.com/shanyou/p/3218611.html

 

    天天一點點都是進步

      若是文章哪裏存在問題,歡迎你們指出來,我會在第一時間修改。

相關文章
相關標籤/搜索