Cómo instalar Lighttpd con MariaDB y PHP-FPM en Ubuntu 22.04

La Pila LLMP (Linux, Lighttpd, MariaDB y PHP-FPM) es una pila de software para distribuir aplicaciones web. Cada componente de la Pila LLMP es gratuito, de código abierto y puede instalarse en varios sistemas operativos. La pila LLMP puede proporcionar sitios HTML estáticos y aplicaciones PHP como WordPress, Drupal y Joomla.

Este tutorial te mostrará cómo instalar y configurar la Pila LLMP (Linux, Lighttpd, MariaDB y PHP-FPM) en el último sistema Ubuntu 22.04. Este tutorial incluye instrucciones sobre cómo configurar el Host Virtual en el servidor web Lighttpd y habilitar SSL/HTTPS.

Requisitos previos

Para este tutorial, necesitaremos los siguientes requisitos previos:

  • Un servidor Ubuntu 22.04.
  • Un usuario no root con privilegios de root/administrador.

Instalación del servidor web Lighttpd

Lighttpd o Lighty es un servidor web de alto rendimiento creado como prueba de concepto del problema c10k «cómo manejar 10.000 conexiones en paralelo un solo servidor».

Lighttpd está diseñado para ofrecer velocidad, seguridad, ligereza y flexibilidad. Tiene un uso mínimo de CPU y memoria y proporciona funciones avanzadas como FastCGI, CGI, Auth, Compresión, Reescritura de URL y mucho más.

Antes de instalar cualquier paquete, ejecuta el siguiente comando apt para actualizar y refrescar el índice de paquetes de tus repositorios de Ubuntu.

sudo apt update

Ahora instala el servidor web Lighttpd utilizando el siguiente comando.

sudo apt install lighttpd

Introduce Y para confirmar la instalación y pulsa ENTER para continuar. Ahora comenzará la instalación de Lighttpd.

instalar lighttpd

Una vez finalizada la instalación de Lighttpd, ejecuta el siguiente comando para iniciar y habilitar el servicio Lighttpd.

sudo systemctl start lighttpd
sudo systemctl enable lighttpd

Comprueba y verifica el servicio Lighttpd utilizando el comando siguiente. Deberías ver que el servicio Lighttpd se está ejecutando y está habilitado, lo que significa que se ejecutará automáticamente al arrancar el sistema.

sudo systemctl status lighttpd

iniciar lighttpd

Si tienes un cortafuegos UFW ejecutándose en tu máquina Ubuntu, entonces debes añadir las reglas del cortafuegos para el tráfico entrante al servidor web Lighttpd.

Ejecuta el siguiente comando ufw para añadir las reglas Lighttpd al cortafuegos UFW, después puedes comprobar y verificar la lista de las reglas UFW como se indica a continuación.

sudo ufw allow "Lighttpd Full"
sudo ufw status

Deberías ver el perfil de aplicación «Lighttpd Full» añadido al cortafuegos UFW, lo que significa que todos los puertos HTTP y HTTPS entrantes están permitidos.

configurar ufw firewall

Ahora comprueba el directorio«/var/www/html » utilizando el siguiente comando. Si no ves un archivo index.html, puedes crear uno utilizando el comando siguiente.

ls -lah /var/www/html
echo "<h1><center>Welcome to Lighttpd Web Server</center></h1>" > /var/www/html/index.html

