1. 程式人生 > >Linux下配置Mono和Jexus並且部署ASP.NET MVC5

Linux下配置Mono和Jexus並且部署ASP.NET MVC5

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,可以說是完完全全的跨平臺。

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

b.1 支援多種作業系統:Jexus最初的設計目標就是"跨平臺的ASP.NET WEB伺服器",由於在window系統上,IIS已經是ASP.NET的優秀平臺,所以當前的Jexus以支援Linux和FreeBSD等非Windows系統為主要設計目標。

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

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

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

b.5 功能強大,Jexus支援URL重寫,支援多目標伺服器的反向代理,支援PHP,支援GZIP壓縮傳輸並且可以利用不同埠,不同虛擬路徑,不同域名設定任意數量的網站。

b.6 安裝、配置、操作即為簡單,服務社群化,各種問題都能快速的處理,有良好的後續服務支撐能力。

備註:部分內容來自網路,感謝張善友等社群活躍人物。

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.5升級到6.8)。

 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.2 tar -zxvf libgdiplus-4.2.tar.gz

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檢視),如下圖所示:

mono原始檔可能不好下載  建議在百度網盤離線下載然後下載檔案並拷貝

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

 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.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)

備註:我對專案進行了簡單的操作,沒有遇到任何問題。

 f.  說明:本部落格部署的專案是ASP.NET MVC5專案,還可以部署MVC3、4和WebApi,歡迎大家嘗試,如果遇到什麼問題解決不了,歡迎聯絡我諮詢,我們共同學習。

Jexus的發展非常迅速,以前在使用Jexus下必須安裝mono,現在已經出現了不需要安裝mono就可以使用的Jexus版本了(當然還是依賴於mono,只不過是Jexus內部內建了一個小的mono環境),學習地址:http://www.linuxidc.com/Linux/2016-05/130920.htm

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

這篇文件是本人轉的,親自嘗試可以使用。注:可能會有dll報版本不正確,這個需要從packages資料夾中找到對應dll重新複製 即可。

相關推薦

Linux配置MonoJexus並且部署ASP.NET MVC5

1.開篇說明 a. 首先我在寫這篇部落格之前,已經在自己本地配置了mono和jexus並且成功部署了asp.net mvc專案,我也是依賴於在網上查詢的各種資料來配置環境並且部署專案的,而其在網上也已有了很多這方面的文章,故而我就想我是寫還是不寫呢,但是想來想 去,我還是寫一下吧,因為網上的文章太雜亂,不是最

raspberrypi(樹莓派)上安裝monojexus,執行asp.net程式

參考網址: http://www.linuxdot.net/ http://www.cnblogs.com/mayswind/p/3279380.html http://www.raspberrypi.org/phpBB3/viewtopic.php?t=37174 1、樹莓派上安裝mono環境,使其

Linux配置GOROOTGOPATH

Linux下配置GOROOT和GOPATH  2017-06-06  0 Comments  2,286 Views  0 Times 更好的使用Go,需要設定環境變數 vim ~/.bash_profile 在前面新增

Linux配置Nodejsnpm及安裝pemolo

1、安裝nodejs 下載後,使用tar命令解壓檔案(tar zxvf [下載的檔名稱]); 解壓後進入(cd命令)解壓出來的目錄(不知道目錄名稱可以使用ls命令檢視) 使用./configure命令檢查環境是否符合Nodejs的編譯需要; make 編譯; make i

linux配置JRETomcat環境變數

  ######################################### #!/bin/bash #SCRIPT: installTomcat.sh #AUTHOR: #DATE: 2012-03-06 #PLATFORM: Not platform depe

Linux配置jdktomcat環境後訪問tomcat主頁出現500的錯誤

       找了若干種解決辦法都沒有解決我使用的是jdk8和tomcat7,網上有人說tomcat的版本最好比jdk的高, 所以索性重新裝,操作步驟的網址: http://www.cnblogs.c

mono+jexus 部署Asp.Net Mvc5之CompilationException2

