一,为什么要使用lighttpd? apache不可以吗? 在支持纯静态的对象时,比如图片,文件等 , lighttpd速度更快,更理想 [下面四段话来自:http://www.javayou.com/diary/3264\] Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。 lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用 户是非常重要的,因为迁移到lighttpd就必须面对这些问题。 实用起来lighttpd确实非常不错,上文提到的apache overload的问题,用lighttpd就完全解决了。apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低, 而且反应速度相当快。 利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级! 二,从何处下载lighttpd? http://www.lighttpd.net 这个是它的官方站 我下载的是 lighttpd-1.4.19.tar.bz2 ,在附件里。
此时需要安装一个软件包pcre(Perl兼容的规则表达式库) ,下载地址如下〔附件里也有〕:http://sourceforge.net/project/showfiles.php?group_id=10194&package_id=9960&release_id=597811 安装之后再编译lighttpd ,流程是上面的6步。 三、 编译后配置: cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd mkdir /etc/lighttpd cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf 如果你的Linux是RedHat,那么: cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd 然后修改/etc/init.d/lighttpd,把 lighttpd="/usr/sbin/lighttpd" 改为 lighttpd="/usr/local/lighttpd/sbin/lighttpd" 此脚本用来控制lighttpd的启动关闭和重起: # /etc/init.d/lighttpd start 启动报错如下: 启动 lighttpd:2008-08-06 12:40:28: (configfile.c.1136) base-docroot doesn't exist: /srv/www/htdocs/ 需要修改/etc/lighttpd/lighttpd.conf这个配置文件中的配置 /srv/www/htdocs/ 这个路径是不存在的。 server.document-root = "/srv/www/htdocs/" 改为 server.document-root = "/var/www/htdocs/" 再重新启动试试 # /etc/init.d/lighttpd restart 停止 lighttpd: [失败] 启动 lighttpd:2008-08-06 12:42:27: (configfile.c.1136) base-docroot doesn't exist: /var/www/htdocs/ 2008-08-06 12:42:27: (server.c.591) setting default values failed [失败] 原来是文件夹不在 # makedir /var/www/htdocs 搞定。 # /etc/init.d/lighttpd restart 停止 lighttpd: [失败] 启动 lighttpd: [ 确定 ] 如果你希望服务器启动的时候就启动lighttpd,那么: chkconfig lighttpd on 这样lighttpd就安装好了,接下来需要配置lighttpd。 参见lighttpd.conf配置大全 server.chroot 使用chroot提高安全性时,web服务器的root目录。建议使用。 server.username = "..." server.groupname = "..." 放弃root权限。 dir-listing.activate 如果没有找到index文件就列出目录。建议disable。 server.max-worker lighttpd默认只启动一个进程工作,但也支持apache那样启动多个进程,我的实验显示启动多个进程同时工作时并不能提高性能。 server.max-keep-alive-requests 这一条比较关键,对性能的影响比较大。在一个keep-alive会话终止连接前能接受处理的最大请求数。Default: 128,对一个高负载的应用来说是不够的。 server.max-keep-alive-idle 一个空闲keep-alive连接被丢弃前,存在的的最大秒数。Default: 30。 server.error-handler-404 页面找不到时候的处理,对性能没什么影响 server.max-fds 因为lighttpd是一个单线程(single-threaded)服务器,它的主要资源限制是文件描述符数目,默认值是1024。如果在一个高负载的站点上,可能你需要通过下面的设定增加这个限定值 server.max-fds = 2048 但这个限定只有在lighttpd做为root身份运行时才能生效。 connection.kbytes-per-second,server.kbytes-per-second 还有值得一提的时lighttpd可以限制每个连接或则特定虚拟机的流量。 compress.cache-dir,compress.filetype 如果文本稍微大点可以考虑使用压缩算法,减少带宽同时也能提高效率。例如: compress.cache-dir = "/var/cache/lighttpd/compress/" compress.filetype = ("text/plain", "text/html","text/javascript","text/css") server.stat-cache-engine = "fam" 这 一条能明显提升性能,stat() cache。一个stat调用代价可能是昂贵的。为它设一个cache能省时间又避免上下文切换。替代每次都stat()来确定文件的存在,它只stat ()一次,然后会监视目录,如果目录不变,他里面的文件也就没有变化。我们的内存文件系统中有没必要保留,依情况而定。 server.stat-cache-engine = "fam" # either fam, simple or disabled 日志: 在lighttpd中可以通过下面的配置来实现每天一个访问日志文件 accesslog.filename = "| /usr/local/lighttpd/bin/rotatelogs /usr/local/lighttpd/logs/access_%Y%m%d.log 86400" 启动: # /usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf 『-f是启动参数』 或: # /etc/init.d/lighttpd start 〖用法: /etc/init.d/lighttpd [start|stop|restart|condrestart|reload|status] 或: service lighttpd restart http://hi.baidu.com/619195553dream/blog/item/21e24e344ea99c97a8018e1e.html (责任编辑:IT) |