在Linux(RHEL5.5)裡用mono2.8.2和jexus4.1運行.net3.5下的MVC2.0過程記錄

來源:互聯網
上載者:User

本篇文章做個記錄,從安裝Mono到運行好.net程式,到安裝好jexus,配置並且運行起windows下面基於.net3.5開發的mvc2.0程式的過程。但不同linux系統,方法可能會有不一樣,僅供參考。

之前我用虛擬機器裝的RHEL4.8版,裝好mono後,運行.net程式總是報錯,根據錯誤提示,安裝libgdiplus組件老是不成功,最後安裝好yum用戶端,卻還是有各種錯誤,最後我重新裝了RHEL5.5的linux版本,用yum才裝好很多需要的組件。

Linux系統安裝好後,安裝mono2.8.2,分別提示需要安裝gcc,g++環境,可以直接下載相應的rpm包自己安裝,但rpm包有依賴關係,很多時候需要在報錯後下載很多rpm包,於是我用yum來安裝需要的組件包,它自動把有依賴關係的包下下來並安裝,下面先說我在rhel5.5卸載Yum組件和安裝yum組件,因為預設的yum要提示註冊,因此重新下載安裝了新的yum,並且指定yum伺服器位址,安裝yum,主要參考了http://www.docin.com/p-74302564.html這個文檔,我blog裡也再寫一下。

先把系統的yum刪除掉,在終端裡輸入 rpm -qa|grep yum

,把列表裡的所有組件全部刪除掉,rpm -e ....... - nodeps,(....是找到的rpm包名稱,多個rpm用空格分開,如:

rpm -e yum-metadata-parser-1.1.2-3.e15.centos yum-3.2.22-26.e15.centos - noteps),

