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

- Link: https://binariocero.com/linux/guia-completa-para-instalar-y-configurar-nginx-con-php-fpm-y-certbot-en-linux
- Published: 2025-02-12T14:02:30+01:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

## **1. Instalar Nginx**

Ejecuta los siguientes comandos para instalar Nginx:

    ```wp-block-preformatted
    sudo apt updatesudo apt install -y nginx
    ```

### **Habilitar y arrancar Nginx**

    ```wp-block-preformatted
    sudo systemctl enable nginxsudo systemctl start nginx
    ```

Verifica que está corriendo:

    ```wp-block-preformatted
    systemctl status nginx
    ```

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

    ```wp-block-preformatted
    sudo ufw allow 'Nginx Full'
    ```

## **2. Instalar PHP-FPM**

Instala PHP y sus extensiones necesarias:

    ```wp-block-preformatted
    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:

    ```wp-block-preformatted
    php -v
    ```

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

    ```wp-block-preformatted
    sudo systemctl enable php-fpmsudo systemctl start php-fpm
    ```

Verifica el estado:

    ```wp-block-preformatted
    systemctl status php-fpm
    ```

## **3. Configurar Nginx para PHP**

Crea un nuevo bloque de servidor para tu sitio:

    ```wp-block-preformatted
    sudo nano /etc/nginx/sites-available/tu-dominio.com
    ```

Agrega la siguiente configuración:

    ```wp-block-preformatted
    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**:

    ```wp-block-preformatted
    sudo ln -s /etc/nginx/sites-available/tu-dominio.com /etc/nginx/sites-enabled/
    ```

**Prueba la configuración**:

    ```wp-block-preformatted
    sudo nginx -t
    ```

Si no hay errores, reinicia Nginx:

    ```wp-block-preformatted
    sudo systemctl restart nginx
    ```

## **4. Instalar y Configurar Certbot para SSL**

Instala Certbot y el plugin de Nginx:

    ```wp-block-preformatted
    sudo apt install -y certbot python3-certbot-nginx
    ```

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

    ```wp-block-preformatted
    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**:

    ```wp-block-preformatted
    sudo crontab -e
    ```

Agrega la siguiente línea al final:

    ```wp-block-preformatted
    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`
