Cómo instalar Lighttpd con PHP y Let’s Encrypt SSL gratuito en Debian 11

Lighttpd es un servidor web sencillo, rápido y seguro. Tiene un tamaño muy reducido y no requiere mucho uso de memoria y CPU, lo que lo convierte en uno de los mejores servidores para alojar cualquier aplicación. Está diseñado para entornos de misión crítica. Puede manejar hasta 10.000 conexiones en paralelo en un solo servidor. Ofrece un montón de características, incluyendo, reescritura de URL, compresión de salida, mecanismo de eventos, FastCGI, SCGI, Auth, y más.

En este tutorial, te mostraremos cómo instalar Lighttpd con PHP y Let’s Encrypt SSL en Debian 11.

Requisitos previos

  • Un servidor con Debian 11.
  • Un nombre de dominio válido apuntado con la IP del servidor.
  • Una contraseña de root configurada en el servidor.

Instalar Lighttpd

Por defecto, el paquete Lighttpd está incluido en el repositorio oficial de Debian 11. Puedes instalarlo ejecutando el siguiente comando:

apt-get install lighttpd -y

Una vez instalado Lighttpd, inicia el servicio Lighttpd y haz que se inicie al reiniciar el sistema:

systemctl start lighttpd
systemctl enable lighttpd

También puedes comprobar el estado de Lighttpd con el siguiente comando:

systemctl status lighttpd

Obtendrás la siguiente salida:

? lighttpd.service - Lighttpd Daemon
     Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-02-12 07:01:06 UTC; 12s ago
    Process: 4663 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
   Main PID: 4668 (lighttpd)
      Tasks: 1 (limit: 2341)
     Memory: 932.0K
        CPU: 226ms
     CGroup: /system.slice/lighttpd.service
             ??4668 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

Feb 12 07:01:06 debian11 systemd[1]: Starting Lighttpd Daemon...
Feb 12 07:01:06 debian11 systemd[1]: Started Lighttpd Daemon.

Ahora, abre tu navegador web y accede a la página web de Lighttpd utilizando la URL http://your-server-ip. Deberías ver la página de prueba de Lighttpd en la siguiente pantalla:

Página por defecto de Lighttpd

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar PHP y PHP-FPM

A continuación, ejecuta el siguiente comando para instalar los paquetes PHP y PHP-FPM en tu sistema.

apt-get install php php-cgi php-fpm php-mysql -y

Tras la instalación, edita el archivo php.ini y pon cgi.fix_pathinfo a 1

nano /etc/php/7.4/fpm/php.ini

Cambia la siguiente línea:

cgi.fix_pathinfo=1

Guarda y cierra el archivo cuando hayas terminado.

Para hacer que Lighttpd funcione con el PHP-FPM, tendrás que sustituir la configuración PHP-CGI y el socket PHP-FPM por defecto:

Primero, edita el archivo de configuración de PHP-FPM:

nano /etc/php/7.4/fpm/pool.d/www.conf

Encuentra la siguiente línea:

listen = /run/php/php7.4-fpm.sock

Y sustitúyela por la siguiente línea:

listen = 127.0.0.1:9000

Guarda y cierra el archivo y luego reinicia el PHP-FPM para aplicar los cambios:

systemctl restart php7.4-fpm

También puedes comprobar el estado del PHP-FPM con el siguiente comando:

systemctl status php7.4-fpm

Obtendrás la siguiente salida:

? php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-02-12 07:04:35 UTC; 1min 7s ago
       Docs: man:php-fpm7.4(8)
    Process: 15141 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.4/fpm/pool.d/www.conf 74 (code=e>
   Main PID: 15138 (php-fpm7.4)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 2341)
     Memory: 8.8M
        CPU: 54ms
     CGroup: /system.slice/php7.4-fpm.service
             ??15138 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
             ??15139 php-fpm: pool www
             ??15140 php-fpm: pool www

Feb 12 07:04:35 debian11 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Feb 12 07:04:35 debian11 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Lighttpd para PHP-FPM