Por último, abre tu navegador web y visita la dirección IP del servidor (es decir, http://192.168.5.28/) y deberías ver la página index.html.

índice lighttpd

Instalar el servidor MariaDB

Tras instalar el servidor web Lighthttpd, ha llegado el momento de instalar el servidor MariaDB en el sistema Ubuntu. Esto también incluye cómo instalar el servidor MariaDB de forma segura utilizando la herramienta«mysql_secure_installation» que proporciona el paquete MariaDB.

Ejecuta el siguiente comando apt para instalar el servidor MariaDB. En el estado actual, el repositorio por defecto de Ubuntu proporciona MariaDB v10.6.

sudo apt install mariadb-server

Ahora introduce Y para confirmar la instalación y pulsa ENTER. Y comenzará la instalación de MariaDB.

instalar mariadb

Una vez finalizada la instalación de MariaDB, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio MariaDB.

sudo systemctl start mariadb
sudo systemctl enable mariadb

Comprueba y verifica el servicio MariaDB utilizando el siguiente comando. Deberías ver que el servicio MariaDB se está ejecutando.

sudo systemctl status mariadb

A continuación, configurarás la instalación de MariaDB utilizando la herramienta «mysql_secure_instalaltion», que puede ayudarte a establecer la contraseña de root para el servidor MariaDB, y a desactivar el inicio de sesión de root remoto, limpiar la base de datos por defecto y el acceso de usuarios anónimos, etc.

Ahora ejecuta el comando «mysql_secure_installation » como se indica a continuación.

sudo mysql_secure_installation

La instalación por defecto de MariaDB viene sin contraseña de root. Pulsa ENTER para continuar.

mysql_instalación_segura

Ahora introduce«n» para mantener el método de autenticación por defecto (para el usuario raíz de MariaDB).

no unix_socket auth para root

Introduce « Y» para establecer la contraseña raíz de tu servidor MariaDB. Asegúrate de utilizar una contraseña segura para tu despliegue.

configurar contraseña raíz

Ahora introduce Y para desactivar el inicio de sesión remoto para el usuario raíz de MariaDB. Si no estás en un entorno de clúster, siempre es recomendable desactivar el inicio de sesión remoto para el usuario raíz de MariaDB.

desactivar el inicio de sesión remoto

Vuelve a introducir Y para eliminar el usuario anónimo por defecto de tu instalación de MariaDB.

eliminar usuario anónimo

Vuelve a introducir Y para eliminar la prueba de base de datos por defecto accesible por el usuario anónimo en MariaDB.

eliminar prueba de base de datos

Por último, vuelve a introducir Y para recargar todos los privilegios de tabla en tu servidor MariaDB y aplicar los nuevos cambios.

recargar tablas privilegios

Instalación de PHP-FPM 8.1

Ya has instalado el servidor web Lighttpd y el servidor de bases de datos MariaDB. Ahora vas a instalar el PHP-FPM en tu sistema Ubuntu. En el estado actual, el repositorio de Ubuntu proporciona la última versión de PHP 8.1.

Ejecuta el siguiente comando apt para instalar PHP-FPM 8.1 en tu sistema Ubuntu.

sudo apt install php-fpm php-common php-mysql php-cli php-curl php-xml

Introduce Y para confirmar la instalación y pulsa ENTER. Ahora comenzará la instalación.

instalar php-fpm

Una vez finalizada la instalación de los paquetes PHP-FPM, ejecuta el siguiente comando para iniciar y habilitar el servicio PHP-FPM.

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

Comprueba y verifica el servicio PHP-FPM utilizando el siguiente comando. Deberías ver que el servicio PHP-FPM se está ejecutando.

sudo systemctl status php8.1-fpm

iniciar php-fpm

También puedes comprobar el servicio PHP-FPM utilizando el comando«ss«. El proceso PHP-FPM por defecto se ejecuta bajo el archivo sock, y puedes comprobar el proceso PHP-FPM utilizando el comando de abajo.

ss -pl | grep php

Deberías obtener el servicio PHP-FPM ejecutándose en el archivo sock«/run/php/php8.1-fpm.sock«.

comprobar php-fpm

Configurar PHP-FPM con Lighttpd

La instalación de los paquetes LLMP Stack ha finalizado, pero aún tienes que configurar el servidor web Lighttpd para que pueda funcionar con el servicio PHP-FPM. Y esto se puede hacer utilizando los módulos FastCGI en el servidor web Lighttpd.

En primer lugar, edita el archivo de configuración de PHP-FPM«/etc/php/8.1/fpm/php.ini» utilizando el editor nano.

sudo nano /etc/php/8.1/fpm/php.ini

Añade la siguiente configuración al archivo.

cgi.fix_pathinfo = 1

Guarda y cierra el archivo cuando hayas terminado.

Ahora reinicia el servicio PHP-FPM utilizando el siguiente comando para aplicar los nuevos cambios.

sudo systemctl restart php8.1-fpm

A continuación, ejecuta el siguiente comando para habilitar los módulos«fastcgi» y«fastcgi-php-fpm» de Lighttpd.

sudo lighty-enable-mod fastcgi fastcgi-php-fpm

Edita el archivo de configuración«/etc/lighttpd/conf-available/15-fastcgi-php-fpm.conf» utilizando el editor nano. Este archivo es la configuración del módulo fastcgi-php-fpm que se utilizará para comunicarse con el archivo sock de PHP-FPM.

sudo nano /etc/lighttpd/conf-available/15-fastcgi-php-fpm.conf

Cambia la ruta de la opción socket a«/run/php/php8.1-fpm.sock» como se indica a continuación.

## Use PHP-FPM service for PHP via FastCGI
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/run/php/php8.1-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)

