rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 应用技术 » Web服务器

用lighttpd+mono在Linux上面跑asp.NET程序

http://www.aowe.net/n4571c9.aspx

是的,没错,用lighttpd(念作:lighty)+mono可以在Linux上面跑Linux程序.
       lighttpd是一个轻量级服务器[fu wu qi],设计1w+静态网页[wang ye]并发[bing fa].刚开始把lighttpd配只好后,浏览[liu lan]静态网页[wang ye],那个速度就像飞一样.据说豆瓣就是靠lighttpd支持[zhi chi]2500+W每天的访问量.lighttpd还会支持[zhi chi]FastCGI扩展[kuo zhan]支持[zhi chi]更多的动态[dong tai]网页[wang ye]程序.我就是安装[an zhuang]另一个mono的FastCGI,才使lighttpd可以跑ASP.NET 程序的.
      
       一.先来看看怎么安装[an zhuang]lighttpd: (Linux下面安装[an zhuang]软件[ruan jian]有一个特点就是自己编译[bian yi],然后make install.时间长了感觉很顺手的,刚开始不习惯.)
       1. 到http://www.lighttpd.net/上面去下载[xia zai]源代码[dai ma][yuan dai ma],然后解压缩[ya suo][jie ya suo],假设$lighttpd_src为源代码[dai ma][yuan dai ma]目录.
       2.编译[bian yi],安装[an zhuang].
              假定安装[an zhuang]路径[lu jing]为$install_root,下面用"/usr/local/lighttpd"为例.
             # cd $lighttpd_src
             # ./configure  --prefix=/usr/local/lighttpd
             先检查一下类库[lei ku]依赖,看看需要用到的类库[lei ku]是不是都有.要是没有的,看看少哪个,在ubuntu下就是apt-get一下,在我的openSuSE10.3下面就是"安装[an zhuang]软件[ruan jian]",输入[shu ru]名字,安装[an zhuang]就行了.另外,要是用openSuSE 10.3的话,(我的机器)默认[mo ren]安装[an zhuang]lighttpd 1.4.18的,那个也可以用的.要是不嫌麻烦的话,就装一个1.4.19.
             # make
             # sudo make install
             至此,lighttpd基本所算是安装[an zhuang]好了,下来就是lighttpd的配置[pei zhi]之类的.不想配置[pei zhi]的话,lighttpd也可以用的.就看你的爱好了.反正我是不想整了,头都大了.
             lighttpd的启动[qi dong]是:
             # $install_root/sbin/lighttpd -f $lighttpd_src/doc/lighttpd.conf
             你可以把那个conf文件[wen jian]copy到一个你容易使用的地方,openSuSE默认[mo ren]的地方时/etc/lighttpd/lighttpd.conf.
             关闭lighttpd:(需要su权限[quan xian])
             # killall lighttpd
        3.稍微配置[pei zhi]一下lighttpd.conf文件[wen jian],使之可以浏览[liu lan]静态网页[wang ye].看看速度如何.
             打开文件[wen jian],找到server.document-root这个节点[jie dian],后面填上静态网页[wang ye]的路径[lu jing],比如我的是server.document-root="/home/egmkang/Program/html/".
             然后 启动[qi dong]lighttpd,在浏览[liu lan]器[liu lan qi]里面输入[shu ru]localhost看看.一般是可以的,要是不幸的话,看看server.bind="192.168.1.110"里面填的是什么,一般是127.0.0.1或者localhost.        二. 至此,lighttpd就可完全工作了,要是想跑ASP.NET程序的话,还得再加上mono的FastCGI 模块[mo kuai].下来我们安装[an zhuang]xsp,并配置[pei zhi]好conf文件[wen jian].
         1.上mono的官方网站[wang zhan]去down一个xsp,这个是必须的,一般会是一个rpm包.
             安装[an zhuang]这个rpm包的时候肯定会说少什么包,就在那个网页[wang ye]上面下载[xia zai]什么包.因为我是用YaST安装[an zhuang]的,没注意这个事.SuSE用户[yong hu]可以看看这个更新源[geng xin yuan]
                http://en.opensuse.org/Additional_YaST_Package_Repositories#Mono
          2.下来配置[pei zhi]lighttpd.conf文件[wen jian]
             在文件[wen jian]里面添加进去:
            
            ################################################
            # 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模块[mo kuai]的最大实例数目
                        "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"
                            )
        }        现在重新启动[qi dong][zhong xin qi dong]lighttpd,在"虚拟[xu ni]目录"下面放置一个info.aspx看看能不能访问,要是能的话,就配置[pei zhi]好了.要是不能的话,我基本上也没办法....汗这个配置[pei zhi]文件[wen jian][pei zhi wen jian]就是我机器上面的.........
       这个是我的info.aspx的截屏  http://images.cnblogs.com/cnblogs_com/egmkang/127872/r_info.aspx.png  .
     
       3. 你刚才看到了.castle.对没错,我在这个服务器[fu wu qi]上面成功跑起来MonoRail自带的那个例子.
            (注:MonoRail自带的例子的程序写的有一些问题[wen ti]的,就是文件[wen jian]名[wen jian ming]称的大小写问题[wen ti],刚才我好好测试了一下那个工程,全部是文件[wen jian]名[wen jian ming]称的问题[wen ti],他自己程序写的时候没注意.而且,光靠改文件[wen jian]名[wen jian ming]称的大小写还不能是网站[wang zhan]完全跑起来,得把程序里面的名字修改[xiu gai]了,要不然他一会儿访问Index.vm,一会儿又访问index.vm........)
           把MonoRail自带案例的文件[wen jian]复制到你的虚拟[xu ni]目录下面,修改[xiu gai]Web.config文件[wen jian]名[wen jian ming]为web.config,./Views文件[wen jian]夹下面的Home文件[wen jian]夹为home,./Views/home/文件[wen jian]夹下面的Index.vm为index.vm.因为在Linux下面文件[wen jian]是区分大小写的,Win下面不区分.所以那个项目[xiang mu]在Win下面能正常运行[yun hang][zheng chang yun hang],在Linux下面不一定可以.
          (这一步我不知道可以省略不,因为没办法作对照实验....)把Castle的那些dll类库[lei ku]文件[wen jian]复制到mono的安装[an zhuang]目录下面.在我的机器上面是/usr/lib/mono/2.0 .要是你的机器上面不是,那就whereis mono看一下.:lol
          这个是截屏:http://images.cnblogs.com/cnblogs_com/egmkang/127872/r_monorail.png
          园子把图片的尺寸都给改了,看得很模糊[mo hu],大家将就一下.       最后要说的是,lighttpd性能[xing neng]很好,这个不用我的废话,但是需要自己慢慢调试[tiao shi]优化[you hua],达到最优的效果不是很容易的.(我现在还是一个菜菜.刚刚会用而已:lol)要是弄得好的话,也有可能用一两台破服务器[fu wu qi]实现2500+W/天的Hits访问量.不知道园子一天多少pv阿?貌似园子用的是8核CPU阿.......(貌似比较兴奋,以为1天2500W 的pv,后来一看不是500W 左右.特此订正.谢谢老赵.)

顶一下
(0)
踩一下
(0)