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.
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
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.
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.
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.
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.
Ahora introduce«n» para mantener el método de autenticación por defecto (para el usuario raíz de MariaDB).
Introduce « Y» para establecer la contraseña raíz de tu servidor MariaDB. Asegúrate de utilizar una contraseña segura para tu despliegue.
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.
Vuelve a introducir Y para eliminar el usuario anónimo por defecto de tu instalación de MariaDB.
Vuelve a introducir Y para eliminar la prueba de base de datos por defecto accesible por el usuario anónimo en MariaDB.
Por último, vuelve a introducir Y para recargar todos los privilegios de tabla en tu servidor MariaDB y aplicar los nuevos cambios.
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.
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
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«.
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
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.
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
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.
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.
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.