配置安装 lighttpd Web 服务器环境

作者 huhamhire,暂无评论,2013年2月26日 21:22 折腾历程

让各位久等了,作为这个系列的第二篇文章,跟前一篇发布的时间隔得有些长了,所以首先向给位朋友道个歉。最近由于忙着开学,加上前段时间因为之前一个VPS的访问质量实在是不咋滴,就把博客给搬了个家,写文章的时间就挤不出来了,望各位见谅。

下面废话不多说,继续这个系列的log。因为VPS的性能还是有限的(特别是内存的资源),在这样的服务器上选择一款轻量级的服务器软件就显得很有必要,所以很自然地我就选择了lighttpd代替apache的方案(apache对内存的占用在一般的VPS上显得是在是过于夸张了一些)。在开始安装之前,首先来介绍一下本文的主角——lighttpd。

Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。

Lighttpd是众多开源轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用 户是非常重要的,因为迁移到lighttpd就必须面对这些问题。

可能是我看到了不少关于nginx跑php的负面性文章,最终还是选择了lighttpd,至于nginx,只能下回有机会的时候再进行尝试。

此外,依旧需要说明一点,不同系统环境下相同功能的配置可能略有不同,本文只可作为参考学习之用。因为前面说到VPS搬了一次家,性能有所提升,所以下面文章中的配置方案也是针对我现在的VPS做的,我在这里列出新的服务器配置,供各位参考。这回我换上了RamNode提供的VPS,虽然是一家年轻的公司,不过他们卖的VPS都是用了SSD或者是拿SSD作为阵列缓存的,磁盘读写性能相当给力。关键是内存终于不是坑爹的128-256MB了,目前是256MB的物理内存加上256MB的Swap,比原先的VPS好了不少。系统依旧是64位的Cent OS 6。

介绍了基本情况之后,下面就来进行实际的安装配置。

准备工作

由于我的VPS在系统安装完成后已经自带并启用了apache服务器,所以先卸载这些在后面用不着的组件。只需卸跟httpd有关联的组件,如httpd-tools,即可连带完成httpd的卸载。


yum remove httpd-tools

卸载完成后,更新一下软件源的信息:


yum update

接下来,开始安装及配置。

一、安装lighttpd

由于CentOS官方的软件源中并没有提供lighttpd的相关组件,所以我们首先添加一下包含lighttpd的软件源。这里我选择的是中科大镜像站上提供的EPEL源。(这里偷点小懒,就直接在国内比较熟悉的找了。其实因为我们的VPS大多都在美帝的地盘上,所以完全可以找一个美国的镜像。)注意一点,我这儿是用的是提供给64位CentOS 6的软件源,在不同的机器上需要根据系统的实际情况查找对应的版本。


rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update

接下来,可以顺利安装lighttpd鸟~


yum install lighttpd

然后,不用先急着配置,可以顺带着将web服务器需要的扩展组件安装好。例如,我需要fastcgi和php-cli,可以直接安装妥当。


yum install lighttpd-fastcgi php-cli

二、配置lighttpd

编辑lighttpd的配置文件/etc/lighttpd/lighttpd.conf:


nano /etc/lighttpd/lighttpd.conf

在这里,可以根据需要设置相应的参数。虽然这会把VPS搬了个家,性能有所提升,但是廉价的VPS终究是性能有限的。所以,依旧需要限制一下最大连接数。

通过server.max-connections可以设置最大连接数,此处我设置成512,即最多允许同时存在512个连接。在修改了最大连接数之后,还需同时修改最大文件描述符个数server.max-fds,使其与最大连接数相对应。一般server.max-fds的数值为server.max-connections数值的2倍或者3倍。


server.max-fds = 1024
server.max-connections = 512

另外,如果Web服务器以后如果还需要运行诸如gitweb这样的cgi站点,可以在static-file.exclude-extensions的列表中加入".cgi"的扩展名。


static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi", ".cgi" )

三、配置php环境

php的配置与lighttpd的配置类似,编辑配置文件/etc/php.ini进行设置:


nano /etc/php.ini

同样也是选择性的根据实际需求设置一下。比如我在这儿设置了php脚本的内存限制(memory_limit),上传文件大小限制(upload_max_filesize与post_max_size),同时启用了short_open_tag来兼容是用简略方式书写的php程序段。此外我还将php的时区设置为我们日常使用的北京时间。


memory_limit 128M
upload_max_filesize = 200M
post_max_size = 200M
short_open_tag = On
date.timezone = 'Asia/Chongqing'

四、配置FastCGI

按照现在的通用做法,一般可以使用fastcgi代替一般的cgi来相应web请求。所以此处对fastcgi做一些设置。

首先编辑lighttpd的模块配置文件/etc/lighttpd/modules.conf:


nano /etc/lighttpd/modules.conf

取消fastcgi模块前的注释符以启用相关功能:


include "conf.d/fastcgi.conf"

随后,设置fastcgi的配置文件nano /etc/lighttpd/conf.d/fastcgi.conf:


nano /etc/lighttpd/conf.d/fastcgi.conf

可以参考下面内容配置,主要对php-cgi的进程数做一下设置。fastcgi由于使用了进程常驻的方法相应请求,一定程度上提升了效率,但也带来了单个进程占用内存的较多的问题。所以在一般性能有限的VPS上有必要对其运行时的进程数进行限制。

主要涉及到php-num-procs段内的几个参数,这里做一下详细说明:

  • max-procs:开启的php-cgi主进程数量;
  • PHP_FCGI_CHILDREN:每一个php-cgi主进程开启的子进程数量;
  • PHP_FCGI_MAX_REQUESTS:每个子进程在被重新创建前最多接受的请求次数。

经过实际测试,php-cgi子进程大约占用16-17MB的内存,而每一个父进程还需要消耗3-4MB的内存。所以假设主进程数为 Pn,子进程数为 Cn ,则可大致通过下面的公式粗略计算php-cgi占用的内存空间:

Mem = Pn × 3 + Pn × Cn × 16.

随后可以通过不同服务器的内存大小来选择 Pn, Cn 的取值。


 1 fastcgi.server = ( ".php" =>
 2            ( "php-num-procs" =>
 3              (
 4                "socket" => "/tmp/php-fastcgi.socket",
 5                "bin-path" => "/usr/bin/php-cgi",
 6                "bin-environment" => (
 7                  "PHP_FCGI_CHILDREN" => "4",
 8                  "PHP_FCGI_MAX_REQUESTS" => "1000",
 9                  "SERVER_ADMIN" =>"webmaster@example.com",
10                ),
11                "max-procs" => 3,
12                "broken-scriptfilename" => "enable",
13              )
14            ),
15         )

配置完成后便可启动lighttpd检查是否成功完成配置。


/etc/init.d/lighttpd start

同时,设置lighttpd服务开机自动运行。


chkconfig --levels 235 lighttpd on

五、建立php测试文件测试服务器是否正常

在默认的/var/www/lighttpd/目录下建立测试文件info.php:


nano /var/www/lighttpd/info.php

并输入以下内容:


1 <?php
2     phpinfo();
3 ?>

随后,访问 http://服务器IP或域名/info.php 来查看php的运行情况,如果能够正常显示如图所示的php信息,则说明服务器已经可以正常运行php程序了。

php_info
关键词:lighttpd , 虚拟主机
登录后进行评论