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:
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:
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.