1.  常用文档

2.  Debian下基本安装

在Debian下安装很简单:“apt-get install lighttpd”就可以了。

安装之后默认使用www-data用户启动服务进程,默认的页面根目录在/var/www,配置文件都在/etc/lighttpd下面,日志文件在/var/log/lighttpd。

3.  php相关配置

3.1  启用php支持

如果要启用php支持,可以这样(使用的是fast-cgi方式):

  1. 首先“apt-get install php5-cgi”来安装php5相关的包(当然也可以改为安装php4-cgi来仅使用php4版本)
  2. 修改/etc/lighttpd/conf-available/10-fastcgi.conf,将里面的“php4-cgi”字样改为“php5-cgi”以使配置脚本正确调用php5包中提供的指令。
  3. “lighty-enable-mod fastcgi”来启用lighttpd的fastcgi模块支持,再“/etc/init.d/lighttpd force-reload”来强制lighttpd重新读取配置文件来激活php解析。

这样已经可以在/var/www目录下放置php程序了。php自身的参数配置可以修改/etc/php5/cgi/php.ini来实现。

3.2  优化php的FastCGI设置

详见http://trac.lighttpd.net/trac/wiki/Docs%3APerformanceFastCGI

由于服务器内存紧张,没有启用XCache等组件,我在这里主要是调整了FastCGI启动php的进程和线程数。除了按照文中通过估计单位时间pv来确定需要准备的php总线程数外,也可以考虑用试验法……top指令是可以看到所有php线程的,按大写的T键,使线程/进程们按照已经占用的所有cpu时间来排序,如果仍然有几乎没有怎么工作的php线程,则通常可以认为是总线程数有富余。

此外,文中建议避免少量进程带大量线程,因为这样一旦一个进程挂掉,会一次死掉很多线程,其他进程就很有可能负载暴增,造成进程死亡的连锁反应。

3.3  安装 XCache

XCache 在 Debian 中有官方安装包,而 eAccelerator 没有,需要自行编译,因此暂时使用的 XCache 。只需 apt-get install php5-xcache 后重启 lighttpd 即可,网站系统的执行效率有可以感觉到的明显提升。其默认设置的缓存容量为 16M ,在小内存的系统上可能还有进一步优化的余地。

3.4  安装eAccelerator模块加速

安装了eAccelerator后php线程占用的内存有所增加(当然占用内存多少和线程执行的php脚本本身的特点也有关系),但脚本执行的速度也是能够感觉到有加速的。

安装eAccelerator的方法详见http://www.howtoforge.com/eaccelerator_php5_debian_etch (如果是其他Linux发行版,在该网站也可以找到对应的说明文档)。大致步骤有:

apt-get install build-essential php5-dev
cd /tmp
wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2
tar xvfj eaccelerator-0.9.5.2.tar.bz2
cd eaccelerator-0.9.5.2
phpize
./configure
make
make install

然后设置eAccelerator的配置参数(/etc/php5/conf.d/eaccelerator.ini),如果没有这个文件,可以自行建立,如果服务器内存足够那么文件内容通常写成这样:

extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

如果服务器内存很紧张,比如服务器总共才128M内存,那么可以这样写(参考自Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化):

extension="eaccelerator.so"
eaccelerator.shm_size="1"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.keys = "disk_only"
eaccelerator.sessions = "disk_only"
eaccelerator.content = "disk_only"

其中省内存的配置对每个PHP进程大约只多占用1M内存,但在我服务器上实测性能大约能提高10%。此外也可以参考http://www.eaccelerator.net/wiki/Settings 的说明自行琢磨着调整这些参数。

建立eAccelerator需要的缓存存储目录:

mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator

重启lighttpd,在info.php应该可以看到带有“eAccelerator”的字样。

出于服务器安全考虑,在安装eAccelerator成功后,会去除服务器上的软件编译环境:

apt-get remove --purge autoconf automake automake1.4 autotools-dev binutils build-essential cpp cpp-4.3 dpkg-dev g++ g++-4.3 gcc gcc-4.3 libc6-dev libgomp1 libltdl3-dev libmpfr1ldbl libssl-dev libstdc++6-4.3-dev libtimedate-perl libtool linux-libc-dev patch php5-dev shtool zlib1g-dev

3.5  在lighty下使用wp-super-cache

详细步骤说明文档见:在Lighttpd上使用wp-super-cache

4.  启用WebDAV

4.1  服务器端配置

以下步骤在Debian Lenny版本下测试通过(参考了How To Set Up WebDAV With Lighttpd On Debian Etch):

除lighttpd包外,还需要安装lighttpd-mod-webdav apache2-utils两个包,后者主要是要用到里面的htpasswd配置工具。

激活lighty的认证模块:

 lighty-enable-mod auth

编辑/etc/lighttpd/lighttpd.conf文件,确认mod_alias和mod_webdav都已经激活。

新建一个passwd.dav文件来存储认证用的用户名和密码,并设定适当的权限。这里test是用作示例的用户名,-c参数表示不管passwd.dav文件是否已经存在,都重新建立这个文件(这里我是把dav文件存储在了/var/www下,在实际应用中需要确保所在目录不会被公开访问到):

htpasswd -c /var/www/passwd.dav test
chown root:www-data /var/www/passwd.dav
chmod 640 /var/www/passwd.dav

然后我们再回来编辑/etc/lighttpd/lighttpd.conf文件,搞一个启用了WebDAV的虚拟站点:

$HTTP["host"] == "www.example.com" {
  server.document-root = "/var/www/web1"
  alias.url = ( "/webdav" => "/var/www/web1" )
  $HTTP["url"] =~ "^/webdav($|/)" {
    webdav.activate = "enable"
    webdav.is-readonly = "disable"
    webdav.sqlite-db-name = "/var/run/lighttpd/lighttpd.webdav_lock.db"
    auth.backend = "htpasswd"
    auth.backend.htpasswd.userfile = "/var/www/passwd.dav"
    auth.require = ( "" => ( "method" => "basic",
                             "realm" => "webdav",
                             "require" => "valid-user" ) )
  }
}

如果按照这个配置文件,那么站点的根目录是只读的(也就是普通的http访问),而/webdav/目录是可写的WebDAV访问方式。这是靠配置文件中alias.url和$HTTP["url"] =~ "^/webdav($|/)"这两句来实现的。但我在这里遇到了一个问题,我的客户端似乎与alias.url不兼容,所以最后我只好把WebDAV配置到站点的根目录了。。

都搞好以后重启lighty,WebDAV应该就已经生效了:

 /etc/init.d/lighttpd restart

4.2  WebDAV的访问客户端

  • cadaver是一个命令行的客户端,常被用于配置完成后的基本功能测试。
  • Windows下可以在网络邻居中新建连接,将WebDAV服务映射成一个本地路径(当然还有DreamWeaver等很多应用程序支持WebDAV);或者用AnyClient这个Java的图形化客户端也相当不错。
  • Mac下有很多程序都有WebDAV的连接功能,比如Transmit、ForkLift等等。
GlossyBlue theme adapted by David Gilbert
Powered by PmWiki