Despliegue de una aplicación PHP en VPS: guía paso a paso

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



El deploy (despliegue) de una aplicación PHP en un servidor privado virtual (VPS) es una etapa clave en la transición del desarrollo local a producción. A diferencia del hosting compartido, un VPS brinda control total sobre el entorno de ejecución, lo cual es crítico para frameworks modernos (Laravel, Symfony) y proyectos de alta carga.



En esta guía, analizaremos el ciclo completo de deploy de una aplicación PHP en un VPS con Ubuntu 22.04. Aprenderá cómo configurar el servidor, instalar los componentes necesarios y automatizar el proceso de despliegue. Todos los ejemplos de código están listos para usar.



1. Preparación del VPS y configuración inicial



1.1. Conexión al servidor



Después de comprar el VPS, recibirá una dirección IP, un usuario (generalmente root) y una contraseña. Conéctese vía SSH:



ssh root@su_dirección_ip


Si usa claves SSH (recomendado), agregue su clave pública al servidor.



1.2. Actualización del sistema y creación de usuario



Actualice los paquetes y cree un usuario sin privilegios para trabajar:



apt update && apt upgrade -yadduser deployerusermod -aG sudo deployer


Ahora conéctese con el nuevo usuario:



ssh deployer@su_dirección_ip


1.3. Configuración del firewall



Use UFW para protección básica:



sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enablesudo ufw status


2. Instalación del stack LEMP (Linux, Nginx, MySQL, PHP)



2.1. Instalación de Nginx



sudo apt install nginx -ysudo systemctl start nginxsudo systemctl enable nginx


Verifique el funcionamiento abriendo en el navegador http://su_dirección_ip. Debería ver la página de bienvenida de Nginx.



2.2. Instalación de PHP y PHP-FPM



Para frameworks modernos, use PHP 8.x:



sudo apt install php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip php8.1-gd -y


Verifique la versión e inicie PHP-FPM:



php -vsudo systemctl start php8.1-fpmsudo systemctl enable php8.1-fpm


2.3. Instalación de MySQL



sudo apt install mysql-server -ysudo mysql_secure_installation


Cree una base de datos para su aplicación:



sudo mysql -u root -pCREATE DATABASE nombre_de_su_base_de_datos;CREATE USER 'su_usuario'@'localhost' IDENTIFIED BY 'su_contraseña';GRANT ALL PRIVILEGES ON nombre_de_su_base_de_datos.* TO 'su_usuario'@'localhost';FLUSH PRIVILEGES;EXIT;


3. Configuración del host virtual y deploy de la aplicación



3.1. Creación del host virtual de Nginx



Cree un archivo de configuración para su dominio:



sudo nano /etc/nginx/sites-available/sudominio.com


Inserte la siguiente configuración (adáptela a su proyecto):



server {    listen 80;    server_name sudominio.com www.sudominio.com;    root /var/www/sudominio.com/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.1-fpm.sock; }

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


Active el sitio:



sudo ln -s /etc/nginx/sites-available/sudominio.com /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx


3.2. Deploy del código mediante Git



Instale Git y clone el repositorio:



sudo apt install git -ycd /var/wwwsudo git clone https://github.com/su_usuario/su-repositorio.git sudominio.com


Configure los permisos:



sudo chown -R www-data:www-data /var/www/sudominio.comsudo chmod -R 755 /var/www/sudominio.com/storagesudo chmod -R 755 /var/www/sudominio.com/b

Blogs

Book Recommendations