好不容易在ubuntu上搭建了mono+jexus,欣喜若狂的部署上釋出的網站,急忙開啟,成功執行。 但是別高興的太早,當我開啟WebApi幫助頁時出現了CompilationException。 一時間無頭緒了,而且提示非常少了,只好去找找解決方法,最後在Stack OverFlow上找到了解決方法

Db2數據庫在Linux的安裝配置

fig 用戶密碼 oca authent linux token reat local ken 一.DB2數據庫的安裝和配置: 1.安裝完成後,需要增加三個操作系統的組和三個操作系統用戶,如下: groupadd -g 999 db2iadm1 #(管理實例的組) gro

LINUX Jexus部署ASP.NET Core WebApi

usr netcore stat /tmp tools onf 節點 提示符 微軟 服務器:LINUX ubuntu16.04 開發軟件:VS2015 Update3 dotnet sdk: DotNetCore.1.0.0-VS2015Tools.Previe

Linux更換jdk配置環境變量

pat 出現 下載jdk cnblogs clas home log code 文件 不需要刪除舊的jdk,安裝新版本的jdk,再更新環境變量即可。 Linux下安裝jdk,步驟如下 1:下載jdk包:本章使用的為後綴為tar.gz的文件(不需要安裝),如jdk-

LinuxMongodb安裝啟動配置

ever and tpi efault osi title 客戶端 避免 輸入數據 1.下載安裝包 wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz 下載完成後解壓縮壓縮包 tar

python在windowslinux的安裝配置

str net .net cat ria 技術 連接 top 成功 一、windows下安裝python3.6 安裝編輯器:Ecplise+pydev插件 Eclipse是寫JAVA的IDE, 這樣就可以通用了,學習代價小。 學會了Eclipse, 以後寫Pytho

Linux更換jdk配置環境變數

不需要刪除舊的jdk,安裝新版本的jdk,再更新環境變數即可。 Linux下安裝jdk,步驟如下    1:下載jdk包:本章使用的為字尾為tar.gz的檔案(不需要安裝),如jdk-8u111-linux-x64.tar.gz    2: 把jdk檔案儲存至Li

Linux配置MySQL、MongoDB、Tomcat等軟體使用

配置阿里雲的yum倉庫 獲取倉庫配置 wgCentos-7.repoet http://mirrors.aliyun.com/repo/ 修改Linux預設的yum配置 將Centos-7.repo中的內容拷貝到/etc/yum.repo.d/CentOS-Base.repo檔案

Linuxredis安裝部署

1.基礎知識  redis是用C語言開發的一個開源的高效能鍵值對(key-value)資料庫。它通過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止redis支援的鍵值資料型別如下 字串、列表(lists)、集合(sets)、有序集合(sorts sets)、雜湊表(hashs) 2.red

LinuxMongoDB安裝配置詳解

1、建立MongoDB的安裝路徑 在/usr/local/  建立資料夾mongoDB 2、上傳檔案到Linux上的/usr/local/source目錄下 3、解壓檔案 進入到/usr/local/source目錄,執行如下命令:  tar -zxvf m

Mysql 在 windows linux 的安裝配置

這篇文章講解 Mysql 在 Windows 下的手動安裝和在 Linux(CentOs) 下的下載、配置、連線。還包括預設字符集等的設定。 首先,都要執行移除資料庫的操作 mysqld --remov

LinuxMongoDB安裝配置詳解(一)

一、MongoDB的安裝 1.下載安裝包 下載方式: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz 解壓縮壓縮包: tar zxvf mongodb-linux-x

LinuxMongodb安裝啟動配置,遠端訪問等

Linux下Mongodb安裝和啟動配置(儘量不要使用root使用者) 1、下載解壓mongodb 解壓mongodb tar -xvf mongodb-linux-x86_64-amazon-3.6.0.tgz 2、安裝準備

Linuxjava使用配置

一、檢視jdk安裝目錄 [[email protected] ~]# whereis java java: /usr/bin/java /usr/local/java #java執行路徑 [[email protected] ~]# which java