Introducción
Desarrollar una aplicación PHP es solo la mitad del trabajo. La segunda parte, igualmente importante, es el deploy, es decir, el despliegue del código listo en el servidor de producción. Muchos desarrolladores principiantes enfrentan dificultades al transferir un proyecto desde su máquina local a un VPS (Virtual Private Server). La configuración del entorno, el trabajo con el servidor web, las bases de datos y la seguridad pueden parecer complejos, pero en realidad es un proceso secuencial y comprensible.
En este artículo, analizaremos paso a paso cómo realizar correctamente el deploy de una aplicación PHP en un VPS. Aprenderá a preparar el servidor, configurar Nginx y PHP-FPM, conectar una base de datos MySQL y automatizar el despliegue de actualizaciones mediante Git. El material está dirigido a quienes ya tienen conocimientos básicos de Linux y Git, pero desean sistematizar sus conocimientos.
1. Preparación del servidor e instalación del stack LEMP
Lo primero es conectarse a su VPS por SSH e instalar el conjunto básico de programas conocido como LEMP (Linux, Nginx, MySQL, PHP).
Conéctese al servidor:
ssh root@su-dirección-ipActualice los paquetes e instale Nginx, MySQL y PHP con las extensiones necesarias:
sudo apt update && sudo apt upgrade -ysudo apt install nginx mysql-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -yDespués de la instalación, inicie los servicios y actívelos para que se inicien automáticamente:
sudo systemctl start nginxsudo systemctl enable nginxsudo systemctl start php8.1-fpm # la versión puede variarsudo systemctl enable php8.1-fpmEn este punto, la infraestructura básica está lista. Ahora pasaremos a la configuración de la base de datos y del servidor web.
2. Configuración de MySQL y creación de la base de datos
La mayoría de las aplicaciones PHP (por ejemplo, WordPress, Laravel o proyectos personalizados) requieren una base de datos. Realice la configuración inicial de MySQL:
sudo mysql_secure_installationSiga las instrucciones: establezca una contraseña para root, elimine usuarios anónimos, deshabilite el inicio de sesión remoto de root y elimine la base de datos de prueba.
Ahora cree una base de datos y un usuario para su aplicación. Ingrese a la consola de MySQL:
sudo mysql -u root -pEjecute las consultas SQL (reemplace myapp, myuser y mypassword con sus propios valores):
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'localhost';FLUSH PRIVILEGES;EXIT;La base de datos está lista. Anote el nombre de la base de datos, el usuario y la contraseña; los necesitará al configurar la aplicación.
3. Colocación del código y configuración del host virtual de Nginx
Ahora es el momento de transferir el código de su aplicación PHP al servidor. La forma más conveniente es usar Git. Supongamos que su proyecto está alojado en GitHub o GitLab.
Cree un directorio para el proyecto y clone el repositorio:
sudo mkdir -p /var/www/myappsudo chown -R $USER:$USER /var/www/myappgit clone https://github.com/su-usuario/su-repositorio.git /var/www/myappSi el proyecto usa Composer (por ejemplo, Laravel o Symfony), ejecute la instalación de dependencias:
cd /var/www/myappcomposer install --no-dev --optimize-autoloaderConfigure los permisos de acceso. Normalmente, el servidor web debe tener acceso de escritura a algunas carpetas (por ejemplo, storage y bootstrap/cache en Laravel):
sudo chown -R www-data:www-data /var/www/myapp/storagesudo chown -R www-data:www-data /var/www/myapp/bootstrap/cacheAhora crearemos la configuración del host virtual para Nginx. Cree el archivo:
sudo nano /etc/nginx/sites-available/myappInserte la siguiente configuración (adapte