zoukankan      html  css  js  c++  java
  • 用lighttpd+mono在Linux上面跑ASP.NET程序

           是的,没错,用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://www.cnblogs.com/images/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://www.cnblogs.com/images/cnblogs_com/egmkang/127872/r_monorail.png
              园子把图片的尺寸都给改了,看得很模糊,大家将就一下.

           最后要说的是,lighttpd性能很好,这个不用我的废话,但是需要自己慢慢调试优化,达到最优的效果不是很容易的.(我现在还是一个菜菜.刚刚会用而已:lol)要是弄得好的话,也有可能用一两台破服务器实现2500+W/天的Hits访问量.不知道园子一天多少pv阿?貌似园子用的是8核CPU阿.......(貌似比较兴奋,以为1天2500W 的pv,后来一看不是500W 左右.特此订正.谢谢老赵.)
  • 相关阅读:
    ASP.NET MVC 重点教程一周年版 第二回 UrlRouting
    ASP.NET MVC 重点教程一周年版 第三回 Controller与View
    DynamicData for Asp.net Mvc留言本实例 下篇 更新
    Asp.net MVC视频教程 18 单选与复选框
    使用ASP.NET MVC Futures 中的异步Action
    ASP.NET MVC RC 升级要注意的几点
    ATL、MFC、WTL CString 的今生前世
    msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
    关于Windows内存的一些参考文章
    Windows访问令牌相关使用方法
  • 原文地址:https://www.cnblogs.com/egmkang/p/1140934.html
Copyright © 2011-2022 走看看