Desplegando Laravel en hosting con cPanel
tips 2020-09-11 12:21:53
Como desplegar Laravel en un cPanel es una de las preguntas más frecuentes entre programadores que han comenzado a usar este framework y que, muchos, ya poseen un hosting con cPanel.
Realmente es una tarea muy sencilla, pero lo primero es lo primero, y esto es corroborar que tu hosting soporte los requerimientos de Laravel, como la versión de PHP requerida, etc.
Luego de esto si ya podrás ponerte manos a la obra, inicialmente debes preparar un zip con la carpeta de tu proyecto para subirla a tu hosting, lo que generalmente es más práctico y rápido que subir los archivos individualmente.
Pero, donde los subimos? ¡Obviamente que no queremos dejar todos nuestros archivos para que sean accedidos de forma pública!
Por lo tanto no lo subiremos a nuestra carpeta public_html (la cual es la carpeta que generalmente aloja nuestras páginas web).
Lo ideal será crear una nueva carpeta fuera de ésta, por ejemplo en el nivel anterior, si en nuestro hosting nuestra ruta para nuestros sitios web es /public_html sería una buena idea crear una nueva carpeta /laravel para subir allí nuestros proyectos (y no una /public_html/laravel).
Como mencioné anteriormente, puedes subir tu proyecto compactado allí y luego descompactarlo desde el mismo cPanel.
Asumamos que tu proyecto se llama mi_proyecto, entonces este una vez descompactarlo los archivos quedarán en una carpeta /laravel/mi_proyecto.
Quizás te estés preguntando ahora mismo como va a ser accedido tu proyecto si éste no tiene nada en el área pública de tu servidor web.
Bueno, precisamente estás en lo correcto, ya que debemos subir nuestra carpeta public de nuestro proyecto de laravel a algún lugar dentro la carpeta /public_html de nuestro hosting.
En que carpeta subirla va a depender de como quieras despacharlas y de tu configuración (pero siempre deberá ser algún lugar contenido en /public).
Por ejemplo, asumamos que tu hosting solo sirve un dominio y quieres que éste despliegue tu proyecto en laravel, entonces deberías subirla a la raíz de tu servidor, como dijimos /public_html. Sin embargo quizás quieras desplegarlo en un subdominio que apunta a otra carpeta de tu hosting, suponiendo que éste apunta a la carpeta /public_html/carpeta_subdominio será allí donde debes subir tus páginas públicas.
Por ejemplo, en un proyecto de laravel quizás tus páginas publicas sólo sean unas pocas como .htaccess, favicon.ico, robots.txt y index.php.
Suponiendo que quieres desplegar tu proyecto en el dominio principal de tu cPanel lo subirías a la raíz, y básicamente tu estructura final quedaría como lo siguiente:
/laravel
/mi_proyecto
... ...
todas las subcarpetas y páginas de tu proyecto
... ...
/public_html
... ...
/htaccess
/favicon.ico
/robots.txt
/index.php
... ...
Pero no hemos terminado aún, nos resta todavía configurar dos archivos para que nuestro proyecto funcione con los nuevos paths.
Primero editaremos el archivo laravel/mi_proyecto/app/providers/AppServiceProvider.php, y dentro del método register debemos insertar:
$this->app->bind('path.public', function() {
return base_path().'/public_html';
});
Si tus páginas públicas no estuviesen en la raíz sino en una subcarpeta modifica el path, por ejemplo "return base_path().'/public_html/carpeta_subdominio'"
Luego modifica el /public_html/index.php (o /public_html/carpeta_subdominio/index.php) y modifica los siguientes paths:
require __DIR__.'/../laravel/proyecto/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel/proyecto/bootstrap/app.php';
Agrega un "../" extra en caso de que estar configurando un subdominio.
Una vez hecho esto tu sitio web ya estará disponible al mundo! :)