用lighttpd+mono在Linux上面跑ASP.NET程式

來源:互聯網
上載者:User
       是的,沒錯,用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 左右.特此訂正.謝謝老趙.)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.