一,为什么要使用lighttpd?
apache不可以吗?
在支持纯静态的对象时,比如图片,文件等 ,
lighttpd速度更快,更理想
至于它和apache的比较,很多文档,大家可以google一下
二,从何处下载lighttpd?
http://www.lighttpd.net/download/
这个是它的官方站
三,如何安装?
1,编译安装
./configure --prefix=/usr/local/lighttpd
make
make install
configure完毕以后,会给出一个激活的模块和没有激活模块的清单,可以检查一下,是否自己需要的模块都已经激活,在enable的模块中一定要有“mod_rewrite”这一项,否则重新检查pcre是否安装。
2,编译后配置
cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
如果你的Linux是RedHat/CentOS,那么:
cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd
如果你的Linux是SuSE,那么:
cp doc/rc.lighttpd /etc/init.d/lighttpd
其他Linux发行版本可以自行参考该文件内容进行修改。
然后修改/etc/init.d/lighttpd,把
LIGHTTPD_BIN=/usr/sbin/lighttpd
改为
LIGHTTPD_BIN=/usr/local/lighttpd/sbin/lighttpd
此脚本用来控制lighttpd的启动关闭和重起:
/etc/init.d/lighttpd start
/etc/init.d/lighttpd stop
/etc/init.d/lighttpd restart
3,配置
修改/etc/lighttpd/lighttpd.conf
1)server.modules
取消需要用到模块的注释,mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi, mod_compress,mod_accesslog是一般需要用到的。
我们放开 "mod_rewrite"
"mod_compress",
2)server.document-root, server.error-log,accesslog.filename需要指定相应的目录
server.document-root = "/www/phc/html/"
mkdir /usr/local/lighttpd/logs
chmod 777 /usr/local/lighttpd/logs/
touch /usr/local/lighttpd/logs/error.log
chmod 777 /usr/local/lighttpd/logs/error.log
server.errorlog = "/usr/local/lighttpd/logs/error.log"
accesslog.filename = "|/usr/sbin/cronolog /usr/local/lighttpd/logs/%Y/%m/%d/accesslog.log"
3)用什么权限来运行lighttpd
server.username = "nobody"
server.groupname = "nobody"
从安全角度来说,不建议用root权限运行web server,可以自行指定普通用户权限。
4)静态文件压缩
mkdir /usr/local/lighttpd/compress
chmod 777 /usr/local/lighttpd/compress/
compress.cache-dir = "/usr/local/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html","text/javascript","text/css")
可以指定某些静态资源类型使用压缩方式传输,节省带宽,
对于大量AJAX应用来说,可以极大提高页面加载速度。
5)server.port = 81
6)#$HTTP["url"] =~ ".pdf$" {
131 # server.range-requests = "disable"
132 #}
4,优化
1 最大连接数
默认是1024
修改 server.max-fds,大流量网站推荐2048.
因为lighttpd基于线程,而apache(MPM-prefork)基于子进程,
所以apache需要设置startservers,maxclients等,这里不需要
2 stat() 缓存
stat() 这样的系统调用,开销也是相当明显的.
缓存能够节约时间和环境切换次数(context switches)
一句话,lighttpd.conf加上
server.stat-cache-engine = “fam”
lighttpd还另外提供simple(缓存1秒内的stat()),disabled选项.
相信没人会选disabled吧.
3 常连接(HTTP Keep-Alive)
一般来说,一个系统能够打开的文件个数是有限制的(文件描述符限制)
常连接占用文件描述符,对非并发的访问没有什么意义.
(文件描述符的数量和许多原因有关,比如日志文件数量,并发数目等)
这是lighttpd在keep-alive方面的默认值.
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 30
换言之,lighttpd最多可以同时承受30秒长的常连接,每个连接最多请求128个文件.
但这个默认值确实不适合非并发这种多数情况.
lighttpd.conf 中减小
server.max-keep-alive-requests
server.max-keep-alive-idle
两个值,可以减缓这种现象.
甚至可以关闭lighttpd keep-alive.
server.max-keep-alive-requests = 0
4 事件处理
对于linux kernel 2.6来说,没有别的可说
lighttpd.conf中加上这一句足矣
server.event-handler = “linux-sysepoll”
另外,
linux 2.4 使用 linux-rtsig
freebsd 使用 freebsd-kqueue
unix 使用 poll
5 网络处理
lighttpd 大量使用了 sendfile() 这样一个高效的系统调用.
减少了从应用程序到网卡间的距离.
(同时也减少了lighttpd对cpu的占用,这部分占用转嫁到内核身上了)
根据平台,可以设置不同的参数.
server.network-backend = “linux-sendfile”
(linux)
freebsd: freebsd-sendfile
unix: writev
如果有兴趣的话,也可以看看lighttpd在async io(aio)上的实现,仅限 lighttpd 1.5
(linux-aio-sendfile, posix-aio, gthread-aio)
此外,网络方面,核心的参数也需要适当进行修改,
这里就不需要详细说明了.
5,启动
6,配置日志
logrotate & cronolog
logrotate很粗暴,直接把进程砍了然后移动日志
cronolog就是比较不错的方式.
lighttpd用法:
accesslog.filename = " |/usr/sbin/cronolog /var/log/lighttpd/%Y/%m/%d/access_XXXX.log"
7,安装pcre
从何处下载?
http://www.pcre.org/
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.4.tar.bz2
安装过程:
./configure
make clean
make
make install
8,支持fam
gamin默认已安装了此包
yum install gamin-devel
另外配置时需添加:
./configure --prefix=/usr/local/lighttpd --with-fam
9,测试lighttpd的启动:
/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf
10,防止盗链
#$HTTP["referer"] !~ "^($|http://.*.(chinafotopress.com|chinafotopress.cn))" {
# $HTTP["url"] =~ ".(jpg|jpeg|png|gif|rar|zip|mp3)$" {
# #url.redirect = (".*" => "http://www.baidu.com/")
# url.access-deny = (".jpg")
# }
#}
#$HTTP["referer"] == "" {
# $HTTP["url"] =~ ".(jpg|jpeg|png|gif|rar|zip|mp3)$" {
# #url.redirect = (".*" => "http://www.baidu.com/")
# url.access-deny = (".jpg")
# }
#}
日志处理
Sometimes, Google Analytics just isn't enough when it comes to keeping and interpreting server stats. After finding a suitable log file analyzer, AWStats, the next step involved separating out the log files on a per domain basis. When the server was first set up, everything was shuttled to one set of access and error log files. While AWStats could technically analyze this log, the suggested set up involves having one set per domain. This article details the process of separating out the log files and making sure that these new files get rotated correctly.
Create Log Directories
While it would be possible to keep all of the files in one directory and to just name them relative to the domain, for this tutorial we will assume that we will create subdirectories based on the domain name. The first step would be to create a directory for each domain.
sudo -u www-data mkdir /var/log/lighttpd/www.example1.com
sudo -u www-data mkdir /var/log/lighttpd/www.example2.com
Update lighttpd.conf
After creating the directories, it's time to update the lighttpd conf file in /etc/lighttpd. We'll want to set the log files by host name. We already had directives setting the server.document-root for these domains so we only added the bolded lines.
$HTTP["host"] =~ "(^|\.)example1.com"$" {
server.document-root = "/var/www/www.example1.com",
server.errorlog = "/var/log/lighttpd/www.example1.com/error.log",
accesslog.filename = "/var/log/lighttpd/www.example1.com/access.log",
}
$HTTP["host"] =~ "(^|\.)example2.com$" {
server.document-root = "/var/www/www.example2.com",
server.errorlog = "/var/log/lighttpd/www.example2.com/error.log",
accesslog.filename = "/var/log/lighttpd/www.example2.com/access.log",
}
After adding these directives, you will need to restart the server.
sudo /etc/init.d/lighttpd restart
Update Logrotate
Finally, we will want logrotate to rotate these new directories. Since our main goal is to integrate the logs with AWStats, it made sense to add a separate entry for each log directory. However, if you don't need call different scripts for the different domains, feel free to create one directive. We just copied the existing logrotate configuration and editted it for each of the domains. Below are examples of what this might look like.
/var/log/lighttpd/*.log {
daily
missingok
copytruncate
rotate 60
compress
notifempty
sharedscripts
postrotate
if [ -f /var/run/lighttpd.pid ]; then \
kill -HUP $(
fi;
endscript
}
/var/log/lighttpd/www.example1.com/*.log {
daily
missingok
copytruncate
rotate 60
compress
notifempty
sharedscripts
postrotate
if [ -f /var/run/lighttpd.pid ]; then \
kill -HUP $(
fi;
endscript
}
/var/log/lighttpd/www.example2.com/*.log {
daily
missingok
copytruncate
rotate 60
compress
notifempty
sharedscripts
postrotate
if [ -f /var/run/lighttpd.pid ]; then \
kill -HUP $(
fi;
endscript
}
To make just one configuration entry, it would look like this:
"/var/log/lighttpd/*.log" "/var/log/lighttpd/www.example1.com/*.log" "/var/log/lighttpd/www.example2.com/*.log" {
daily
missingok
copytruncate
rotate 60
compress
notifempty
sharedscripts
postrotate
if [ -f /var/run/lighttpd.pid ]; then \
kill -HUP $(
fi;
endscript
}
Sources
* Lighttpd rotating log files with logrotate tool
* Howto: Lighttpd web server setting up virtual hosting
Trackback URL for this post:
http://tracy.hurleyit.com/trackback/1140
lighttpd虚拟主机配置
$HTTP["host"] == "bbs.xxx.com" {
server.name = "bbs.xxx.com"
server.document-root = "/var/www/bbs"
server.errorlog = "/var/www/bbs/error.log"
accesslog.filename = "/var/www/bbs/access.log"
}
else
lighttpd.conf解释
server.use-ipv6 = "disable" # 缺省为禁用
server.event-handler = "linux-sysepoll" # Linux环境下epoll系统调用可提高吞吐量
#server.max-worker = 10 # 如果你的系统资源没跑满,可考虑调高 lighttpd进程数
server.max-fds = 4096 # 默认的,应该够用了,可根据实际情况调整
server.max-connections = 4096 # 默认等于 server.max-fds
server.network-backend = "linux-sendfile"
server.max-keep-alive-requests = 0 # 在一个keep-alive会话终止连接前能接受处理的最大请求数。0为禁止
#"mod_expire", 过期时间
#"mod_mem_cache", 缓存
# 设置要加载的module
server.modules = (
"mod_rewrite",
"mod_redirect",
# "mod_alias",
"mod_access",
# "mod_cml",
# "mod_trigger_b4_dl",
"mod_auth",
"mod_expire",
# "mod_status",
# "mod_setenv",
"mod_proxy_core",
"mod_proxy_backend_http",
"mod_proxy_backend_fastcgi",
# "mod_proxy_backend_scgi",
# "mod_proxy_backend_ajp13",
# "mod_simple_vhost",
"mod_evhost",
# "mod_userdir",
# "mod_cgi",
"mod_compress",
# "mod_ssi",
# "mod_usertrack",
# "mod_secdownload",
# "mod_rrdtool",
"mod_accesslog" )
# 网站根目录
server.document-root = "/var/www/"
# 错误日志位置
server.errorlog = "/var/log/lighttpd/error.log"
# 网站Index
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm" )
# 访问日志, 以及日志格式 (combined), 使用X-Forwarded-For可越过代理读取真实ip
accesslog.filename = "/var/log/lighttpd/access.log"
accesslog.format = "%{X-Forwarded-For}i %v %u %t \"%r\" %s %b \"%{User-Agent}i\" \"%{Referer}i\""
# 设置禁止访问的文件扩展名
url.access-deny = ( "~", ".inc", ".tpl" )
# 服务监听端口
server.port = 80
# 进程id记录位置
server.pid-file = "/var/run/lighttpd.pid"
# virtual directory listings 如果没有找到index文件就列出目录。建议disable。
dir-listing.activate = "disable"
# 服务运行使用的用户及用户组
server.username = "www"
server.groupname = "www"
# gzip压缩存放的目录以及需要压缩的文件类型
compress.cache-dir = "/tmp/lighttpd/cache/compress/"
#compress.filetype = ("text/plain", "text/html")
compress.filetype = ("text/plain", "text/html","text/css","image/jpg","image/jepg","image/png","image /bmp")#压缩的配置,图片不需要压缩 会变大
# fastcgi module
# for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
$HTTP["url"] =~ "\.php$" {
proxy-core.balancer = "round-robin"
proxy-core.allow-x-sendfile = "enable"
# proxy-core.check-local = "enable"
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "unix:/tmp/php-fastcgi1.sock","unix:/tmp/php-fastcgi2.sock" )
proxy-core.max-pool-size = 16
}
# 权限控制
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/var/www/htpasswd.userfile"
# 基于 evhost 的虚拟主机 针对域名
$HTTP["host"] == "a.lostk.com" {
server.document-root = "/var/www/lostk/"
server.errorlog = "/var/log/lighttpd/lostk-error.log"
accesslog.filename = "/var/log/lighttpd/lostk-access.log"
# 设定文件过期时间
expire.url = (
"/css/" => "access 2 hours",
"/js/" => "access 2 hours",
)
# url 跳转
url.redirect = (
"^/$" => "/xxx/index.html",
)
# url 重写 (cakephp可用)
url.rewrite = (
"^/(css|js)/(.*)$" => "/$1/$2",
"^/([^.]+)$" => "/index.php?url=$1",
)
# 权限控制
auth.require = ( "" =>
(
"method" => "basic",
"realm" => "admin only",
"require" => "user=admin1|user=admin2" # 允许的用户, 用户列表文件 在上面配置的auth.backend.htpasswd.userfile 里
),
)
}
# 针对端口的虚拟主机
$SERVER["socket"] == "192.168.0.1:8000" {
server.document-root = "/var/www/xxx/"
server.errorlog = "/var/log/lighttpd/test-error.log"
accesslog.filename = "/var/log/lighttpd/test-access.log"
# ...
}
$HTTP["host"] == "image.fashionfree.com.cn" {
server.name="image.fashionfree.com.cn"
server.document-root = "/opt/da/imageRoot"
index-file.names = ( "index.jpg","index.shtml", "index.html","index.htm", "default.htm" )
mem-cache.enable = "enable"
mem-cache.max-memory = 1024 #M
mem-cache.max-file-size = 6000 #Kb
mem-cache.expire-time = 180
$HTTP["url"] =~ "^/test/" {
expire.url = ( "" => "access 30 days" )#所有test目录下的都缓存,其他配置方法好像不起作用,还有解析过来的域名(用ip访问好像就不行)要和 “image.fashionfree.com.Cn”一致,要不 死活配置 不了 expire。
/var/log/lighttpd/*.log {
daily
rotate 7
nocompress
postrotate
/etc/rc.d/init.d/lighttpd reload
endscript
}
分享到:
相关推荐
以上就是lighttpd配置文件和启动脚本的基本介绍。在实际部署和运维过程中,需要根据具体需求对配置文件进行调整,并确保启动和停止脚本的可靠性,以确保Web服务器的稳定运行。理解并熟练掌握这些内容,对于管理和...
**三、Varnish+Lighttpd配置步骤** 1. **安装Varnish** 在Ubuntu系统中,可以使用以下命令安装Varnish: ``` sudo apt-get update sudo apt-get install varnish ``` 2. **配置Varnish** 配置Varnish的主要...
"用于ROR应用的lighttpd配置模板"提供了一个预设的配置,帮助开发者快速配置lighttpd以支持Rails环境。 Lighttpd以其低内存占用和高并发能力而受到欢迎,它支持FastCGI,这是与Rails应用进行通信的常见接口。...
在Linux上安装Lighttpd,里面有遇到的一些问题的解决方法,整个安装流程,还有参考网站
#### 四、Lighttpd配置 **创建配置文件** 在Lighttpd安装目录下的`doc`目录中,有一个示例配置文件`lighttpd.conf`,可以将其复制到`conf`目录,并进行编辑: ``` mkdir conf cp /path/to/lighttpd-1.4.8/doc/...
在Windows上配置lighttpd与FastCGI,需要在lighttpd配置文件中启用fastcgi模块,并定义fastcgi.server部分,指定PHP处理器的位置和连接参数。 PHP5是广泛使用的服务器端脚本语言,尤其适合Web开发。在lighttpd和...
3、首先配置lighttpd.conf 修改为自己的工作路径 var.server_root = "/home/caoft/lighttpd/lighttpd_websocket/http_server" var.state_dir = "/home/caoft/lighttpd/lighttpd_websocket/http_server" var.home_dir...
### Lighttpd简单配置知识点详解 #### 一、Lighttpd简介 Lighttpd是一款开源的Web服务器软件,以其轻量级、低内存消耗而著称。它支持SSL/TLS加密连接、URL重写等高级功能,适用于中小型网站或者作为反向代理服务器...
交叉编译最新版的lighttpd-1.4.55,配置与测试CGI与HTML.内含 lighttpd-1.4.55源码,移植教程,cgi测试代码,html测试代码.测试cgi时,浏览器中应该输入192.168.100.30/cgi-bin/xx.cgi .其中 192.168.100.30为开发板的ip
压缩包文件`lighttpd_cgi`可能包含示例CGI脚本、lighttpd配置示例以及其他辅助文件,用于帮助初学者更好地理解和实践lighttpd与CGI的结合使用。解压并研究这些文件,可以帮助你深入理解这一过程。 总结,通过上述...
《lighttpd-1.4.45:轻量级Web服务器的魅力解析》 lighttpd,这个名字在Web服务器领域中或许不如Apache或Nginx那样耳熟能详,但其独特的轻量级特性和高效性能,使得它在特定场景下成为理想的解决方案。lighttpd-...
主要内容包括:lighttpd介绍与分析准备工作、lighttpd网络服务主模型、lighttpd数据结构、伸展树、日志系统、文件状态缓存器、配置信息加载、i/o多路复用技术模型、插件链、网络请求服务响应流程、请求响应数据快速...
1. **配置FastCGI**:在lighttpd配置文件中,定义FastCGI服务器的监听地址和路径,如下所示: ``` fastcgi.server += ("api_handler.fcgi" => (( "bin-path" => "/path/to/api_handler.fcgi", "check-local" =>...
本文将围绕lighttpd的代码阅读资料,详细介绍其核心概念、设计架构以及如何有效地进行代码分析。 一、lighttpd的核心特性 1. 轻量级:lighttpd设计之初就注重资源效率,尤其是在内存使用上,使得它在处理大量并发...
通过在lighttpd配置中设置反向代理规则,可以将来自客户端的请求转发到后端服务器。反向代理不仅可以隐藏后端服务器的细节,提高安全性,还能实现负载均衡和缓存,提升系统性能。 总结,lighttpd源码分析涵盖了从...
2. **配置lighttpd**: 配置文件通常位于`/etc/lighttpd/lighttpd.conf`。在此文件中,可以设定服务器监听的端口、根目录、访问控制等参数。务必根据实际需求进行定制,以确保安全性。 3. **启动与管理**: 安装完成...
具体来说,通过合理配置FastCGI后端的数量、使用缓存技术、优化数据库查询等方式,可以有效提升整体性能。此外,利用Lighttpd内置的统计工具对服务器负载情况进行实时监测也是十分重要的。这些方法不仅适用于PHP后端...
4. **配置lighttpd**:补丁安装完成后,你需要修改lighttpd的配置文件(通常是`lighttpd.conf`)。这可能包括设置MIME类型、启用HTTP/2以支持H264编码,以及配置模块以处理MP4文件和提供快进功能。 5. **测试和优化...
这可能涉及到安装NDK(Android Native Development Kit),设置交叉编译工具链,并对lighttpd的配置文件进行调整以适应Android的环境。 2. **下载PHP-CGI**:可以从PHP官方网站获取适用于Android的预编译版本,或者...
lighttpd使用灵活的配置文件,`lighttpd-1.4.20/src/configparser.c`是配置解析的核心,它解析`.conf`文件并构建内部数据结构。通过配置项,lighttpd可以设置监听端口、虚拟主机、日志记录、URL重写规则等。 3. **...