成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解一次艱難的Mono開發環境的部署

開發 后端
今天我們將要分享本文作者的一次艱難經歷,如何在Linux下部署Mono開發環境。中間遇到的問題,希望大家都能引以為戒。

現在總結一下我在suse 10中部署Mono開發環境遇到的一些問題及其處理辦法。

騰訊社區開放平臺提供的體驗區的服務器環境是這樣的:

操作系統:Linux version 2.6.16.60 (gcc version 4.1.2 20070115 (SUSE Linux))

這個Linux內核的版本號應該是SLES(SUSE Linux Enterprise Server 10 SP2)的操作系統。Mono原來的版本號是1.2.2,而我們需要2.8.2的Mono。所以,***步的工作就是升級Mono。

通過騰訊的跳板機登錄到服務器后,需要跟騰訊的運維人員申請root權限,這個就不用多說了。

部署Mono開發環境的具體步驟如下:

1、下載Mono并上傳到騰訊的服務器上。

騰訊的服務器是沒有配置dns解析功能的,所以不能直接用yast2來通過更新源來升級Mono;對于可以用yast2安裝的,可以參考我的《在openSUSE中部署基于apache的Mono環境》。而用rpm手工安裝,太多的程序依賴處理起來很麻煩,只好用通過編譯Mono源碼的方式來安裝了。

在這里可以下載到Mono的源碼,我們只需要Mono-2.8.tar.bz2/xsp-2.8.tar.bz2/mod_Mono-2.8.tar.bz2。Mono-2.8.tar.bz2當然是Mono的核心了,xsp-2.8.tar.bz2是一個輕量級的web服務器,而mod_Mono-2.8.tar.bz2是apache的模塊,使用這個來解析.net開發的網站。

上傳文件到騰訊的服務器需要分2部走,首先用rz -be把文件上傳到騰訊的跳板機,然后再用scp命令把文件傳到目標服務器。

2、安裝Mono-2.8.tar.bz2。

切換到Mono-2.8.bar.bz2的目錄,執行

  1. tar xf Mono-2.8.tar.bz2 

解壓Mono源碼包。之后再

  1. cd Mono-2.8 

進入解壓出來的文件夾后,執行配置命令,這里都使用默認配置,如果使用–prefix指定目錄的話,需要修改很多配置,操作起來非常麻煩。

  1. ./configure 

之后就是最常規的

  1. make 

進入漫長的編譯過程。中間過程如果出錯,根據它的提示安裝相當的文件。然后直接進行安裝。

  1. make install 

到這里,Mono就安裝完成了。這步非常簡單。我走的彎路是騰訊要求要把軟件都安裝到/usr/local/services/目錄,而Mono指定安裝目錄后,需要設置系統變量及在后面的軟件安裝過程都要顯式的指定Mono目錄,一直都沒有折騰好,***只好使用默認安裝,結果一次就好了。

3、安裝xsp-2.8.tar.bz2。

一樣解壓文件并執行configure,

123 tar xf xsp-2.8.tar.bz2cd xsp-2.8./configure

到這里一直都是正確的,但是執行

  1. make 

的時候,就不能進行下去了。會有這樣一個提示:

Your sqlite3 version is old – please upgrade to at least v3.5.0!

Unhandled Exception:System.EntryPointNotFoundException: sqlite3_next_stmt

…….

提示這個錯誤是因為linux本身的sqlite3版本號不夠,默認的是3.1.3。你要么升級sqlite要么修改xsp的文件。查看xsp的安裝文件發現是在編譯xsp的demo文件時產生的錯誤。在$XSP_PATH/test/1.1/webcontrols目錄下有dbpage1.aspx/dbpage1.sqlite/dbpage2.aspx/dbpage2.sqlite/dbpage_test_setup.cs這幾個文件,錯誤就是在編譯這些文件的時候產生的。于是我修改了這個目錄下的Makefile/Makefile.am/Makefile.in這三個文件,把和sqlite有關的都刪除掉了。

分別編輯這三個文件,找到:

  1. samples_Data = 

把這個值的

  1. dbpage1.aspx\  
  2. dbpage2.aspx\ 