然後在中科大的網站(http://centos.ustc.edu.cn/centos/5.5/os/i386/CentOS)下載下面4個rpm包

yum-3.2.22-26.el5.centos.noarch.rpm,

yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm  ,

yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm ,

yum-updatesd-0.9-2.el5.noarch.rpm .

把下載下來的4個rpm包放到一個目錄,比如我放到/root/myfile/裡,然後終端cd進入該目錄,

執行rpm -ivh yum*.

安裝基本上結束了,需要下載設定檔,指定yum源,通過:http://centos.ustc.edu.cn/CentOS-Base.repo.5,下載下來,把該文檔改名為CentOS-Base.repo,並且放到/etc/yum.repos.d/目錄下,由於該文檔時所有版本的都用該檔案,因此文檔裡用了$releasever作為版本變數,我現在把文檔裡$releasever替換為5.5,然後儲存。如果一切正常,yum就可以用了。

mono2.8.2可以在這裡http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.2.tar.bz2  下載源碼,並執行安裝。

我把它放到/root/src/目錄裡,cd進入該目錄,tar xjf mono-2.8.2.tar.bz2,執行解壓,執行./configure --prefix=/usr。

我機器分別提示需要安裝gcc,g++,bison,我這裡就用yum來安裝他們了,尤其是gcc,關聯了很多包,直接下載rpm包安裝,很麻煩,我在命令列裡輸入yum install gcc,大約安裝了7個包,過了一會安裝成功後,會顯示complete!,然後安裝g++,安裝g++,是輸入yum install gcc-c++安裝。最後yum install bison,等待幾分鐘,就安裝好了。

然後就可以安裝Mono了,configure完成後,我這裡比較慢,花了好幾十分鐘,然後再make,再make install,等了很久,終於安裝成功了,可以再終端輸入mono --version,查看到正確顯示,比如我這裡顯示:

Mono JIT compiler version 2.8.2(.........),說明安裝好了。

但真正運行windows下開發的.net程式,還要安裝libgdiplus及相關組件,之前我在RHEL4.8裡,下載了很多源碼包來安裝,比如cairo,freetype,libgdiplus等等,但安裝起總是報各種各樣的錯誤,最後還是用yum安裝好的。

安裝libgdiplus,我是用yum來安裝好的,yum install libgdiplus,安裝好後,就可以運行windows開發的.net程式了。

但運行過程中,可能會報System.DllNotFoundException: gdiplus.dll 錯誤,需要把一個組件重新命名,輸入命令:find / -name "*libgdiplus*",查詢libgdiplus相關檔案,如果這個目錄/usr/lib/libgdiplus.so.0有這個檔案,輸入命令:mv /usr/lib/libgdiplus.so.0 /usr/lib/libgdiplus.so,把這個複製一份,並且改名為libgdiplus.so即可。再輸入ldconfig -p |grep libgdiplus命令,這個命令具體含義我也不清楚,我認為是查詢當前libgdiplus組件是否正確關聯吧,如果顯示libgdiplus.so.0 (libc6) => /usr/lib/libgdiplus.so.0,即表示關聯成功了,現在可以正確的運行.net程式了。

然後安裝jexus,一個類試IIS的web伺服器,可以在http://linux.j66.net/down/jexus-4.1.tar.gz下載現在的最新版本4.1,可以wget http://linux.j66.net/down/jexus-4.1.tar.gz下載到指定目錄,再解壓tar -zxvf jexus-4.1.tar.gz,再安裝。

一般把jexus加壓後的檔案放到其他一個指定目錄,比如放到/etc/jws,輸入命令:mkdir /etc/jws,把加壓後的檔案全部放到該目錄裡,jws.regsvr、jws.start、jws.restart、jws.stop 設為可執行,我現在系統裡幾個檔案已經自動為可執行了,註冊全域程式集,直接在該目錄輸入:./jws.regsvr。

現在在/etc/jws裡有兩個設定檔了,第一個是jws目錄下的jws.conf,另一個是/jws/siteconf/裡的預設的default檔案,jws.conf命名固定了,指向網站設定檔和網站記錄檔路徑,一般預設指定為網站設定檔在siteconf裡,它自動從該目錄下的所有檔案讀取配置資訊,比如我現在又兩個檔案,第一個預設的default,第二個是我建立的mysite,default檔案內容如下:

#for default

port=80

root=/ /var/www/default

hosts=*

.....下面的都是#開始的注釋資訊,可以選的配置資訊。

mysite裡的內容如下:

port=81

root=/ /var/www/mysite

hosts=*

....下面的都是#開始的注釋資訊,可以選的配置資訊。

表示不同連接埠,映射到不同目錄,注意root=/ /var/www....,兩個//中間有個空格“/ /var.....”,第一個/表明該連接埠的絕對目錄,空格後面為使用者輸入/絕對目錄時,映射到這個檔案目錄位置。

最後測試性的輸入mono /etc/jws/jws.exe,把jws進程開啟,可以ctrl+c停止服務。開啟服務後,把自己的網站程式放到/var/www/對應目錄下,比如default檔案夾下,mysite檔案夾下,就可以訪問了。

這裡先複製一份別人寫好的jexus操作方法:

啟動jexus:

1、基本的啟動命令的格式(僅作例子,不建議使用)
mono /etc/jws/jws.exe
如:mono /etc/jws/jws.exe
這個命令運行後,用 Ctrl+c 按鍵組合退出程式

2、以“服務”方式進行後台運行, 只需要基本命令後加一空格再加一“&”號(僅作例子,不建議使用)
mono /etc/jws/jws.exe &

3、開機自動啟動:
在/etc/rc.local 中加入下面這一行命令:
mono /etc/jws/jws.exe >/dev/null 2>&1 &

最簡單最常用的辦法是在“/etc/rc.local”檔案中添加下面一句:
/etc/jws/jws.start

(注意:不同的Linux系統可能有不同的啟動方式,使用者應根據不同系統的特點靈活定製)
(提示:jws.start是指令檔,使用者可以根據自己系統的特點去適當修改它,以便其啟動)

4、使用指令碼操作Jexus(推薦使用):
Jexus內建了三個指令碼,分別是:

/etc/jws/jws.start
/etc/jws/jws.restart
/etc/jws/jws.stop

jws.start   的作用是啟動JEXUS服務,可以寫入rc.local檔案中,從而達到開機自啟動的目的;
jws.stop    的作用是停止Jexus的運行。
jws.restart 的作用是重啟Jexus;

注意,這些指令碼需要具有可執行許可權,同時操作者也必須擁有管理員(root)許可權。
使用指令碼時,請一定要注意Jexus安裝資料夾的位置,指令碼預設的檔案夾是“/etc/jws”,如果你的路徑不同,請修改指令碼內容。
卸載:
1、登出全域程式集jxAspx.dll,命令是:
    sudo gacutil -u jxAspx
2、在rc.local檔案中刪除你手工添加的開機自動啟動Jexus的命令列
3、刪除 /etc/jws檔案夾及全部內容。

 

根據我當前的配置,80,81連接埠已經映射到不同目錄了,我在windows下開發的基於.net3.5的mvc2可以直接跑起來了,跑出來的如下:

 

做個記錄,以備以後參考。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.