您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何部署Mono開(kāi)發(fā)環(huán)境,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
部署Mono開(kāi)發(fā)環(huán)境的具體步驟如下:
1、下載Mono并上傳到騰訊的服務(wù)器上。
騰訊的服務(wù)器是沒(méi)有配置dns解析功能的,所以不能直接用yast2來(lái)通過(guò)更新源來(lái)升級(jí)Mono;對(duì)于可以用yast2安裝的,可以參考我的《在openSUSE中部署基于apache的Mono環(huán)境》。而用rpm手工安裝,太多的程序依賴處理起來(lái)很麻煩,只好用通過(guò)編譯Mono源碼的方式來(lái)安裝了。
在這里可以下載到Mono的源碼,我們只需要Mono-2.8.tar.bz2/xsp-2.8.tar.bz2/mod_Mono-2.8.tar.bz2。Mono-2.8.tar.bz2當(dāng)然是Mono的核心了,xsp-2.8.tar.bz2是一個(gè)輕量級(jí)的web服務(wù)器,而mod_Mono-2.8.tar.bz2是apache的模塊,使用這個(gè)來(lái)解析.net開(kāi)發(fā)的網(wǎng)站。
上傳文件到騰訊的服務(wù)器需要分2部走,首先用rz -be把文件上傳到騰訊的跳板機(jī),然后再用scp命令把文件傳到目標(biāo)服務(wù)器。
2、安裝Mono-2.8.tar.bz2。
切換到Mono-2.8.bar.bz2的目錄,執(zhí)行
tar xf Mono-2.8.tar.bz2
解壓Mono源碼包。之后再
cd Mono-2.8
進(jìn)入解壓出來(lái)的文件夾后,執(zhí)行配置命令,這里都使用默認(rèn)配置,如果使用–prefix指定目錄的話,需要修改很多配置,操作起來(lái)非常麻煩。
./configure
之后就是最常規(guī)的
make
進(jìn)入漫長(zhǎng)的編譯過(guò)程。中間過(guò)程如果出錯(cuò),根據(jù)它的提示安裝相當(dāng)?shù)奈募?。然后直接進(jìn)行安裝。
make install
到這里,Mono就安裝完成了。這步非常簡(jiǎn)單。我走的彎路是騰訊要求要把軟件都安裝到/usr/local/services/目錄,而Mono指定安裝目錄后,需要設(shè)置系統(tǒng)變量及在后面的軟件安裝過(guò)程都要顯式的指定Mono目錄,一直都沒(méi)有折騰好,***只好使用默認(rèn)安裝,結(jié)果一次就好了。
3、安裝xsp-2.8.tar.bz2。
一樣解壓文件并執(zhí)行configure,
123 tar xf xsp-2.8.tar.bz2cd xsp-2.8./configure
到這里一直都是正確的,但是執(zhí)行
make
的時(shí)候,就不能進(jìn)行下去了。會(huì)有這樣一個(gè)提示:
Your sqlite3 version is old – please upgrade to at least v3.5.0!
Unhandled Exception:System.EntryPointNotFoundException: sqlite3_next_stmt
…….
提示這個(gè)錯(cuò)誤是因?yàn)閘inux本身的sqlite3版本號(hào)不夠,默認(rèn)的是3.1.3。你要么升級(jí)sqlite要么修改xsp的文件。查看xsp的安裝文件發(fā)現(xiàn)是在編譯xsp的demo文件時(shí)產(chǎn)生的錯(cuò)誤。在$XSP_PATH/test/1.1/webcontrols目錄下有dbpage1.aspx/dbpage1.sqlite/dbpage2.aspx/dbpage2.sqlite/dbpage_test_setup.cs這幾個(gè)文件,錯(cuò)誤就是在編譯這些文件的時(shí)候產(chǎn)生的。于是我修改了這個(gè)目錄下的Makefile/Makefile.am/Makefile.in這三個(gè)文件,把和sqlite有關(guān)的都刪除掉了。
分別編輯這三個(gè)文件,找到:
samples_Data =
把這個(gè)值的
dbpage1.aspx\ dbpage2.aspx\
把這兩個(gè)刪掉,還有:
sqlitedir = $(pkglibdir)/test/1.1/webcontrols sqlite_DATA = dbpage.sqlite \ dbpage2.sqlite samplesbindir = .... samplesbin_SCRIPTS = ... dbpage_test_setup_build = ... EXTRA_Dist = $(sqlite_DATA) ... all: all-am
這些都刪掉。在頁(yè)面的底部還有:
1234 dbpage_test_setup.exe :$(dbpage_test_setup_build)....# ...... 一直到 ......dbpage2.sqlite: dbpage_test_setup.exe $(RUNTIME) dbpage_test_setup.exe
全部都需要?jiǎng)h掉。三個(gè)頁(yè)面都執(zhí)行這樣的刪除操作。刪除完后,再make,就能成功編譯了。完了再
make install
安裝Mono最麻煩的問(wèn)題就是這里編譯出錯(cuò)。網(wǎng)上查這個(gè)編譯錯(cuò)誤,貌似很多人都有遇到,但是又都沒(méi)有說(shuō)怎么解決。期間我還嘗試升級(jí)sqlite3,可是沒(méi)有升級(jí)成功。***一個(gè)文件一個(gè)文件打開(kāi)來(lái)看,才發(fā)現(xiàn)Makefile文件的秘密。主要是***次折騰linux系統(tǒng),所以多走了很多彎路。
4、安裝mod_Mono-2.8.tar.bz2。
安裝這個(gè)也沒(méi)有遇到什么問(wèn)題,主要是如果你的apache文件不是安裝在默認(rèn)目錄的,需要在configure命令時(shí)指定apache的bin目錄。
5、都安裝好后,剩下的就是配置apache了。
編輯$APACHE_PATH/conf/httpd.conf文件,增加一個(gè)配置:
#Mono module Include conf/mod_Mono.conf
安裝mod_Mono之后,這個(gè)mod_Mono.cnf是自動(dòng)生成的,和apache的httpd.conf在相同的目錄。
對(duì)于網(wǎng)站的配置,Mono的官方網(wǎng)站有一個(gè)mod_Mono的配置生成工具,建議使用里面的Virtual Host的方式來(lái)生成配置文件。它能幫我們生成這樣的配置文件:
<VirtualHost *:80> ServerName mono.moozi.net ServerAdmin moozi@moozi.net DocumentRoot /srv/www/mono.moozi.net # MonoServerPath can be changed to specify which version of ASP.NET is hosted # mod-mono-server1 = ASP.NET 1.1 / mod-mono-server2 = ASP.NET 2.0 # For SUSE Linux Enterprise Mono Extension, uncomment the line below: # MonoServerPath mono.moozi.net "/opt/novell/mono/bin/mod-mono-server2" # For Mono on openSUSE, uncomment the line below instead: MonoServerPath mono.moozi.net "/usr/bin/mod-mono-server2" # To obtain line numbers in stack traces you need to do two things: # 1) Enable Debug code generation in your page by using the Debug="true" # page directive, or by setting <compilation debug="true" /> in the # application's Web.config # 2) Uncomment the MonoDebug true directive below to enable mod_mono debugging MonoDebug mono.moozi.net true # The MONO_IOMAP environment variable can be configured to provide platform abstraction # for file access in Linux. Valid values for MONO_IOMAP are: # case # drive # all # Uncomment the line below to alter file access behavior for the configured application MonoSetEnv mono.moozi.net MONO_IOMAP=all # # Additional environtment variables can be set for this server instance using # the MonoSetEnv directive. MonoSetEnv takes a string of 'name=value' pairs # separated by semicolons. For instance, to enable platform abstraction *and* # use Mono's old regular expression interpreter (which is slower, but has a # shorter setup time), uncomment the line below instead: # MonoSetEnv mono.moozi.net MONO_IOMAP=all;MONO_OLD_RX=1 MonoApplications mono.moozi.net "/:/srv/www/mono.moozi.net" <Location "/"> Allow from all Order allow,deny MonoSetServerAlias mono.moozi.net SetHandler mono </Location> </VirtualHost>
為了提高apache的處理性能,我們需要對(duì)這個(gè)配置再做一些修改,***的配置如下:
<VirtualHost *:80> ServerName mono.moozi.net ServerAdmin mono@moozi.net DocumentRoot /srv/www/mono.moozi.net/ MonoServerPath mono.moozi.net "/usr/local/bin/mod-mono-server4" #這里我用.net 4.0 MonoDebug mono.moozi.net true MonoSetEnv mono.moozi.net MONO_IOMAP=all MonoApplications mono.moozi.net "/:/srv/www/mono.moozi.net/" <Location "/"> Allow from all Order allow,deny MonoSetServerAlias mono.moozi.net SetHandler mono </Location> <Location ~ "^/(styles|scripts|images)/"> SetHandler default-handler </Location> <Location ~ "^/[^/]+\.(txt|html|ico|js|css|jpg|jpeg|gif|png)"> SetHandler default-handler </Location> </VirtualHost>
這里我們?cè)黾恿藘蓚€(gè)<Location />配置節(jié),讓靜態(tài)資源文件使用apache的默認(rèn)handler處理。
***,重啟apache就好了。
關(guān)于“如何部署Mono開(kāi)發(fā)環(huán)境”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。