Guía Completa para Instalar y Configurar Nginx con PHP-FPM y Certbot en Linux

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

1. Instalar Nginx

Ejecuta los siguientes comandos para instalar Nginx:

sudo apt update
sudo apt install -y nginx

Habilitar y arrancar Nginx

sudo systemctl enable nginx
sudo systemctl start nginx

Verifica que está corriendo:

systemctl status nginx

Abre el puerto en el firewall (si estás usando ufw):

sudo ufw allow 'Nginx Full'

2. Instalar PHP-FPM

Instala PHP y sus extensiones necesarias:

sudo apt install -y php-fpm php-cli php-mysql php-curl php-xml php-mbstring php-zip php-gd

Verifica la versión instalada:

php -v

Asegúrate de que PHP-FPM esté corriendo:

sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Verifica el estado:

systemctl status php-fpm

3. Configurar Nginx para PHP

Crea un nuevo bloque de servidor para tu sitio:

sudo nano /etc/nginx/sites-available/tu-dominio.com

Agrega la siguiente configuración:

server {
listen 80;
server_name tu-dominio.com www.tu-dominio.com;
root /var/www/tu-dominio.com;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
# Ajusta según tu versión de PHP
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}
}

Guarda y cierra el archivo (Ctrl + X, luego Y y Enter).

Habilita el sitio:

sudo ln -s /etc/nginx/sites-available/tu-dominio.com /etc/nginx/sites-enabled/

Prueba la configuración:

sudo nginx -t

Si no hay errores, reinicia Nginx:

sudo systemctl restart nginx

4. Instalar y Configurar Certbot para SSL

Instala Certbot y el plugin de Nginx:

sudo apt install -y certbot python3-certbot-nginx

Ejecuta Certbot para obtener y configurar automáticamente el certificado SSL:

sudo certbot --nginx -d tu-dominio.com -d www.tu-dominio.com

Certbot modificará automáticamente tu configuración de Nginx para usar HTTPS.

Para renovar certificados automáticamente, añade esto al cron job:

sudo crontab -e

Agrega la siguiente línea al final:

0 3 * * * certbot renew --quiet

5. Pruebas Finales

  1. Verifica que PHP funciona creando un archivo de prueba:

    echo "<?php phpinfo(); ?>" | sudo tee /var/www/tu-dominio.com/info.php

    Luego visita

    http://tu-dominio.com/info.php
  2. Verifica SSL con:

    sudo certbot certificates
  3. Verifica que la renovación de Certbot funciona:

    sudo certbot renew --dry-run