是的,沒錯,用lighttpd(念作:lighty)+mono可以在Linux上面跑Linux程式.
lighttpd是一個輕量級伺服器,設計1w+靜態網頁並發.剛開始把lighttpd配只好後,瀏覽靜態網頁,那個速度就像飛一樣.據說豆瓣就是靠 lighttpd支援2500+W每天的訪問量.lighttpd還會支援FastCGI擴充支援更多的動態網頁程式.我就是安裝另一個mono的 FastCGI,才使lighttpd可以跑ASP.NET 程式的.
一.先來看看怎麼安裝lighttpd: (Linux下面安裝軟體有一個特點就是自己編譯,然後make install.時間長了感覺很順手的,剛開始不習慣.)
1. 到http://www.lighttpd.net/上面去下載原始碼,然後解壓縮,假設$lighttpd_src為原始碼目錄.
2.編譯,安裝.
假定安裝路徑為$install_root,下面用"/usr/local/lighttpd"為例.
# cd $lighttpd_src
# ./configure --prefix=/usr/local/lighttpd
先檢查一下類庫依賴,看看需要用到的類庫是不是都有.要是沒有的,看看少哪個,在ubuntu下就是apt-get一下,在我的openSuSE10.3 下面就是"安裝軟體",輸入名字,安裝就行了.另外,要是用openSuSE 10.3的話,(我的機器)預設安裝lighttpd 1.4.18的,那個也可以用的.要是不嫌麻煩的話,就裝一個1.4.19.
# make
# sudo make install
至此,lighttpd基本所算是安裝好了,下來就是lighttpd的配置之類的.不想配置的話,lighttpd也可以用的.就看你的愛好了.反正我是不想整了,頭都大了.
lighttpd的啟動是:
# $install_root/sbin/lighttpd -f $lighttpd_src/doc/lighttpd.conf
你可以把那個conf檔案copy到一個你容易使用的地方,openSuSE預設的地方時/etc/lighttpd/lighttpd.conf.
關閉lighttpd:(需要su許可權)
# killall lighttpd
3.稍微配置一下lighttpd.conf檔案,使之可以瀏覽靜態網頁.看看速度如何.
開啟檔案,找到server.document-root這個節點,後面填上靜態網頁的路徑,比如我的是server.document-root="/home/egmkang/Program/html/".
然後 啟動lighttpd,在瀏覽器裡面輸入localhost看看.一般是可以的,要是不幸的話,看看server.bind="192.168.1.110"裡面填的是什麼,一般是127.0.0.1或者localhost.
二. 至此,lighttpd就可完全工作了,要是想跑ASP.NET程式的話,還得再加上mono的FastCGI 模組.下來我們安裝xsp,並配置好conf檔案.
1.上mono的官方網站去down一個xsp,這個是必須的,一般會是一個rpm包.
安裝這個rpm包的時候肯定會說少什麼包,就在那個網頁上面下載什麼包.因為我是用YaST安裝的,沒注意這個事.SuSE使用者可以看看這個更新源
http://en.opensuse.org/Additional_YaST_Package_Repositories#Mono
2.下來配置lighttpd.conf檔案
在檔案裡面添加進去:
################################################
# fastcgi-mono-server2
################################################
var.mono_dir = "/usr/"
var.mono_shared_dir = "/tmp/"
var.mono_fcgi_root = server.document-root
var.mono_fcgi_applications = "/:."
$HTTP["host"] == "192.168.1.110" {
server.document-root = "/home/egmkang/Program/html/"
fastcgi.server = (
"" => ((
"socket" => "/tmp/fastcgi-mono-server",
"bin-path" => "/usr/bin/fastcgi-mono-server2",
"bin-environment" => (
"PATH" => "/bin:/usr/bin:" + mono_dir + "bin",
"LD_LIBRARY_PATH" => mono_dir + "lib:",
"MONO_SHARED_DIR" => mono_shared_dir,
"MONO_FCGI_LOGLEVELS" => "Standard",
"MONO_FCGI_LOGFILE" => mono_shared_dir + "fastcgi.log",
"MONO_FCGI_ROOT" => mono_fcgi_root,
"MONO_FCGI_APPLICATIONS" => mono_fcgi_applications
),
# 這個為cgi模組的最大執行個體數目
"max-procs" => 1,
"check-local" => "disable"
))
)
fastcgi.map-extensions = (
".asmx" => ".aspx",
".ashx" => ".aspx",
".asax" => ".aspx",
".ascx" => ".aspx",
".soap" => ".aspx",
".rem" => ".aspx",
".axd" => ".aspx",
".cs" => ".aspx",
".config" => ".aspx",
".dll" => ".aspx",
".castle"=>".castle",
".rails"=>".rails"
)
}
現在重新啟動lighttpd,在"虛擬目錄"下面放置一個info.aspx看看能不能訪問,要是能的話,就配置好了.要是不能的話,我基本上也沒辦法....汗這個設定檔就是我機器上面的.........
這個是我的info.aspx的截屏 http://images.cnblogs.com/cnblogs_com/egmkang/127872/r_info.aspx.png .
3. 你剛才看到了.castle.對沒錯,我在這個伺服器上面成功跑起來MonoRail內建的那個例子.
(注:MonoRail 內建的例子的程式寫的有一些問題的,就是檔案名稱的大小寫問題,剛才我好好測試了一下那個工程,全部是檔案名稱的問題,他自己程式寫的時候沒注意.而且, 光靠改檔案名稱的大小寫還不能是網站完全跑起來,得把程式裡面的名字修改了,要不然他一會兒訪問Index.vm,一會兒又訪問 index.vm........)
把MonoRail內建案例的檔案複製到你的虛擬目錄下面,修改Web.config檔案名稱為web.config,./Views檔案夾下面的Home 檔案夾為home,./Views/home/檔案夾下面的Index.vm為index.vm.因為在Linux下面檔案是區分大小寫,Win下面不 區分.所以那個項目在Win下面能正常運行,在Linux下面不一定可以.
(這一步我不知道可以省略不,因為沒辦法作對照實驗....)把Castle的那些dll類庫檔案複製到mono的安裝目錄下面.在我的機器上面是 /usr/lib/mono/2.0 .要是你的機器上面不是,那就whereis mono看一下.:lol
這個是截屏:http://images.cnblogs.com/cnblogs_com/egmkang/127872/r_monorail.png
園子把圖片的尺寸都給改了,看得很模糊,大家將就一下.
最後要說的是,lighttpd效能很好,這個不用我的廢話,但是需要自己慢慢調試最佳化,達到最優的效果不是很容易的.(我現在還是一個菜菜.剛剛會用而已:lol)要是弄得好的話,也有可能用一兩台破伺服器實現2500+W/天的Hits訪問量.不知道園子一天多少pv阿?貌似園子用的是8核CPU阿.......(貌似比較興奮,以為1天2500W 的pv,後來一看不是500W 左右.特此訂正.謝謝老趙.)