LibraHostDocumentación

Documentación

Guías completas para todos nuestros servicios de alojamiento

🌐 Instalar Nginx + PHP-FPM en un VPS#

Aprende a instalar y configurar Nginx con PHP-FPM en tu VPS para crear un servidor web de alto rendimiento. Esta configuración es ideal para WordPress, Laravel, Symfony y otras aplicaciones PHP.

🎯 Objetivos#

  • ✅ Instalar Nginx y PHP-FPM en Ubuntu/Debian
  • ⚡ Optimizar la configuración para el rendimiento
  • 🔧 Configurar virtual hosts para múltiples sitios
  • 🛠️ Probar y validar la instalación
  • 🔒 Aplicar mejores prácticas de seguridad

🧰 Prerequisitos#

  • VPS con Ubuntu 20.04+ o Debian 11+
  • Acceso root o sudo
  • Conexión SSH activa
  • Nombre de dominio apuntando a tu VPS (opcional para pruebas)

1️⃣ Preparación del sistema#

📦 Actualización del sistema#

# Actualización de paquetes sudo apt update && sudo apt upgrade -y # Instalación de herramientas esenciales sudo apt install -y curl wget gnupg2 software-properties-common

🔧 Agregar repositorio PHP (para tener la última versión)#

# Agregar repositorio Ondrej para PHP sudo add-apt-repository ppa:ondrej/php -y sudo apt update

2️⃣ Instalación de Nginx#

📥 Instalación del servidor web#

# Instalación de Nginx sudo apt install nginx -y # Inicio y activación automática sudo systemctl start nginx sudo systemctl enable nginx # Verificación del estado sudo systemctl status nginx

🌐 Prueba básica#

Abre tu navegador y accede a http://tu-ip-servidor. Deberías ver la página de bienvenida de Nginx.

# Verificar que Nginx esté escuchando en el puerto 80 sudo netstat -tlnp | grep :80

3️⃣ Instalación de PHP-FPM#

📥 Instalación de PHP y extensiones esenciales#

# Instalación de PHP 8.2 con FPM y extensiones comunes sudo apt install -y php8.2-fpm php8.2-cli php8.2-common php8.2-mysql \ php8.2-zip php8.2-gd php8.2-mbstring php8.2-curl php8.2-xml \ php8.2-bcmath php8.2-intl php8.2-opcache php8.2-readline # Inicio y activación de PHP-FPM sudo systemctl start php8.2-fpm sudo systemctl enable php8.2-fpm # Verificación del estado sudo systemctl status php8.2-fpm # Verificación de que el socket funcione sudo ls -la /run/php/

4️⃣ Configuración de Nginx para PHP#

🗂️ Estructura de directorios#

# Creación de la estructura para tus sitios sudo mkdir -p /var/www/html/misitio sudo chown -R www-data:www-data /var/www/html/ sudo chmod -R 755 /var/www/html/

📝 Configuración de un sitio (virtual host)#

# Creación del archivo de configuración sudo nano /etc/nginx/sites-available/misitio

Configuración completa:

server { listen 80; listen [::]:80; # Reemplaza con tu nombre de dominio server_name misitio.com www.misitio.com; # Directorio raíz del sitio root /var/www/html/misitio; index index.php index.html index.htm; # Logs específicos del sitio access_log /var/log/nginx/misitio_access.log; error_log /var/log/nginx/misitio_error.log; # Configuración PHP location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # Seguridad - bloquear acceso a archivos sensibles location ~ /\.ht { deny all; } location ~ /\.git { deny all; } # Optimización - cache de archivos estáticos location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|zip)$ { expires 1y; add_header Cache-Control "public, immutable"; } # Gestión de URLs (para WordPress, Laravel, etc.) location / { try_files $uri $uri/ /index.php?$query_string; } }

✅ Activación del sitio#

# Activación del sitio (crear enlace simbólico) sudo ln -s /etc/nginx/sites-available/misitio /etc/nginx/sites-enabled/ # Eliminar sitio por defecto (opcional) sudo rm /etc/nginx/sites-enabled/default # Prueba de la configuración sudo nginx -t # Recarga de Nginx sudo systemctl reload nginx

5️⃣ Prueba completa de la instalación#

📄 Creación de un archivo de prueba PHP#

# Crear un archivo PHP de prueba sudo nano /var/www/html/misitio/info.php
<?php phpinfo(); ?>

🌐 Pruebas en el navegador#

  1. Prueba PHP: http://tu-dominio/info.php

⚠️ Seguridad: ¡Elimina el archivo info.php después de las pruebas!

sudo rm /var/www/html/misitio/info.php

6️⃣ Aplicación de cambios en servicios#

🔄 Aplicar cambios#

# Reiniciar servicios sudo systemctl restart php8.2-fpm sudo systemctl restart nginx # Verificar el buen funcionamiento sudo systemctl status nginx php8.2-fpm

7️⃣ Mantenimiento y monitoreo#

📊 Comandos de monitoreo#

# Estado de los servicios sudo systemctl status nginx php8.2-fpm # Logs en tiempo real sudo tail -f /var/log/nginx/error.log sudo journalctl -fu php8.2-fpm # Procesos PHP-FPM activos sudo ps aux | grep php-fpm # Conexiones activas sudo netstat -an | grep :80

🔧 Comandos de gestión#

# Reinicio sin interrupción sudo systemctl reload nginx sudo systemctl reload php8.2-fpm # Prueba de configuración antes de aplicar sudo nginx -t sudo php-fpm8.2 -t

✅ Resumen de la instalación#

Tu servidor Nginx + PHP-FPM ahora está operativo con:

  • Nginx optimizado y seguro
  • PHP 8.2 con extensiones esenciales
  • PHP-FPM operativo
  • Virtual hosts configurados
  • Seguridad básica aplicada