把這兩個刪掉,還有:

  1. sqlitedir = $(pkglibdir)/test/1.1/webcontrols  
  2. sqlite_DATA = dbpage.sqlite \   
  3. dbpage2.sqlite   
  4. samplesbindir = ....  
  5. samplesbin_SCRIPTS = ...  
  6. dbpage_test_setup_build = ...  
  7. EXTRA_Dist = $(sqlite_DATA) ...  
  8. all: all-am  
  9.  

這些都刪掉。在頁面的底部還有:

1234 dbpage_test_setup.exe :$(dbpage_test_setup_build)....# ...... 一直到 ......dbpage2.sqlite: dbpage_test_setup.exe    $(RUNTIME) dbpage_test_setup.exe

全部都需要刪掉。三個頁面都執行這樣的刪除操作。刪除完后,再make,就能成功編譯了。完了再

  1. make install 

安裝Mono最麻煩的問題就是這里編譯出錯。網上查這個編譯錯誤,貌似很多人都有遇到,但是又都沒有說怎么解決。期間我還嘗試升級sqlite3,可是沒有升級成功。***一個文件一個文件打開來看,才發現Makefile文件的秘密。主要是***次折騰linux系統,所以多走了很多彎路。

4、安裝mod_Mono-2.8.tar.bz2。

安裝這個也沒有遇到什么問題,主要是如果你的apache文件不是安裝在默認目錄的,需要在configure命令時指定apache的bin目錄。

5、都安裝好后,剩下的就是配置apache了。

編輯$APACHE_PATH/conf/httpd.conf文件,增加一個配置:

  1. #Mono module  
  2. Include conf/mod_Mono.conf 

安裝mod_Mono之后,這個mod_Mono.cnf是自動生成的,和apache的httpd.conf在相同的目錄。

對于網站的配置,Mono的官方網站有一個mod_Mono的配置生成工具,建議使用里面的Virtual Host的方式來生成配置文件。它能幫我們生成這樣的配置文件:

  1. <VirtualHost *:80>    
  2. ServerName mono.moozi.net    
  3. ServerAdmin moozi@moozi.net    
  4. DocumentRoot /srv/www/mono.moozi.net    
  5. # MonoServerPath can be changed to specify which version of ASP.NET is hosted    
  6. mod-mono-server1 = ASP.NET 1.1 / mod-mono-server2 = ASP.NET 2.0    
  7. # For SUSE Linux Enterprise Mono Extension, uncomment the line below:    
  8. # MonoServerPath mono.moozi.net "/opt/novell/mono/bin/mod-mono-server2"    
  9. # For Mono on openSUSE, uncomment the line below instead:    
  10. MonoServerPath mono.moozi.net "/usr/bin/mod-mono-server2"     
  11. # To obtain line numbers in stack traces you need to do two things:    
  12. # 1) Enable Debug code generation in your page by using the Debug="true"    
  13. #    page directive, or by setting <compilation debug="true" /> in the    
  14. #    application's Web.config    
  15. # 2) Uncomment the MonoDebug true directive below to enable mod_mono debugging    
  16. MonoDebug mono.moozi.net true     
  17.  
  18. # The MONO_IOMAP environment variable can be configured to provide platform abstraction    
  19. # for file access in Linux.  Valid values for MONO_IOMAP are:    
  20. #    case    
  21. #    drive    
  22. #    all    
  23. # Uncomment the line below to alter file access behavior for the configured application    
  24. MonoSetEnv mono.moozi.net MONO_IOMAP=all    
  25.  
  26. #    
  27. # Additional environtment variables can be set for this server instance using    
  28. # the MonoSetEnv directive.  MonoSetEnv takes a string of 'name=value' pairs    
  29. # separated by semicolons.  For instance, to enable platform abstraction *and*    
  30. # use Mono's old regular expression interpreter (which is slower, but has a  
  31. # shorter setup time), uncomment the line below instead:    
  32. # MonoSetEnv mono.moozi.net MONO_IOMAP=all;MONO_OLD_RX=1     
  33.  
  34. MonoApplications mono.moozi.net "/:/srv/www/mono.moozi.net"    
  35. <Location "/">      
  36. Allow from all      
  37. Order allow,deny      
  38. MonoSetServerAlias mono.moozi.net      
  39. SetHandler mono    
  40. </Location> 
  41. </VirtualHost>  