A continuación, tendrás que editar el archivo de configuración de Lighttpd y cambiarlo utilizando el CGI rápido:

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

Busca las siguientes líneas:

"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",

Y, sustitúyelas por las siguientes líneas:

"host" => "127.0.0.1",
"port" => "9000",

Guarda y cierra el archivo y luego habilita los módulos Fast CGI con los siguientes comandos:

lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php

Por último, reinicia el servicio Lighttpd para aplicar los cambios:

systemctl restart lighttpd

Crear un host virtual Lighttpd

Lighttpd también te permite alojar varios sitios web mediante un alojamiento virtual. Vamos a crear un nuevo archivo de configuración de host virtual para alojar un sitio web llamado prueba.ejemplo.com.

nano /etc/lighttpd/conf-available/test.conf

Añade las siguientes líneas:

$HTTP["host"] == "test.example.com" {
    server.document-root = "/var/www/html/"
    server.errorlog      = "/var/log/lighttpd/example.com-error.log"
}

Guarda y cierra el archivo y luego activa el host virtual con el siguiente comando:

ln -s /etc/lighttpd/conf-available/test.conf /etc/lighttpd/conf-enabled/

A continuación, crea un archivo index.php:

nano /var/www/html/index.php

Añade la siguiente línea:

<?php
phpinfo();
?>

Guarda y cierra el archivo y luego establece el permiso y la propiedad adecuados con el siguiente comando:

chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html

A continuación, reinicia el servicio Lighttpd para aplicar los cambios:

systemctl restart lighttpd

Ahora, abre tu navegador web y verifica tu sitio web utilizando la URL http://test.example.com. Deberías ver la página de prueba de PHP en la siguiente pantalla:

Información PHP

Asegura Lighttpd con Let’s Encrypt

Lighttpd también te permite asegurar el sitio web con Let’s Encrypt SSL. Para ello, instala primero el cliente Certbot con el siguiente comando:

apt-get install certbot -y

A continuación, ejecuta el siguiente comando para descargar el SSL de Let’s Encrypt para tu sitio web:

certbot certonly --webroot -w /var/www/html/ -d test.example.com

Se te pedirá que proporciones tu dirección de correo electrónico y que aceptes los términos de la licencia, como se muestra a continuación:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Once the certificates are downloaded successfully, you should see the following output:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/test.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/test.example.com/privkey.pem
   Your cert will expire on 2022-05-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

A continuación, tendrás que combinar el certificado y la clave privada en un solo archivo. Puedes hacerlo con el siguiente comando:

cat /etc/letsencrypt/live/test.example.com/cert.pem /etc/letsencrypt/live/test.example.com/privkey.pem > /etc/letsencrypt/live/test.example.com/web.pem

A continuación, tendrás que editar el archivo de host virtual de Lighttpd y definir la ruta del certificado SSL de Let’s Encrypt.

Puedes hacerlo con el siguiente comando:

nano /etc/lighttpd/conf-enabled/test.conf

Modifica el archivo como se muestra a continuación:

$HTTP["host"] == "test.example.com" {
    server.document-root = "/var/www/html/"
}

$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/letsencrypt/live/test.example.com/web.pem" 
ssl.ca-file = "/etc/letsencrypt/live/test.example.com/chain.pem"
server.name = "test.example.com" 
server.document-root = "/var/www/html/"
server.errorlog = "/var/log/lighttpd/example.com_error.log"
accesslog.filename = "/var/log/lighttpd/example.com_access.log"
}

$HTTP["scheme"] == "http" {
$HTTP["host"] == "test.example.com" { 
url.redirect = ("/.*" => "https://test.example.com$0")
}
}

Guarda y cierra el archivo. A continuación, reinicia el servicio Lighttpd para aplicar los cambios de configuración:

systemctl restart lighttpd

Ahora puedes acceder a tu sitio web de forma segura utilizando la URL https://test.example.com.

También te podría gustar...