Guarda y cierra el archivo cuando hayas terminado.

Por último, ejecuta el siguiente comando para reiniciar el servicio Lighttpd y aplicar los nuevos cambios. Ahora tu pila LLMP está lista para servir aplicaciones web HTML estáticas y PHP dinámicas

sudo systemctl restart lighttpd

configurar php-fpm lighttpd

Probar Phpinfo

Para verificar tu instalación de la Pila LLMP, puedes simplemente crear el script PHPINFO que te muestra la configuración detallada de las configuraciones de Lighttpd y PHP-FPM.

Ejecuta el siguiente comando para crear un nuevo script PHP«/var/www/html/info.php» y cambia la propiedad al usuario«www-data«.

echo "<?php phpinfo(); ?>" > /var/www/html/info.php
sudo chown -R www-data:www-data /var/www/html

Vuelve a tu navegador web y visita la dirección IP del servidor Ubuntu seguida de la ruta URL«/info.php»(http://192.168.5.28/info.php). Y deberías ver la página phpinfo detallada en la siguiente captura de pantalla. Esto significa que la configuración de Lighttpd y PHP-FPM se ha completado con éxito.

php info llmp

Configurar el host virtual en Lighttpd

En este punto, has completado la instalación y configuración de la Pila LLMP. La Pila LLMP también está lista para servir una aplicación web PHP dinámica a través de PHP-FPM. Ahora aprenderás a configurar el Host Virtual en el servidor web Lighttpd. El host virtual te permite ejecutar varios nombres de dominio en un único servidor o dirección IP.

Ahora ejecuta el siguiente comando para crear un nuevo directorio«/etc/lighttpd/vhosts«. Este directorio se utilizará para almacenar todas las configuraciones de host virtual del servidor web Lighttpd.

sudo mkdir -p /etc/lighttpd/vhosts/

Ahora edita el archivo de configuración de Lighttpd«/etc/lighttpd/lighttpd.conf» utilizando el editor nano.

sudo nano /etc/lighttpd/lighttpd.conf

Añade la siguiente configuración al archivo.

include "/etc/lighttpd/vhosts/*.conf"

Guarda y cierra el archivo cuando hayas terminado. Ahora estás listo para configurar el host virtual Lighttpd.

En primer lugar, crea el directorio Document Root para tu host virtual. En este ejemplo, el directorio raíz de documentos será«/var/www/hwdomain«.

mkdir -p /var/www/hwdomain/

Crea un nuevo archivo «index.html» en el directorio raíz de documentos «/var/www/hwdomain» y cambia la propiedad al usuario correcto «www-data».

echo "<h1><center>Welcome to hwdomain.io virtual host</center></h1>" > /var/www/hwdomain/index.html
sudo chown -R www-data:www-data /var/www/hwdomain

A continuación, crea una nueva configuyración de host virtual«/etc/lighttpd/vhosts/hwdomain.conf» utilizando el editor nano.

sudo nano /etc/lighttpd/vhosts/hwdomain.conf

Añade la siguiente configuración al archivo. En este ejemplo, se utilizará el dominio «hwdomain.io» para el host virtual.

$HTTP["host"] =~ "(^|.)hwdomain.io$" {
    server.document-root = "/var/www/hwdomain"
    server.errorlog = "/var/log/lighttpd/hwdomain.io-error.log"
    accesslog.filename = "/var/log/lighttpd/hwdomain.io-access.log"
}

Guarda y cierra el archivo cuando hayas terminado.

Después, ejecuta el siguiente comando para comprobar y verificar la configuración de Lighttpd. Si la configuración de Lighttpd es correcta, verás un mensaje de salida como«Sintaxis OK«.

sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf

Ahora reinicia el servicio Lighttpd para aplicar la nueva configuración del host virtual utilizando el siguiente comando.

sudo systemctl restart lighttpd

host virtual lighttpd

Vuelve a tu navegador web e introduce el nombre de tu dominio en la barra de direcciones (es decir, http://hwdomain.io/). Y deberías ver la página index.html por defecto para ese host virtual.

host virtual lighttpd

Habilitar HTTPS en el servidor web Lighttpd

Después de configurar el host virtual Lighthttpd, ahora aprenderás a habilitar SSL/HTTPS en el servidor web Lighttpd.

Antes de empezar a configurar SSL, ejecuta el siguiente comando para habilitar el módulo «ssl» para el servidor web Lighttpd. Esto creará un archivo de enlace al«/etc/lighttpd/conf-enabled/10-ssl.conf«, que contiene la configuración SSL básica para Lighttpd. Además, deberás generar los certificados SSL para localhost con el nombre«server.pem«.

sudo lighty-enable mod ssl

Ahora ejecuta el siguiente comando para crear y generar el certificado SSL para localhost con el nombre «servidor.pem«.

openssl req -new -newkey rsa:2048 -nodes -keyout server.com.key -out server.com.csr
openssl x509 -req -days 365 -in server.com.csr -signkey server.com.key -out server.com.crt
cat server.com.key server.com.crt > server.pem

Y ahora ya estás preparado para implementar el SSL/HTTPS en la configuración del host virtual«hwdomain.conf«.

Antes de empezar a configurar el SSL para el host virtual, asegúrate de que has generado certificados SSL para tu nombre de dominio. En este ejemplo, el nombre de dominio es «hwdomain.io» y los certificados SSL están disponibles en el directorio«/etc/letsencrypt/live/hwdomain.io«.

Edita la configuración del host virtual«/etc/lighttpd/vhosts/hwdomain.conf» utilizando el editor nano.

sudo nano /etc/lighttpd/vhosts/hwdomain.conf

Sustituye la configuración que acabas de crear por la siguiente.

$HTTP["scheme"] == "http" {
        $HTTP["host"] == "hwdomain.io" {
                url.redirect = ("/.*" => "https://hwdomain.io$0")
        }
}
$SERVER["socket"] == ":443" {
ssl.engine = "enable"

ssl.pemfile = "/etc/letsencrypt/live/hwdomain.io/fullchain.pem"
ssl.privkey = "/etc/letsencrypt/live/hwdomain.io/privkey.pem"

server.name = "hwdomain.io"
server.document-root = "/var/www/hwdomain"
server.errorlog = "/var/log/lighttpd/hwdomain.io-error.log"
accesslog.filename = "/var/log/lighttpd/hwdomain.io-access.log"
}

Guarda y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando para comprobar y verificar la configuración del servidor web Lighttpd, y asegúrate de que recibes un mensaje de salida como «Sintaxis OK». Después, puedes reiniciar el servicio Lighttpd para aplicar los nuevos cambios.

sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf
sudo systemctl restart lighttpd

Por último, vuelve a tu navegador web y visita el nombre de dominio del host virtual con https delante de la URL (es decir, https://hwdomain.io). Si la configuración SSL se ha realizado correctamente, verás el icono local en la URL, como se muestra en la siguiente captura de pantalla.

activar SSL/HTTPS Lighttpd

Conclusión

¡Enhorabuena! Has instalado correctamente la pila LLMP (Linux, Lighttpd, MariaDB y PHP-FPM) en el servidor Ubuntu 22.04. También has aprendido a configurar un host virtual en el servidor web Lighttpd y has activado el SSL/HTTPS en el Lighttpd para tu nombre de dominio.

Scroll al inicio