為了提高apache的處理性能,我們需要對這個配置再做一些修改,***的配置如下:

  1. <VirtualHost *:80>    
  2. ServerName mono.moozi.net    
  3. ServerAdmin mono@moozi.net    
  4. DocumentRoot /srv/www/mono.moozi.net/     
  5.  
  6. MonoServerPath mono.moozi.net "/usr/local/bin/mod-mono-server4" #這里我用.net 4.0    
  7. MonoDebug mono.moozi.net true    
  8. MonoSetEnv mono.moozi.net MONO_IOMAP=all      
  9.  MonoApplications mono.moozi.net  "/:/srv/www/mono.moozi.net/"    
  10. <Location "/">      
  11. Allow from all      
  12. Order allow,deny      
  13. MonoSetServerAlias mono.moozi.net      
  14. SetHandler mono    
  15. </Location>    
  16. <Location ~ "^/(styles|scripts|images)/">      
  17. SetHandler default-handler    
  18. </Location>    
  19. <Location ~ "^/[^/]+\.(txt|html|ico|js|css|jpg|jpeg|gif|png)">      
  20. SetHandler default-handler    
  21. </Location> 
  22. </VirtualHost>  

這里我們增加了兩個<Location />配置節,讓靜態資源文件使用apache的默認handler處理。

***,重啟apache就好了。

經過了近一周時間的折騰,終于成功地在騰訊社區開放平臺部署好Mono環境。

我們的應用是騰訊社區開放平臺的***.NET應用,測試了一下午,程序運行狀態良好。從感官上來看,響應比IIS還快…當然,事實還有待于驗證。

原文鏈接:http://www.cnblogs.com/moozi/archive/2011/01/26/1945754.html

【編輯推薦】

  1. 使用開源工具MonoDevelop開發GTK#圖形界面
  2. 詳解Mono 2.8上如何部署ASP.NET MVC 2框架
  3. 詳解在Mono中如何創建ASP.NET程序
  4. Mono2.0發布 Linux下的.NET框架成熟嗎?
  5. 討論:Mono這只猴子招惹了誰? 
責任編輯:彭凡 來源: 博客園
相關推薦

2021-05-13 08:51:20

GC問題排查

2009-03-20 10:58:47

2011-06-28 10:41:50

DBA

2011-07-08 14:34:50

開發框架

2021-12-27 10:08:16

Python編程語言

2020-10-24 13:50:59

Python編程語言

2012-08-28 09:21:59

Ajax查錯經歷Web

2021-11-01 17:29:02

Windows系統Fork

2011-04-07 11:20:21

SQLServer

2017-07-10 07:55:50

虛擬化Windows IO云計算

2009-08-03 10:11:44

JSP開發環境配置

2014-10-29 19:34:55

微軟cocos2d-x觸控科技

2013-05-13 11:35:53

獨立開發開發經驗開發感悟

2013-12-23 15:46:42

2013-03-22 10:42:09

開發人員軟件開發

2023-12-13 09:01:40

2017-08-24 17:37:18

DNS緩存分析

2009-02-06 09:50:00

DHCP地址分配

2021-12-06 19:29:17

LRU內存算法

2015-07-17 10:04:33

MKMapView優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文天堂在线一区 | 一级欧美视频 | 99国产精品99久久久久久 | 欧美一区精品 | 久久噜噜噜精品国产亚洲综合 | 欧美日韩在线精品 | 国产成人精品免费视频大全最热 | 九九亚洲| 国精日本亚洲欧州国产中文久久 | 国产电影一区二区 | 日韩区| 色播视频在线观看 | 免费日韩av | 黑人巨大精品欧美一区二区免费 | 欧美一区二区三区视频在线 | 国产精品一区二区三区四区五区 | 涩涩视频网站在线观看 | 日本a v在线播放 | 91视频精选 | 日韩精品免费一区 | 激情久久av一区av二区av三区 | 丁香色婷婷 | 免费同性女女aaa免费网站 | 超碰电影 | 国产成人精品免费视频大全最热 | 亚洲一区二区三区免费在线观看 | 天久久 | 精品欧美黑人一区二区三区 | 91色在线 | 少妇一级淫片免费播放 | 欧美日韩国产在线观看 | 亚洲午夜精品视频 | 欧美成人高清视频 | 国产精品乱码一区二三区小蝌蚪 | 国产精品一区在线观看 | 免费黄色a级毛片 | 国产激情第一页 | 日韩一区二区免费视频 | 精品久久ai电影 | 久久精品视频在线观看 | 婷婷久久网 |