How to install Lighttpd and PHP 8 on Debian Bullseye
Lighttpd is a secure, fast, standards-compliant web server designed for speed-critical environments. This tutorial will show how we can install Lighttpd web server on an Debian Bullseye server with PHP 8 module through PHP-FPM. PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. In this tutorial we'll use PHP-FPM instead of Lighttpd's spawn-fcgi.
In this tutorial I use the hostname kecoak
with the IP address 10.10.10.228
. You may have different settings, so you have to replace them where appropriate.
Getting Started
As usual, before proceed with actual installation, make sure that your system packages are up-to-date. Run the commands below to perform system package update and upgrade.
$ sudo apt update
$ sudo apt upgrade
Now we're ready to proceed with installation.
Lighttpd Installation
After the system is ready, we'll continue with Lighttpd installation:
$ sudo apt install lighttpd
When the installation process is done, open your web browser and go to http://10.10.10.228/index.lighttpd.html
(your IP might differs). You should see Lighttpd welcome page like below:
Lighttpd’s default document root is /var/www/html
on Debian, and the configuration file is /etc/lighttpd/lighttpd.conf
. Additional configurations are stored in files in the /etc/lighttpd/conf-available
directory – these configurations can be enabled with the lighttpd-enable-mod
command which creates a symlink from the /etc/lighttpd/conf-enabled
directory to the appropriate configuration file in /etc/lighttpd/conf-available
. You can disable configurations with the lighttpd-disable-mod
command.
PHP 8 Installation
Next, we'll continue with PHP 8 installation. Back to terminal, enter this command:
$ sudo apt install php8.0-fpm
PHP-FPM is a daemon process (with the init script php8.0-fpm
) that runs a FastCGI server on the socket /var/run/php/php8.0-fpm.sock
.
Lighttpd PHP-FPM configuration
To enable PHP8 in Lighttpd, we must modify /etc/php/8.0/fpm/php.ini
and uncomment the line cgi.fix_pathinfo=1
. In my php.ini
file, I found it on line 807
. To uncomment, just remove the semicolon in the beginning.
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1
Next, we need to adjust the file /etc/lighttpd/conf-available/15-fastcgi-php-fpm.conf
with correct value.
fastcgi.server += ( ".php" =>
((
"socket" => "/run/php/php8.0-fpm.sock",
"broken-scriptfilename" => "enable"
))
)
After finished editing, save the file and then enable it in Lighttpd.
$ cd /etc/lighttpd/conf-available/
$ sudo lighttpd-enable-mod fastcgi-php-fpm
We need to reload Lighttpd so it load our new configuration.
$ sudo service lighttpd force-reload
Verify Installation
Let's verify our PHP installation using Lighttpd web server. Create a new file: /var/www/html/index.php
<?php
phpinfo();
?>
Save the file and then open this URL in web browser: http://10.10.10.228/index.php
. You should see something like this:
Final Words
I hope that you now know how to install PHP 8 and Lighttpd Web Server on Debian Bullseye. If you run into any issues or have any feedback feel free to drop a comment below.