How To Install Linux, Lighttpd, MySQL, and PHP5 (LLMP Stack) on Centos 6

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 Server.

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’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:

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" =>
        ((
                "host" => "127.0.0.1",
                "port" => "9000",
                "broken-scriptfilename" => "enable"
        ))
)
## GOOD JOB
#fastcgi.server = ( ".php" =>

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:

<?php
phpinfo();
?>

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:

And that the MySQL module is listed, therefore working:

And that is all; congratulations!