Installing Lighttpd With PHP5 And MySQL Support On CentOS 5.0

Version 1.0
Author: Falko Timme
Last edited 10/01/2007

Lighttpd is a secure, fast, standards-compliant web server designed for speed-critical environments. This tutorial shows how you can install Lighttpd on a CentOS 5.0 server with PHP5 support (through FastCGI) and MySQL support.

I do not issue any guarantee that this will work for you!

 

1 Preliminary Note

In this tutorial I use the hostname server1.example.com with the IP address 192.168.0.100. These settings might differ for you, so you have to replace them where appropriate.

 

2 Installing MySQL 5.0

First we install MySQL 5.0 like this:

yum install mysql mysql-server

Then we create the system startup links for MySQL (so that MySQL starts automatically whenever the system boots) and start the MySQL server:

chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start

Create a password for the MySQL user root (replace yourrootsqlpassword with the password you want to use):

mysqladmin -u root password yourrootsqlpassword

Then check with

netstat -tap | grep mysql

on which addresses MySQL is listening. If the output looks like this:

tcp        0      0 localhost.localdo:mysql *:*                     LISTEN     2713/mysqld

which means MySQL is listening on localhost.localdomain only, then you're safe with the password you set before. But if the output looks like this:

tcp        0      0 *:mysql *:*                     LISTEN     2713/mysqld

you should set a MySQL password for your hostname, too, because otherwise anybody can access your database and modify data:

mysqladmin -h server1.example.com -u root password yourrootsqlpassword

 

3 Installing Lighttpd

Lighttpd is not available from the official CentOS 5.0 repositories, but from the RPMforge repositories (see http://dag.wieers.com/rpm/FAQ.php#B2 for instructions). We install the RPMforge package for RHEL 5 which works for CentOS 5.0 as well:

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Afterwards, we can install Lighttpd like this:

yum install lighttpd

Then we create the system startup links for Lighttpd (so that Lighttpd starts automatically whenever the system boots) and start it:

chkconfig --levels 235 lighttpd on
/etc/init.d/lighttpd start

Now direct your browser to http://192.168.0.100, and you should see the Lighttpd placeholder page:

Lighttpd's default document root is /srv/www/lighttpd on CentOS 5.0, and the configuration file is /etc/lighttpd/lighttpd.conf.

 

4 Installing PHP5

We can make PHP5 work in Lighttpd through FastCGI. Therefore we install the packages lighttpd-fastcgi and php-cli:

yum install lighttpd-fastcgi php-cli

 

5 Configuring Lighttpd And PHP5

To enable PHP5 in Lighttpd, we must modify two files, /etc/php.ini and /etc/lighttpd/lighttpd.conf. First we open /etc/php.ini and add the line cgi.fix_pathinfo = 1 right at the end of the file:

vi /etc/php.ini

[...]
cgi.fix_pathinfo = 1

Then we open /etc/lighttpd/lighttpd.conf and uncomment "mod_fastcgi", in the server.modules stanza:

vi /etc/lighttpd/lighttpd.conf

[...]
server.modules              = (
#                               "mod_rewrite",
#                               "mod_redirect",
#                               "mod_alias",
                                "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
#                               "mod_status",
#                               "mod_setenv",
                                "mod_fastcgi",
#                               "mod_proxy",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
#                               "mod_cgi",
#                               "mod_compress",
#                               "mod_ssi",
#                               "mod_usertrack",
#                               "mod_expire",
#                               "mod_secdownload",
#                               "mod_rrdtool",
                                "mod_accesslog" )
[...]

and then , further down the file, there's a fastcgi.server stanza which we uncomment as well - make sure you use /usr/bin/php-cgi instead of /usr/local/bin/php in the "bin-path" line::

[...]
#### fastcgi module
## read fastcgi.txt for more info
fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => "/tmp/php-fastcgi.socket",
                                   "bin-path" => "/usr/bin/php-cgi"
                                 )
                               )
                            )
[...]

Then we restart Lighttpd:

/etc/init.d/lighttpd restart

Share this page:

6 Comment(s)

Add comment

Comments

From: Ben G at: 2009-05-01 13:53:48

Following these steps, I encountered the following error when starting lighttpd after doing the PHP config:


bind failed for: unix:/var/run/lighttpd/php-fastcgi.socket-0


I found my solution here:


http://redmine.lighttpd.net/boards/2/topics/144


mkdir /var/run/lighttpd/


and chown it to the user you configured in lighttpd.

From: Gustavo D. Castro at: 2009-11-09 21:18:19

Sou Brasileiro e falo português. Escrevo na minha lingua local.


Excelente o post, está me ajudando muito, parabens! 

From: Gustavo D. Castro at: 2009-11-09 21:51:20

Outra coisa importante, para quem está tendo problemas para ligar o lighttpd ou em dar restart a dica é:


Rode o comando:


mkdir /var/run/lighttpd/


(esse comando cria a pasta que falta na instalação que por algum motivo não está sendo criada automaticamente.)


e depois:


chmod 777 /var/run/lighttpd/


(esse comando da permição 777 a pasta que acabamos de criar)


Rode novamente o comando /etc/init.d/lighttpd restart

Problema resolvido!!!

 

From: !ian at: 2009-10-26 19:46:08

Great tutorial, thanks!


It saved me a lot of time :)

From: Enea at: 2010-02-04 05:37:42

Hello,


 can you please also describe how to install php with fast-cgi support? I keep getting 403 errors.

From: aroel at: 2010-07-27 13:10:58

i think you haven't installed lighttpd-fastcgi


yum install lighttpd-fastcgi