Despliegue de aplicación PHP en VPS: guía paso a paso de la A a la Z

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué VPS es la mejor opción para un proyecto PHP?

Desarrollar una aplicación web en PHP es solo la mitad del trabajo. La segunda parte, igualmente importante, es un despliegue adecuado. Si has superado el hosting compartido con sus limitaciones y deseas tener control total sobre el entorno, un servidor virtual privado (VPS) es la solución ideal. En este artículo, recorreremos el camino desde la compra del servidor hasta la puesta en marcha de tu aplicación PHP en modo producción. Aprenderás a configurar el stack Nginx + PHP-FPM + MySQL, configurar el dominio, el certificado SSL y automatizar las actualizaciones de código.



Paso 1: Configuración inicial del VPS y conexión

1.1 Elección del SO y acceso inicial

Recomendamos usar Ubuntu 22.04 LTS, una versión estable con soporte a largo plazo. Después de comprar el VPS, recibirás una dirección IP y una contraseña de root.

Nos conectamos por SSH:

ssh root@tu_IP_del_servidor


1.2 Creación de usuario y configuración de seguridad

Trabajar como root es una mala práctica. Crearemos un usuario separado con permisos sudo:

adduser deployerusermod -aG sudo deployer

Ahora configuraremos las claves SSH para un acceso cómodo y seguro. En tu máquina local, genera una clave (si no la tienes):

ssh-keygen -t rsa -b 4096

Copia la clave pública al servidor:

ssh-copy-id deployer@tu_IP_del_servidor

Después de verificar el acceso por clave, desactiva el acceso por contraseña y el acceso root:

sudo nano /etc/ssh/sshd_config# Cambia:PermitRootLogin noPasswordAuthentication no# Reinicia SSH:sudo systemctl restart sshd


Paso 2: Instalación y configuración del stack LEMP (Nginx, PHP, MySQL)

2.1 Instalación de Nginx

Actualizamos los paquetes e instalamos el servidor web:

sudo apt update && sudo apt upgrade -ysudo apt install nginx -y

Verificamos el estado:

sudo systemctl status nginx


2.2 Instalación de PHP 8.x y extensiones necesarias

Añadimos el repositorio con la versión actual de PHP:

sudo apt install software-properties-commonsudo add-apt-repository ppa:ondrej/phpsudo apt updatesudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip -y


2.3 Instalación de MySQL (MariaDB)

sudo apt install mariadb-server mariadb-client -ysudo mysql_secure_installation

Creamos la base de datos y el usuario para tu aplicación:

sudo mysql -u rootCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';FLUSH PRIVILEGES;EXIT;


Paso 3: Configuración del host virtual (Server Block) en Nginx

Creamos un archivo de configuración para nuestro dominio (por ejemplo, myapp.es):

sudo nano /etc/nginx/sites-available/myapp

Inserta la siguiente plantilla para PHP-FPM:

server {    listen 80;    server_name myapp.es www.myapp.es;    root /var/www/myapp/public;    index index.php index.html;

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

location ~ \\.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; }

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

Activamos el sitio y recargamos Nginx:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -t  # Verificar configuraciónsudo systemctl reload nginx


Paso 4: Despliegue del código de la aplicación (Git + Composer)

4.1 Clonación del repositorio

Creamos el directorio para el proyecto y clonamos el código (por ejemplo, desde GitHub):

sudo mkdir -p /var/www/myappsudo chown -R deployer:depl                

Blogs

Book Recommendations