Skip to content
Programming 2024-12-29 11 min read

Cómo Implementar un Proyecto de Laravel en un VPS: Guía Paso a Paso

Desplegar una aplicación Laravel en un servidor de producción es un proceso con varias piezas que deben encajar correctamente: el sistema operativo, la base de datos, el servidor web, PHP y, finalmente, la propia aplicación. Hacerlo bien desde el principio te ahorra horas de depuración más adelante. En esta guía recorremos el proceso completo, desde un VPS recién creado hasta tu aplicación Laravel funcionando en producción con HTTPS.

Cómo Implementar un Proyecto de Laravel en un VPS: Guía Paso a Paso
#Programming#Laravel#PHP#VPS
T
Equipo Terranode
Editorial

Paso 1: Actualizar el sistema

Antes de instalar cualquier software, asegúrate de que el sistema esté al día:

bash
sudo apt update && sudo apt upgrade -y

Paso 2: Crear un usuario sin privilegios root

Operar como root de forma permanente es una mala práctica de seguridad. Crea un usuario dedicado con permisos de administración:

bash
adduser tu_usuario
usermod -aG sudo tu_usuario

Cambia a ese usuario para el resto del proceso:

bash
su - tu_usuario

Paso 3: Deshabilitar el login directo de root por SSH

bash
sudo nano /etc/ssh/sshd_config

Busca y modifica la línea:

text
PermitRootLogin no

Reinicia el servicio SSH:

bash
sudo systemctl restart ssh

Paso 4: Configurar el firewall

bash
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

Más adelante, cuando instales Apache, recuerda agregar también las reglas para HTTP y HTTPS.

Paso 5: Instalar Apache

bash
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2

Paso 6: Instalar y configurar MySQL

bash
sudo apt install mysql-server -y
sudo mysql_secure_installation

El asistente mysql_secure_installation te guiará para establecer una contraseña de root robusta y eliminar configuraciones inseguras por defecto.

Crea la base de datos y el usuario específico para tu aplicación Laravel:

sql
sudo mysql -u root -p
sql
CREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'tu_contraseña_segura';
GRANT ALL ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Paso 7: Instalar PHP y las extensiones necesarias

Laravel requiere varias extensiones de PHP para funcionar correctamente:

bash
sudo apt install php libapache2-mod-php php-mysql php-cli php-curl php-mbstring php-xml php-zip -y

Verifica la versión instalada:

bash
php -v

Paso 8: Instalar Composer

Composer es el gestor de dependencias de PHP, indispensable para instalar y actualizar los paquetes que usa Laravel:

bash
sudo apt install composer -y
composer -v

Paso 9: Descargar y preparar el proyecto Laravel

bash
cd /var/www/
git clone https://github.com/tu_usuario/tu_proyecto_laravel.git

cd tu_proyecto_laravel
composer install

Paso 10: Configurar el archivo .env

Copia el archivo de ejemplo y ajústalo con tus credenciales de base de datos:

bash
cp .env.example .env
env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=tu_contraseña_segura

Genera la clave de aplicación, indispensable para el cifrado interno de Laravel:

bash
php artisan key:generate

Paso 11: Ejecutar las migraciones de base de datos

bash
php artisan migrate

Paso 12: Configurar Apache para servir Laravel

Crea un archivo de configuración de sitio virtual apuntando al directorio public de Laravel (nunca a la raíz del proyecto, por seguridad):

bash
sudo nano /etc/apache2/sites-available/tu_proyecto_laravel.conf
apache
<VirtualHost *:80>
    ServerName tu_dominio.com
    DocumentRoot /var/www/tu_proyecto_laravel/public

    <Directory /var/www/tu_proyecto_laravel/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Activa el sitio y el módulo de reescritura de URLs (necesario para las rutas de Laravel):

bash
sudo a2ensite tu_proyecto_laravel.conf
sudo a2enmod rewrite
sudo systemctl restart apache2

Paso 13: Configurar certificado SSL con Let's Encrypt

bash
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d tu_dominio.com

Programada la renovación automática, ya que los certificados de Let's Encrypt expiran cada 90 días:

bash
sudo crontab -e
text
0 0 * * * certbot renew --quiet

Paso 14: Configurar permisos de carpetas

Laravel necesita permisos de escritura en las carpetas storage y bootstrap/cache para funcionar correctamente:

bash
sudo chown -R www-data:www-data /var/www/tu_proyecto_laravel
sudo chmod -R 775 /var/www/tu_proyecto_laravel/storage
sudo chmod -R 775 /var/www/tu_proyecto_laravel/bootstrap/cache

Paso 15: Verificar que todo funcione

Accede a https://tu_dominio.com desde el navegador. Si algo no carga correctamente, los logs son tu primer punto de investigación:

bash
tail -f /var/log/apache2/error.log
tail -f /var/www/tu_proyecto_laravel/storage/logs/laravel.log

La mayoría de los problemas en este punto se deben a permisos incorrectos, credenciales de base de datos mal configuradas en .env, o el DocumentRoot apuntando a la carpeta equivocada.

Poner una aplicación Laravel en producción implica coordinar varias piezas —sistema operativo, base de datos, PHP, Apache y SSL— pero siguiendo el orden correcto el proceso es predecible y repetible. Guarda esta checklist para futuros despliegues: actualizar y asegurar el VPS, instalar el stack LAMP, configurar Laravel con Composer y .env, ajustar Apache para servir la aplicación desde public/, y habilitar SSL antes de anunciar el sitio como listo. Si tienes dudas durante la implementación, nuestro equipo de soporte técnico está disponible 24/7 para ayudarte.

Ready to take your site to the next level?

LiteSpeed hosting, NVMe and 24/7 support from $3/mo.

View hosting plans

Frequently asked questions