2010年04月8日

Kloxo 安装完(network.c.336) SSL: error:00000000:lib(0):func(0):reason(0)错误解决方法

安装完Kloxo后lighttpd不能启动,提示 (network.c.336) SSL: error:00000000:lib(0):func(0):reason(0) 错误。

[root@vpser.net ~]# service kloxo restart
Stopping kloxo: Waiting for the process to die.....
Stopped kloxo

Starting kloxo: 11
cat: /usr/local/lxlabs/kloxo//pid/wrapper.pid: No such file or directory
mysqld (pid 30539) is running...
2010-04-05 20:24:16: (network.c.336) SSL: error:00000000:lib(0):func(0):reason(0)
Started kloxo VPS侦探 http://www.vpser.net/

解决方法: openssl降级到openssl-0.9.8e-12.el5_4.1.i686版本

执行命令:yum downgrade openssl (更多...)

  • » 阅读全文...
  • 2008年03月30日

    LightTPD是什么?魅力在哪?让知名网站放弃用Apache?

    一、Lighttpd简介

    据Netcraft做的数据调查显示,今年一月份全球使用LightTPD的网址为170,000,二月份这个数字达到了7000,000,在短短的一个 月内惊人地增长了400%!在这些网址中,包括YouTub
    e、Wikipedia和Meebo等。而且目前为止,使用LightTPD的网址仍在以极高 的比例增长,尤其是欧美等地的网址,许多新兴网站也纷纷选用LightTPD,而且LightTPD在Ruby on Rails社区中尤其受欢迎。

            以Meebo为例。它是一个内置在浏览器内的信息工具,它支持多种信息工具,如Yahoo! Messenger, Windows Live Messenger, ICQ, AIM和Jabber等,每天Meebo要处理至少七千万条信息。这样的一个网站是用的便是LightTPD。

            值得一提的是,Meebo使用的却是Linux服务器,然而它抛弃Apache以及LAMP(Linux+ Apache+ Mysql+ Perl/PHP/Python)的网络构建方式,选择了LightTPD。
                        下图为使用Lighttp的网址增长率

            很多人也许会问具有如此“魔力”的LightTPD到底是什么?简单说一下:LightTPD是一个轻量级的Web 服务器,支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。它具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。其静态文件的响应能力远高于Apache,可谓Web服 务器的后期之秀。

            许多技术专家认为,在Web 服务器中LightTPD比Apache更小更轻量,却拥有比后者更高的性能。虽然LightTPD在Web服务器方面只占很小的市场份额,“但它正极速增长,日后必将是Web服务器领域的有力竞争者。”

    二、下面是部署应用时LightTPD在前端相对其他web server的比较:

    前端目前已知的可以选择apache, LightTPD, litespeed, nginx, haproxy
    1、apache2.2
    apache是全球市场占有率最高的web server,超过全球互联网网站50%的网站都用apache。apache2.2 + mod_proxy_balancer是一个非常流行,非常稳定的方案。

    使用apache2.2唯一的问题就是apache的性能和后面那些轻量级web server相比,差太远了。一方面在处理静态请求方面apache要比LightTPD慢3-5倍,内存消耗和CPU消耗也高出一个数量级,另一方面 mod_proxy_balancer的分发性能也不高,比haproxy差很远。

    2、LightTPD
    LightTPD是一个轻量级高性能web server,一个在MySQL Inc工作的德国人写的。性能很好,内存和CPU资源消耗很低,支持绝大多数apache的功能,是apache的绝好替代者。目前LightTPD已经 上升到全球互联网第四大web server,市场占有率仅此于apache,IIS和Sun。

    LightTPD唯一的问题是proxy功能不完善,因此不适合搭配mongrel来使用。LightTPD下一个版本1.5.0的proxy模块重写过了,将会解决这个问题。

    3、litespeed
    和LightTPD差不多,商业产品,收费的。比LightTPD来说,多一个web管理界面,不用写配置文件了。litespeed专门为单机运行的 RoR开发了一个lsapi协议,号称性能最好,比httpd和fcgi都要好。他的proxy功能比LightTPD完善。

    litespeed的缺点我却认为恰恰是这个lsapi。因为lsapi不是web server启动的时候启动固定数目的ruby进程,而是根据请求繁忙程度,动态创建和销毁ruby进程,貌似节省资源,实则和apache2.2进程模 型一样,留下很大的黑客攻击漏洞。只要黑客瞬时发起大量动态请求,就会让服务器忙于创建ruby进程而导致CPU资源耗尽,失去响应。

    当然,litespeed也支持httpd和fcgi,这个和LightTPD用法一样的,到没有这种问题。

    4、nginx
    一个俄国人开发的轻量级高性能web server,特点是做proxy性能很好,因此被推荐取代apache2.2的mod_proxy_balancer,来和mongrel cluster搭配。其他方面和LightTPD到差不多。

    要说缺点,可能就是发展的时间比较短,至今没有正式版本,还是beta版。没有经过足够网站的验证。

    5、haproxy
    就是一个纯粹的高性能proxy,不处理静态资源的,所有请求统统分发到后端。

    三、如何选择:

    JavaEye为什么用LightTPD + fcgi呢?原因如下:

    1) LightTPD发展了好几年了,市场占有率也相当高,是一个经过实践检验的server,它的文档也很全;而nginx还没有经过足够的市场检验,文档也很缺乏
    2) JavaEye的ruby进程和web server在一台机器上面跑,通过unix socket使用fcgi协议通讯可以避免tcp的网络开销,其通讯速度比使用tcp socket使用http协议通讯要快一些。

    什么场合使用haproxy?

    大规模部署,例如你的RoR应用到十几台服务器上面去,你用haproxy会更好,可以方便的添加删除应用服务器节点,proxy性能更好。

    这些也是我为什么在LAMPR中加入LightTPD的原因。

  • » 阅读全文...
  • 2007年11月14日

    Lighttpd+Squid+Apache搭建高效率Web服务器

    架构原理
    Apache通常是开源界的首选Web服务器,因为它的强大和可靠,已经具有了品牌效应,可以适用于绝大部分的应用场合。但是它的强大有时候却显得笨重,配置文件得让人望而生畏,高并发情况下效率不太高。而轻量级的Web服务器Lighttpd却是后起之秀,其静态文件的响应能力远高于Apache,据说是Apache的2-3倍。Lighttpd的高性能和易用性,足以打动我们,在它能够胜任的领域,尽量用它。Lighttpd对PHP的支持也很好,还可以通过Fastcgi方式支持其他的语言,比如Python。

    毕竟Lighttpd是轻量级的服务器,功能上不能跟Apache比,某些应用无法胜任。比如Lighttpd还不支持缓存,而现在的绝大部分站点都是用程序生成动态内容,没有缓存的话即使程序的效率再高也很难满足大访问量的需求,而且让程序不停的去做同一件事情也实在没有意义。首先,Web程序是需要做缓存处理的,即把反复使用的数据做缓存。即使这样也还不够,单单是启动Web处理程序的代价就不少,缓存最后生成的静态页面是必不可少的。而做这个是 Squid的强项,它本是做代理的,支持高效的缓存,可以用来给站点做反向代理加速。把Squid放在Apache或者Lighttpd的前端来缓存 Web服务器生成的动态内容,而Web应用程序只需要适当地设置页面实效时间即可。

    即使是大部分内容动态生成的网站,仍免不了会有一些静态元素,比如图片、JS脚本、CSS等等,将Squid放在Apache或者Lighttp前端后,反而会使性能下降,毕竟处理HTTP请求是Web服务器的强项。而且已经存在于文件系统中的静态内容再在Squid中缓存一下,浪费内存和硬盘空间。因此可以考虑将Lighttpd再放在Squid的前面,构成 Lighttpd+Squid+Apache的一条处理链,Lighttpd在最前面,专门用来处理静态内容的请求,把动态内容请求通过proxy模块转发给Squid,如果Squid中有该请求的内容且没有过期,则直接返回给Lighttpd。新请求或者过期的页面请求交由Apache中Web程序来处理。经过Lighttpd和Squid的两级过滤,Apache需要处理的请求将大大减少,减少了Web应用程序的压力。同时这样的构架,便于把不同的处理分散到多台计算机上进行,由Lighttpd在前面统一把关。

    在这种架构下,每一级都是可以进行单独优化的,比如Lighttpd可以采用异步IO方式,Squid可以启用内存来缓存,Apache可以启用MPM 等,并且每一级都可以使用多台机器来均衡负载,伸缩性很好。

    实例讲解
    下面以daviesliu.net和rainbud.net域下面的几个站点为例来介绍一下此方案的具体做法。daviesliu.net域下有几个用 mod_python实现的blog站点,几个php的站点,一个mod_python的小程序,以后可能还会架设几个PHP和Django的站点。而服务器非常弱,CPU为Celeron 500,内存为PC 100 384M,因此比较关注Web服务器的效率。这几个站点都是采用虚拟主机方式,开在同一台机器的同一个端口上。

    Lighttpd服务于80端口,Squid运行在3128端口,Apache运行在81端口。

    Lighttpd的配置
    多个域名采用/var/www/domain/subdomain 的目录结构,用evhost模块配置document-root如下:

    evhost.path-pattern        =  var.basedir + "/%0/%3/"

    FtpSearch中有Perl脚本,需要启用CGI支持,它是用来做ftp站内搜索的,缓存的意义不大,直接由lighttpd的mod_cgi处理:

    $HTTP["url"] =~ "^/cgi-bin/" { # only allow cgi's in this directory
        dir-listing.activate = "disable"    # disable directory listings
        cgi.assign = ( ".pl"   =>  "/usr/bin/perl", ".cgi"  =>  "/usr/bin/perl" )
    }

    bbs使用的是phpBB,访问量不大,可以放在lighttpd(fastcgi)或者apache(mod_php)下,暂时使用 lighttpd,设置所有.php的页面请求有fastcgi处理:

    fastcgi.server = ( ".php" =>  ( (  "host"  => "127.0.0.1", "port"=> 1026,  "bin-path"  =>  "/usr/bin/php-cgi"  )  ) )

    blog.daviesliu.net 和 blog.rainbud.net 是用mod_python编写的blogxp程序,所有静态内容都有扩展名,而动态内容没有扩展名。blogxp是用python程序生成XML格式的数据再交由mod_xslt转换成HTML页面,只能放在Apache下运行。该站点采用典型Lighttpd+Squid+Apache方式处理:

    $HTTP["host"] =~ "^blog" {
        $HTTP["url"] !~ "." {     
            proxy.server = ( "" => ( "localhost" => ( "host"=> "127.0.0.1", "port"=> 3128 ) ) )  #3128端口为
        }
    }

    share中有静态页面,也有用mod_python处理的请求,在/cgi/下:

    $HTTP["host"] =~ "^share" {
        proxy.server = (
            "/cgi" => ( "localhost" => ( "host"=> "127.0.0.1", "port"=> 3128 )  ) 
        )
    }

    Squid的配置
    只允许本地访问:

    http_port   3128
    http_access allow localhost
    http_access deny all

    启用反向代理:

     httpd_accel_host 127.0.0.1
     httpd_accel_port 81                   #apache的端口
     httpd_accel_single_host on
     httpd_accel_with_proxy on          #启用缓存
     httpd_accel_uses_host_header on #启用虚拟主机支持

    此方向代理支持该主机上的所有域名。

    Apache的配置
    配置/etc/conf.d/apache2,让其加载mod_python、mod_xslt、mod_php模块:

    APACHE2_OPTS="-D PYTHON -D XSLT -D PHP5"

    所有网站的根目录:

    <Directory "/var/www">
       AllowOverride All     #允许.htaccess覆盖
        Order allow,deny
        Allow from all
    </Directory>

    基于域名的虚拟主机:

    <VirtualHost *:81>
    ServerName blog.daviesliu.net
    DocumentRoot /var/www/daviesliu.net/blog
    </VirtualHost>

    这里明显没有lighttpd的evhost配置方便。

    blog.daviesliu.net下的.htaccess设置(便于开发,不用重启Apache):

    SetHandler mod_python
    PythonHandler blogxp.publisher
    PythonDebug On
    PythonAutoReload On

    <FilesMatch ".">
        SetHandler None        #静态文件直接由Apache处理
    </FilesMatch>

    <IfModule mod_xslt.c>
        AddType text/xsl .xsl  #防止对xsl文件进行转化
        AddOutputFilterByType mod_xslt text/xml
        XSLTCache off
        XSLTProcess on
    </IfModule>
    Header set Pragma "cache"
    Header set Cache-Control "cache"

    在blogxp.publisher里面,还需要设置返回的文档类型和过期时间:

        req.content_type = "text/xml"
        req.headers_out['Expires'] = formatdate( time.time() + 60 * 5 )

    经过这样的配置,所有站点都可以通过80、3128、81三个端口进行正常访问,80端口用作对外的访问,以减少负荷。81端口可以用作开发时的调试,没有缓存的困扰。

    性能测试
    由于时间和精力有限,下面只用ab2做一个并不规范的性能对比测试(每项都测多次取平均),评价指标为每秒钟的请求数。
    测试命令,以测试lighttpd上并发10个请求 scripts/prototype.js 为例:

    ab2 -n 1000 -c 10 http://blog.daviesliu.net:80/scripts/prototype.js

    静态内容:prototype.js (27kB)

    Con
     Lighttpd(:80)
     Squid(:3128)
     Apache(:81)
     
    1
     380
     210
     240
     
    10
     410
     215
     240
     
    100
     380
     160
     230
     
    可见在静态内容上,Lighttpd表现强劲,而Squid在没有配内存缓存的情况下比另两个Web服务器的性能要差些。

    动态页面:/rss (31kB)

    Con
     Lighttpd(:80)
     Squid(:3128)
     Apache(:81)
     
    1
     103
     210
     6.17
     
    10
     110
     200
     6.04
     
    100
     100
     100
     6.24
     

     

    在动态内容上,Squid的作用非常明显,而Lighttpd受限于Squid的效率,并且还要低一大截。如果是有多台Squid来做均衡的话,Lighttpd的功效才能发挥出来。
    在单机且静态内容很少的情况下,可以不用Lighttpd而将Squid置于最前面。

  • » 阅读全文...
  • 2007年11月5日

    Lighttpd上安装WordPress

    我写篇日志是想记录一下,怕以后不用的时候就忘了。

    其实很早就听人说lighttpd是一个轻量级的Web服务器,今天试了一下,果然名不虚传,在我装上后,运行Wordpress 的同时,内存只占用4.100k,然后我又启动了Apache,也运行Wordpress作为测试,内存达占用13.116k,不管怎么样,lighttpd还是无法被大的稳定的服务器所采用,但是作为个人测试使用,那就相当的不错了。

    接下来说一下怎么安装lighttpd,我是在windows下面测试的,为了简单我还是找了一个套件包:
    WLMP Version: 1.1.4 主要包含以下功能
    - LightTPD 1.4.16
    - MySQL 5.0.45
    - PHP 5.2.3
    - MiniPerl 5.8.8
    - OpenSSL 0.9.8e
    - phpMyAdmin 2.10.3

    本站下载:下载文件WLMP-Standard-1.1.4.1165-Win32-HUN.zip (0 Byte , 下载:6次)(最新版,高速下载!!实时更新 )

    官方下载地址在:http://wlmp.dtech.hu/
     

    下载好后,执行安装程序,然后让你选择安装的目录,安装到最后会提示你重新启动计算机,你选择是好行了。

    接下来安装wordpress,同样到官方下载,解压到lighttpd的www目录中,我的WLMP安装在D盘上,所以我将wordpress放到D:WLMPHTDOCSwp中,HTDOCS为根目录,其它与Apache都是一样的,Wordpress的Permalinks设置与在apache中是不一样的,因为lighttpd不支持.htaccess文件,所以要改lighttpd.conf文件来实现地址重写功能。

    在D:WLMPLightTPDconf中找到lighttpd-inc.conf,本来默认的文件应该是lighttpd.conf,可是在WLMP中,她被改名为lighttpd-inc.conf,然后在文件是找到


     
    CODE:

    1. #server.error-handler-404   = "/error-handler.php"

    这样的语句,在后面加上一句


     
    CODE:

    1. server.error-handler-404   = "/wp/index.php"

    同时记得把前面的#号去掉哦,这句的意思是说,当请求的文件不存在的时候就调用wp/index.php文件。

    下面加入重写规则,首先找到 #"mod_rewrite",然后把前面的#号掉,表示启动这个插件,接着查找url.rewrite,你会找到一条信息,当然我用的是WLMP并且版本号是1.4.16,如果你使用的是别的版本或不是WLMP套件,那我就不敢保证一样的了,不管怎么样找到相关的定义就行了,或查找#### url handling modules (rewrite, redirect, access),也可以,找到后在下面加一行:


     
    CODE:

    1. url.rewrite = ( "^/(archives|categories|comments|feed)/" => "/index.php" )

     

    这样就大功告成了,其实比Apache的重写规则还要简单,这两天我主要在研究lighttpd的virtual hosts设置部份,很多人说像鸡肋,不过我还是想了解一下,有什么心得我会写出来的!!!

  • » 阅读全文...