How to Install Lighttpd with PHP-FPM and MySQL on Ubuntu 20.04 LTS
This tutorial exists for these OS versions
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 18.04 (Bionic Beaver)
- Ubuntu 16.04 (Xenial Xerus)
- Ubuntu 14.04 LTS (Trusty Tahr)
- Ubuntu 12.04 LTS (Precise Pangolin)
On this page
Lighttpd is an open-source web server that focused on simplicity and high performance. It's a light webserver with small and low memory consumption but still remaining standard-compliance, security, and flexibility. The Lighttpd web server is a part of the LLMP Stack, which stands for Linux, Lighttpd, MySQL/MariaDB, and PHP/PHP-FPM.
In this tutorial, we will show you how to install and configure the LLMP Stack on the Ubuntu 20.04 Server. We will install the Lighttpd web server with the MariaDB database server and the PHP-FPM on the latest version of the Ubuntu 20.04 server.
Prerequisites
- Ubuntu 20.04 server
- Root privileges
- Understanding the basic of Ubuntu/Debian Server
What will we do?
- Install Lighttpd Web Server
- Install and Configure MariaDB Database Server
- Install and Configure PHP-FPM
- Setup Lighttpd and PHP-FPM
- Testing
Step 1 - Install Lighttpd
First, we will install the Lighttpd webserver to our Ubuntu 20.04 Server. The Lighttpd packages are available by default on the Ubuntu repository, update all available repositories, and install Lighttpd using the apt command below.
sudo apt update
sudo apt install lighttpd
Once all installation is completed, start the Lighttpd service and add it to the system boot.
systemctl start lighttpd
systemctl enable lighttpd
The Lighttpd service is up and running, check it using the following command.
systemctl status lighttpd
Below is the result you will get.
Next, add the HTTP, HTTPS, and SSH services to the ufw firewall.
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
Enable the ufw firewall service using the command below.
sudo ufw enable
Type 'y' to enable the ufw firewall, and as a result, you've enabled the firewall on the Ubuntu system.
Now open your web browser and type the server IP address on the address bar.
http://10.3.3.40/
And you will get the Lighttpd default index.html page.
As a result, the Lighttpd web server has been installed on the Ubuntu 20.04 System.
Step 2 - Install and Configure MySQL Server
In this step, we will install the MySQL database server and set up the default root user for MySQL.
Install MySQL Server using the apt command below.
sudo apt install mysql-server mysql-client
Once all installation is completed, start the MySQL service and add it to the system boot.
systemctl start mysql
systemctl enable mysql
Now check the MySQL service using the command below.
systemctl status mysql
Below is the result you will get.
As a result, the MySQL database server is up and running on the Ubuntu system.
Next, run the 'mysql_secure_installation' command below to set up the MySQL root password.
mysql_secure_installation
Press the 'Enter' button to continue, type your new password for the MySQL root user, and type 'Y' for all options.
Press y|Y for Yes, any other key for No:
Please set the password for root here.
New password:
Re-enter new password:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
As a result, the MySQL root password has been configured.
Next, log in to the MySQL shell using the root user as below.
mysql -u root -p
Now check all available users on MySQL using the following query.
select User,Host from mysql.user;
And you will get list default users on the MySQL Server. Now type 'exit' to log out from the MySQL shell.
As a result, the installation and configuration of MySQL Server for the LLMP Stack has been completed successfully.
Step 3 - Install and Configure PHP-FPM
In this step, we will install PHP-FPM packages and configure them to make it works with the Lighttpd web server.
Install PHP-FPM packages to the Ubuntu system using the apt command below.
sudo apt install php-fpm php-cgi php-mysql
The command will automatically install the latest PHP-FPM 7.4.
Once all installation is completed, go to the '/etc/php/7.4/fpm' directory and edit the configuration 'php.ini' using vim editor.
cd /etc/php/7.4/fpm/
vim php.ini
Uncomment the following line to enable FastCGI support.
cgi.fix_pathinfo=1
Save and close.
Next, start the PHP-FPM service and add it to the system boot.
systemctl start php7.4-fpm
systemctl enable php7.4-fpm
Now check the PHP-FPM service using the following command.
ss -pl | grep php
systemctl status php7.4-fpm
Below is the result you will get.
As can be seen, the PHP-FPM service is up and running on the Ubuntu 20.04 system. And by default, it's running under the sock file '/var/run/php/php7.4-fpm.sock'.
And the installation of PHP-FPM on ubuntu 20.04 has been completed.
Step 4 - Configure Lighttpd and PHP-FPM
For this step, we will configure the Lighttpd with PHP-FPM.
Now go to the '/etc/lighttpd/conf-available' directory, and you will get some configurations.
cd /etc/lighttpd/conf-available/
Copy the default PHP FastCGI configuration '15-fastcgi-php.conf' and edit using the vim editor.
cp 15-fastcgi-php.conf 15-fastcgi-php.conf.orig
vim 15-fastcgi-php.conf
Now you will get the default PHP FastCGI configuration as below.
fastcgi.server += ( ".php" =>
((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",
"max-procs" => 1,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
))
)
The default configuration will make the Lighttpd spawn the PHP-CGI on itself.
To make the Lighttpd works with the PHP-FPM service, replace the default PHP-CGI configuration using the following configuration.
fastcgi.server += ( ".php" =>
((
"socket" => "/var/run/php/php7.4-fpm.sock",
"broken-scriptfilename" => "enable"
))
)
Save and close.
Next, enable the Lighttpd module fastcgi and fastcgi-php using the command below.
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php
The command will make a symlink of modules configuration to the '/etc/lighttpd/conf-enabled' directory.
You can check the '/etc/lighttpd/conf-enabled' directory using the following command.
ls -lah /etc/lighttpd/conf-enabled/
And you will get both fastcgi and fastcgi-php configurations on the 'conf-enabled' directory.
Next, to apply the new setup and configuration, restart the Lighttpd service.
systemctl restart lighttpd
Make sure there is no error.
And as a result, the configuration of Lighttpd with PHP-FPM has been completed successfully.
Step 5 - Testing
To test our LLMP Stack installation, we will create a new PHP info script file on the default document root directory '/var/www/html'.
Go to the '/var/www/html' directory and create a new php file 'info.php' using vim editor.
cd /var/www/html/
vim info.php
Paste the following script.
<?php
phpinfo();
?>
Save and close.
Next, open your web browser and type the server IP address with the path '/info.php' as below.
http://10.10.10.30/info.php
And you will get the result as below.
As can be seen, you can see all info about your Lighttpd and PHP-FPM installation.
And as a result, the installation of LLMP Stack on Ubuntu 20.04 has been completed successfully.