歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 將ASP.Net項目移植到Linux的配置過程

將ASP.Net項目移植到Linux的配置過程

日期:2017/2/28 17:09:11   编辑:Linux教程

目的:

把公司用Visual Studio 2005開發的項目通過mono移植並運行在Linux平台上。

前言:

以前沒接觸過Linux,更不要說在Linux上做什麼移植和用mono做項目(更重要的這些都是英文的東西,T_T英語水平不好)。好在網絡部之前就裝好一台Linux的機器,系統是openSUSE,因為openSUSE是Novell的,所以估計裡面的mono環境已集成在裡面,所以直接拿來用就行了,網上也有關於mono, xsp,mod_mono等的安裝教程。

Mono的1.2.5版本沒有ASP.NET的Desiger,但網上說可以在vs上開發移植到Linux上用。

環境:

openSUSE, mono, xsp2,mod_mono,apache2,moma

說明:xsp是mono自帶的一個簡單的web服務器,apache則是一個功能強大的web服務器(http服務器),mod_mono是一個模塊用於apache(apache是模塊化設計),關於apache後面會詳細介紹。

英文資料是這樣說的:

Mod_Mono is an Apache 1.3/2.0/2.2 module that provides ASP.NET support for the web's favorite server, Apache (http://httpd.apache.org).

XSP is a standalone web server written in C# that can be used to run your ASP.NET applications with minimal effort.

配置過程:

之前在openSUSE的虛擬機上運行其自帶的實例(桌面上的ASP.NET.Source文件夾,裡面有一個index.html文件,算是個幫助文檔),實例代碼放到/srv/www/htdocs路徑上,在浏覽器輸入URL:http://localhost/directoryname/page.aspx結果有些實例可以運行有些則不可以,而且還以為在Visual Studio 2005上開發的程序直接放到那個路徑上就可以直接運行,結果不行,錯誤提示應該是說找不到路徑。

那些不能運行的實例可能由於虛擬機的問題,所以就用一台直接安裝上openSUSE系統,果然實例都可以運行,但自己在Visual Studio 2005上做的程序還是不行。分析原因得出:當初想在Visual Studio 2005上做的程序是不是不能直接拿到Linux上用而還要做些什麼修改之類(實際上並不是這樣),/srv/www/htdocs是用於apache服務器的路徑,要做相應的配置(一頭霧水)。所以就用mono自帶的web服務器xsp,mono的官方網站就有介紹包括用法,http://www.mono-project.com/XSP,具體命令和執行如下。

# cd 路徑

路徑 # xsp2

Listening on address: 0.0.0.0

Root directory: 路徑

Listening on port: 8080

Hit Return to stop the server.

浏覽器輸入URL:http://localhost:8080/page.aspx

值得注意的是C#1.0用xsp而C#2.0就用xsp2。結果用vs2005做的一個小程序可以順利運行,用Production_System系統做測試時一般頁面正常顯示但BillBoard的頁面就不能顯示,沒想到解決辦法就嘗試用apache。

有關apache安裝和配置的中文資料有很多,但提及到用於.net的並沒多少,只有零星的一些,所以只好先熟悉一下如何配置apache服務器。比較好的資料有Red Hat Linux 9網絡服務的第7章配置Apache服務器和Apache HTTP Server Version 2.2 文檔。最後結合http://www.mono-project.com/Mod_mono或

http://gonzalo.name/blog/files/mod_mono.html的資料完成配置。下面寫出具體如何配置。

主要是配置apache2文件夾裡的httpd.conf文件,直接右擊選Open with “gedit”打開進行配置比較方便,當然也可以用命令來配。附上httpd.conf文件的中文翻譯http://blog.csdn.net/linuxnote/archive/2004/08/23/82289.aspx。

1、在httpd.conf文件加入,把mod_mono模塊包含到apache裡

Include etc/apache2/conf.d/mod_mono.conf

2、在mod_mono.conf文件的節點裡加入

LoadModule mono_module /usr/lib/apache2/mod_mono.so

這個用於C#2.0

MonoServerPath /usr/bin/mod-mono-server2

3、在httpd.conf文件添加如下配置,好像代碼只能放在xsp/test目錄下,原因不明,以後再研究。

Alias /test "/usr/lib/xsp/test"

MonoApplications "/test:/usr/lib/xsp/test"

<Location /test>

SetHandler mono

AllowOverride None

Order allow,deny

Allow from all

</Location>

4、保存文件然後重啟服務器,命令如下,注意apache2也是用於C#2.0。

# service apache2 restart

5、打開浏覽器輸入http://服務器IP/test/index.aspx,會看到XSP的歡迎頁面(這只是xsp上的測試實例用於apache的應用,如果要用於自己的開發的項目還要做些調整)。

6、將開發的源碼文件放到/test:/usr/lib/xsp/test下,假設目錄為/usr/lib/xsp/test/Production_System,其主頁文件為Login.aspx,訪問地址http://IP/test/Production_System/Login.aspx,奇怪的是此時報頁面錯誤.沒辦法了,修改httpd.conf,將test虛擬目錄直接指到這裡(注意:發現這裡目錄名字不能有”_”符號,所以下面就去掉了)。

Alias /test "/usr/lib/xsp/test/ProductionSystem "

MonoApplications "/test:/usr/lib/xsp/test/ProductionSystem "

<Location /test>

SetHandler mono

AllowOverride None

Order allow,deny

Allow from all

</Location>

訪問http://IP/test/Login.aspx正常顯示,至於為什麼報頁面錯誤,還不知道是啥原因。而之前在xsp上不能顯示的BillBoard頁面在這裡可以顯示(還有些細節的問題等待解決),至於原因有待研究。最後整個Production_System看起來移植到Linxu是可行的,但要完美的運行起來還有細節問題要解決,而用moma測了一下Production_System的dll文件也出現了一些issues,例如外部調用dll問題。

整個的配置過程就是這樣,有點亂,其中很多的問題沒解決。看起來在Linux上安裝和配置軟件是件復雜的事情,有待繼續研究。

補充:指定任意路徑的項目和令mod_mono處理多個程序

Alias /test "/usr/lib/xsp/test/ProductionSystem"

Alias / Hello_Mono "/usr/mypages/Hello_Mono"

MonoApplications "/test:/usr/lib/xsp/test/ProductionSystem"

MonoApplications "/Hello_Mono:/usr/mypages/Hello_Mono"

<Location /test>

SetHandler mono

AllowOverride None

Order allow,deny

Allow from all

</Location>

<Location / Hello_Mono>

SetHandler mono

AllowOverride None

Order allow,deny

Allow from all

</Location>

參考資料:

主要是mono的官方網站和些博客上的文章,這裡不列舉。

總結:

由於這是首次接觸Linux並通過mono進行移植,此文檔沒什麼高深技術,只用於記錄這個過程方便記憶,有待完善。如果有什麼不正確的地方歡迎大家指出。

注:原創作品,允許轉載,轉載時請標明文章原始出處。http://blog.sina.com.cn/s/blog_5085944d01008kdc.html
Copyright © Linux教程網 All Rights Reserved