<span class="warning"><p></p>

Status: Deprecated

lighttpd illustration for: Status: Deprecated

This article covers a version of CentOS that is no longer supported. If you are currently operating a server running CentOS 6, we highly recommend upgrading or migrating to a supported version of CentOS.

Reason: CentOS 6 reached end of life (EOL) on November 30th, 2020 and no longer receives security patches or updates. For this reason, this guide is no longer maintained.

Introduction

Lighttpd is an open source web server originally written by Jan Kneschke as an alternative to Apache, it has a low memory footprint and numerous websites such as YouTube and Wikimedia run Lighttpd servers. MySQL is a popular database solution for use in web applications (such as WordPress) and is generally combined with a server side scripting language, PHP.

This tutorial will show you the steps required to install Lighttpd, PHP and MySQL on CentOs 6 so that you can get up and running with your VPS.

Assumptions

The steps in this tutorial require the user to have root privileges. You can see how to set that up in the Initial Server Setup Tutorial.

Step One - Prerequisites

Update your system:

				
					sudo yum update
				
			

You will need to install wget, a package for retrieving files using HTTP, HTTPS and FTP:

				
					sudo yum install wget
				
			

Notice that the command starts with "sudo". This will allow you to run the instructions with root privileges.

Step Two - Installing MySQL

To install MySQL, login into your VPS and type:

				
					sudo yum install mysql-server
				
			

Create a system start-up link for MySQL to enable the services to run at boot:

				
					sudo chkconfig --levels 235 mysqld on
				
			

This might seem silly, but it is a good idea to verify that the MySQL server is running, otherwise you will come up with a MySQL ERROR 2002 (HY000) when executing the mysql_secure_installation command:

				
					sudo service mysqld status
				
			

If the VPS is not running type:

				
					sudo service mysqld start
				
			

Create a password for the MySQL user root and perform some initial configurations:

				
					sudo mysql_secure_installation

Enter current password for root (enter for none):_
				
			

Since a MySQL root password has not been configured we can just press ENTER and continue with the process of setting up MySQL:

				
					Set root password? [Y/n] y

New password: SQL.ROOT.PASSWORD.EXAMPLE

Re-enter new password: SQL.ROOT.PASSWORD.EXAMPLE

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y
				
			

Step Three - Installing Lighttpd

Lighttpd and PHP-FPM are not supported from the official CentOS repositories, let&#39;s go ahead and add the Remi RPM and the EPEL repositories to CentOS:

				
					sudo rpm --import https://fedoraproject.org/static/0608B895.txt

sudo wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

sudo rpm -ivh epel-release-6-8.noarch.rpm
				
			

Then run the following command to install Lighttpd:

				
					sudo yum install lighttpd
				
			

Create a system start-up link for Lighttpd to enable the service to run at boot:

				
					sudo chkconfig --levels 235 lighttpd on
				
			

Start the service and check that it is running:

				
					sudo service lighttpd start

sudo service lighttpd status
				
			

Open your browser and type your VPS' IP http://123.456.789.10, you can run the following command to reveal your VPS' IP address:

				
					ifconfig
				
			

The Lighttpd welcome page should be displayed:

<img src="images/how-to-install-linux-lighttpd-mysql-and-php5-llmp-stack-on-centos-6-section-1.png; title="Lighttpd Welcome Page">

Typical Errors - Lighttpd Troubleshooting

ERROR 1: Lighttpd fails to start: "socket failed: Address family not supported by protocol" or "please use server.use-ipv6 only for hostnames, not without server.bind…" , open Lighttpd.conf:

				
					sudo nano /etc/lighttpd/lighttpd.conf
				
			

And disable IPv6:

				
					##

server.use-ipv6 = "disable"

##
				
			

ERROR 2: Warning "can't have more connections than fds/2: 1024 1024", open Lighttpd.conf:

				
					sudo nano /etc/lighttpd/lighttpd.conf
				
			

Uncomment #server.max-fds = 2048:

				
					##

server.max-fds = 2048

##
				
			

Restart Lighttpd:

				
					sudo service lighttpd restart

Stopping lighttpd [OK]

Starting lighttpd [OK]
				
			

Step Four - Installing PHP

Install PHP5 (FPM):

				
					sudo yum install php-fpm lighttpd-fastcgi
				
			

Open www.conf:

				
					sudo nano /etc/php-fpm.d/www.conf
				
			

Add lighttpd to the user and group:

				
					; Unix user/group of processes

; Note: The user is mandatory. If the group is not set, the default user's group

;       will be used.

user = lighttpd

; RPM: Keep a group allowed to write in log dir.

group = lighttpd
				
			

Create a system start-up link for PHP-FPM to enable the service to run at boot:

				
					sudo chkconfig --levels 235 php-fpm on
				
			

Start the service and check that it is running:

				
					sudo service php-fpm start

sudo service php-fpm status
				
			

Once the installation is complete, we have to enable PHP5 in Lighttpd. Let's find your php.ini file:

				
					sudo nano /etc/php.ini
				
			

And uncomment the required line:

				
					;

cgi.fix_pathinfo=1

;
				
			

Open fastcgi.conf:

				
					sudo nano /etc/lighttpd/modules.conf
				
			

And uncomment this line:

				
					##

include "conf.d/fastcgi.conf"

##
				
			

Open fastcgi.conf

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

and add the following lines:

				
					## for the php-num-procs example it means you will get 17*5 = 85 php

## processes. you always should need this high number for your very

## busy sites. And if you have a lot of RAM. 🙂

## ADD YOUR LINES HERE

fastcgi.server += ( ".php" =&gt;

        ((

                "host" =&gt; "127.0.0.1",

                "port" =&gt; "9000",

                "broken-scriptfilename" =&gt; "enable"

        ))

)

## GOOD JOB

#fastcgi.server = ( ".php" =&gt;
				
			

Install MySQL PHP module:

				
					sudo yum install php-mysql
				
			

Restart Lighttpd and PHP-FPM:

				
					sudo service php-fpm restart

sudo service lighttpd restart
				
			

Step Six (Optional) - Testing PHP using info.php

Create info.php:

				
					sudo nano /var/www/lighttpd/info.php
				
			

Add the following lines:

				
					&lt;?php

phpinfo();

?&gt;
				
			

Open your browser and go to your server's IP http://123.456.789.10/info.php .We can see that PHP is working through FPM/FastCGI:

<img src="images/how-to-install-linux-lighttpd-mysql-and-php5-llmp-stack-on-centos-6-section-1.png; title="PHP Info Page">

And that the MySQL module is listed, therefore working:

<img src="images/how-to-install-linux-lighttpd-mysql-and-php5-llmp-stack-on-centos-6-section-1.png; title="MySQL PHP Module">

And that is all; congratulations!