Laravel a producción/deployment mediante Apache y MySQL
Índice de contenido
- Integración con Node
- Archivos y carpetas a publicar
- Simplifica o descarta el archivo .env
- Subir el proyecto al hosting
- Terminar configuración del proyecto
- Configurar la base de datos
- .htaccess
- ⭐️Hostinger, el mejor hosting para Laravel
- ✨ Ventajas de Emplear Hostinger con Laravel
- Características y Herramientas
- Conclusión
Una vez terminada la implementación de tu estupendo proyecto en Laravel, seguramente lo siguiente que vas a querer hacer es mostrárselo a todos, es decir, llevarlo a producción o hacer el deployment, para ello, los pasos que tienes que seguir no difieren mucho de cualquier otro proyecto de PHP, independientemente si este proyecto es un framework o no, pero, en este capítulo veremos algunas consideraciones que puedes tener en cuenta, es importante recordar que hay muchas formas de hacer lo mismo y los pasos pueden variar dependiendo de las opciones brindadas por el hosting que estés empleando.
El servidor por excelencia empleando para publicar o servir un proyecto en Laravel en un hosting es Apache, Laravel puede ser servida de varias maneras:
https://laravel.com/docs/master/deployment
Pero, si revisamos el mercado actual, la mayoría de los hostings cuentan con al menos las siguientes características para el plan básico, que es el más económico:
- PHP
- MySQL
- Apache
Lo primero que debes hacer en estos casos es verificar las versiones mínimas, usualmente la más importante es la de PHP que para la versión actual del framework es la de 8.2 o superior, si tu hosting no cuenta con la versión mínima de PHP, no podrás emplear la versión 11 o superior, en estos casos, puedes emplear una versión inferior del framework alguna que sea soportara por el hosting y esta es la primera recomendación que debes de tener en cuenta. De igual manera, si tienes dudas, puedes consultar al hosting que deseas contratar si tiene soporte para Laravel.
Una de las grandes ventajas y desventajas de Laravel es que las últimas versiones usualmente emplean versiones modernas de PHP, esto es bueno ya que podemos emplear todas las características modernas y correcciones a fallas de seguridad, pero también es una desventaja ya que muchas veces no es posible emplear las últimas versiones de PHP o simplemente el hosting no ha actualizado a estas últimas versiones.
Quedando claro el aspecto principal que tenemos que tener en cuenta al momento de publicar nuestro proyecto, vamos a tratar otro punto importante, Node.
Integración con Node
Como se ha venido comentando, una de las diferencias fundamental que tenemos en Laravel con respecto a otros frameworks, es que tenemos una integración con Node de manera directa, podemos agregar tecnologías del lado del cliente (o del servidor si lo requieres) fácilmente con Node, instalar React, Vue o Angular para desarrollar nuestras aplicaciones; por ejemplo, supone que también tenemos una integración con Vue, como enseñamos en el libro, antes de publicar, recuerda también ejecutar el comando para generar los archivos del cliente a producción, que usualmente es el de:
$ npm run buildY automáticamente, debes de probar el desarrollo realizado en Node, que debería de funcionar de igual manera que cuando estabas en ambiente de desarrollo:
$ npm run devSi la aplicación fue desarrollada correctamente, en caso de que tengas un error, debes de corregirlo y ejecutar el comando de:
$ npm run buildNuevamente.
Los comandos empleados para generar los builds los puedes consultar desde:
package.json
Aunque usualmente con los dos anteriores es suficiente.
Ya hemos empleado el comando de dev que es el empleado al momento del desarrollo, para producción debes de usar el de build; con esto, ya se generarán los archivos de salida en la carpeta de public.
Archivos y carpetas a publicar
El siguiente punto que tenemos que tener en cuenta es que vamos a llevar a producción, debemos de publicar todo el proyecto salvo la carpeta de node_modules.
Con especial interés a la carpeta vendor, que es donde se encuentran las librerías y paquetes que conforman el proyecto incluyendo el mismo framework de Laravel que tiene a ser bastante grande, la carpeta de los módulos de node solo se emplea en fase de desarrollo.
Simplifica o descarta el archivo .env
Como comentamos anteriormente evita en la mayoría de lo posible emplear las variables de entorno en el .env, en caso de que sea imprescindible para ti, puedes emplearlo pero, simplifica el mismo lo más que puedas.
Subir el proyecto al hosting
Ya en este punto estamos dando por hecho de que tienes un hosting contratado, en el panel de administración de los hostings, existe un apartado para manejar las conexiones FTPs, las cuales nos permitirán subir cada una de las carpetas y archivos del proyecto según lo listado anteriormente, así que, debes de crearte una cuenta desde el Cpanel de tu hosting.
Y con estos datos, puedes emplear un cliente FTP como FileZilla, en el cual, en el apartado de:
Archivos - Gestor de sitios
Puedes colocar las credenciales especificadas por tu hosting y usuario; con esto, es posible realizar una conexión y subir todos los archivos del proyecto, usualmente debes de subirlo en la carpeta de public_html o www, seguramente tendrás varias carpetas en el hosting, pero, debe haber alguna de ella en la cual te señalan con un archivo como el siguiente:
/domains/<YourDomain>/DO_NOT_UPLOAD_HERE
/domains/<YourDomain>/public_html
Donde puedes realizar la carga de los archivos y donde no, usualmente debes de arrojar todo el contenido del proyecto en la raíz de este directorio, y esto es, para que, desde el dominio configurado al servidor, tengas acceso directo sin estar concatenando la carpeta o carpetas en la URL del dominio; por ejemplo:
/domains/<YourDomain>/public_html/laravelproject
YourDomain.com/laravelproject
Hay algunos servidores como iPage en los cuales puedes colocar un pointer para poder colocar la carpeta raíz del proyecto en el dominio, y de esta forma es más fácil organizar varios proyectos en un mismo servidor ya que, puedes apuntar el dominio no a la raíz del servidor si no a una carpeta específica dentro de este.
Aquí puedes ver cómo queda el proyecto al subir el mismo en Hostinger:
Terminar configuración del proyecto
En este punto, debes de tener en el hosting todos los archivos y carpetas del proyecto, como recomendación, mantén activo el ambiente de desarrollo para ver los errores del proyecto tal cual lo tenemos hasta este punto:
.env
APP_ENV=local
APP_DEBUG=trueYa que, con esto podremos verificar rápidamente cuando sucede un error, también, recuerda que cuando tienes el proyecto en producción, Laravel genera un log de errores en:
storage/logs/laravel.log
Como recomendación adicional, intenta mantener todas las configuraciones posibles en sus correspondientes archivos y prescindir del .env que si bien es cierto que se puede emplear tanto en ambiente de desarrollo como de producción, al ser más propenso a errores o de eliminar o cambiar alguna clave valor por error o de simplemente ser eliminado por error, esto puede traer consecuencias fatales para tu aplicación y fallar de manera catastrófica; al manejar las configuraciones del en sus archivos correspondientes, hacen que la aplicación sea más segura para evitar este tipo de situaciones.
Configurar la base de datos
Desde tu hosting, debes de crear una base de datos y ejecutar la de tu proyecto que, al ser una aplicación a producción, debes de decidir qué registros eliminas y cuales mantienes para producción; el proceso comienza exportando la base de datos desde tu proyecto, para esto, puedes emplear cualquier cliente como los que empleamos en este libro como lo son HeidiSQL o TablePlus y lo exportas en formato SQL.
Luego, con esta base de datos exportada, el siguiente paso es crear una base de datos vacía en el hosting para la posterior ejecución del SQL anteriormente generado, al momento de crear la base de datos, recuerda colocar los datos de conexión en el proyecto en producción:
config\database.php
'mysql' => [
'driver' => 'mysql',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '<YourDB>'),
'username' => env('DB_USERNAME', '<YourUsername>'),
'password' => env('DB_PASSWORD', '<YourPassword>'),.htaccess
Posiblemente, si intentas ingresar a la aplicación desde el dominio en producción, veras un error de 403 o similar, esto es debido a que los únicos archivos públicos se encuentran dentro de la carpeta public, que se encuentra en la raíz del proyecto, necesitamos un mecanismo para decirle a Apache que el archivo de arranque del framework, el index.php se encuentra dentro de la carpeta public y no en la raíz, para ello, definimos el siguiente contenido dentro del .htaccess:
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>Con esta configuración lista, ya debería de funcionar la aplicación con normalidad.
⭐️Hostinger, el mejor hosting para Laravel
Hostinger es el hosting del momento, y no es por modismo, es un hosting realmente bueno, con muchas opciones para personalizar nuestra experiencia y económico, es decir, es el mejor hosting calidad precio, y lo mejor de todo, es que lo podemos emplear para publicar o hacer el deployment de nuestra aplicación en Laravel.
He migrado mi blog (creado en la última versión de Laravel, la 11) a Hostinger, y la experiencia ha sido superior a la que tuve con mi hosting anterior, iPage.
- Experiencia Personal: Estuve años con iPage, y aunque al principio fue bueno, los últimos meses fueron pésimos: problemas de velocidad, caídas inesperadas y un precio muy alto. Además, no permitía actualizar a Laravel 11 debido a la desactualización de su entorno.
- Ahorro y Valor: Pagué aproximadamente 360 € por 4 años en Hostinger. En contraste, iPage me costaba $160 anuales.
Si buscas un hosting que cumpla con los requisitos modernos de PHP y ofrezca personalización a un costo bajo, Hostinger es mi recomendación principal.
- ✅ Compatibilidad: Si soporta Laravel, soporta cualquier framework con menores requisitos, como CodeIgniter 4.
- Garantía: Si no te convence, tienes 30 días para solicitar una devolución completa de tu dinero.
✨ Ventajas de Emplear Hostinger con Laravel
Hostinger es una opción excelente para alojar aplicaciones web basadas en PHP, incluso con su plan compartido (el más económico). Aquí tienes las principales razones:
- Rendimiento Impresionante (LiteSpeed)
- Hostinger utiliza servidores LiteSpeed, lo que garantiza un procesamiento muy rápido de solicitudes HTTP/2. Esto es crucial para el SEO, ya que una carga rápida de la página mejora tu posicionamiento en Google y otros motores de búsqueda.
- Compatibilidad con las Últimas Versiones de PHP y MySQL
- Una de las mejores características es su soporte constante para las últimas versiones de PHP y MySQL. Esto es fundamental porque Laravel siempre se mantiene a la vanguardia con las versiones más recientes de PHP.
- Seguridad
- Hostinger ofrece una excelente seguridad, incluyendo el escaneo de malware a nivel de aplicación para los archivos cargados.
- Excelente Calidad-Precio
- Ofrece una relación inigualable entre el costo y las prestaciones que proporciona.
Características y Herramientas
Usar Hostinger es muy fácil, ya que cuenta con todas las herramientas necesarias para la administración de nuestras aplicaciones:
- Base de Datos y Administración: Incluye servidores MySQL con administración vía PHPMyAdmin.
- Servidor Web: Utiliza el servidor Apache.
- Configuración Flexible: Permite variar fácilmente las versiones de PHP y MySQL, así como gestionar las extensiones (DLLs).
- Panel de Control: Su panel de control es agradable y fácil de usar, con muchas opciones personalizadas.
- Soporte: Su atención al cliente es rápida, aunque, como ocurre en muchas plataformas, usualmente no proveen información altamente técnica para proyectos específicos de PHP.
Si quieres obtener Hostinger a un precio especial, te dejo mi enlace de referido: https://hostinger.es?REFERRALCODE=1ANDRS96
Conclusión
Los pasos mostrados en este capítulo son de carácter informativo y pasa ser tomadas como referencia para cuando quieres servir tu proyecto a producción, sin embargo, dependiendo del proyecto y el hosting que vayas a emplear, puede que tengas que emplear más configuraciones o variar las aquí especificadas.
Si quieres saber como puedes hacer el deploy en Docker mediante Railway de una aplicación en Laravel.
Acepto recibir anuncios de interes sobre este Blog.
Lanzar tu app en Laravel en producción o hacer el deployment, para ello, los pasos que tienes que seguir no difieren mucho de cualquier otro proyecto de PHP, veamos los pasos que debes de tener en cuenta.