Laravel en un hosting compartido

Normalmente en un hosting compartido, por ejemplo tipo godaddy, surgen muchos problemas a la hora de subir nuestro proyecto en Laravel. Aunque existe una manera sencilla de subirlo directamente sin tener que instalar nada desde el cPanel.

Lo primero que tenemos que hacer, si tenemos nuestro proyecto en nuestro equipo es dividir el proyecto y configurarlo como si fuéramos a tenerlo en nuestro hosting compartido.

Cualquier proyecto Laravel tiene una carpeta «Public», esa es la única carpeta que dejaremos en nuestro directorio raiz, y el resto del proyecto lo tenemos que subir una carpeta por arriba.

Esto nos dejará el siguiente esquema por ejemplo en un hosting compartido donde tengamos varios proyectos

nuestro_proyecto_laravel
public_html
|
|——dominio1.com
|——dominio2.com
|——public_de_laravel.com( aquí los ficheros del Public de Laravel)

Y ahora tendríamos que enlazar el Public de Laravel con nuestra carpeta del proyecto. Para ello tenemos que modificar el archivo «index.php» de la carpeta public y apuntarla a la carpeta de nuestro proyecto.

Básicamente tendremos que cambiar las dos direcciones require __DIR__.’../../../nuestro_proyecto_de_laravel/….

<?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylor@laravel.com>
 */

define('LARAVEL_START', microtime(true));

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
|
*/

require __DIR__.'../../../nuestro_proyecto_de_laravel/vendor/autoload.php';

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'../../../nuestro_proyecto_de_laravel/bootstrap/app.php';

/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

Y así nos debería de funcionar de forma correcta, tendremos por un lado el directorio público y por otro la carpeta del proyecto.

Lógicamente tenemos también que crear la base de datos en nuestro servidor compartido, exportar nuestra base de datos en .sql de nuestro equipo e importarla en el servidor compartido en la base de datos nueva que hayamos creado.

Una vez tengamos la base de datos lista apuntaremos los datos del archivo .env del directorio de laravel a nuestra base de datos.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nombre_de_la_base_de_datos
DB_USERNAME=usuario
DB_PASSWORD=password

A veces incluso con esto una instalación puede dar problemas, muchas veces son por los archivos de la caché de laravel que no están limpios, una solución es limpiar la cache desde la consola de comandos accediendo al servidor con SSH.

php artisan cache:clear

Y si no tenemos acceso por consola al servidor podemos entrar por FTP y empezar a borrar las carpetas de la cache de Laravel o podemos añadir el comando que necesitemos en el archivo web.php de nuestras rutas:

Route::get('/foo', function () {
     $exitCode = Artisan::call('cache:clear'); });

Bueno en principio con esto nos devería de funcionar bien nuestro proyecto en el servidor compartido.

2 comentarios en “Laravel en un hosting compartido”

  1. Muy util y mejor explicado. Te consulto: tenés experiencia con varios proyectos Laravel en un hosting compartido? Laravel ocupa mucho espacio. Entonces, compartis la instalacion del framework entre los proyectos o bien, tenés n instalaciones de Laravel? Gracias

    1. Gracias por tu comentario. Te respondo a tu pregunta, actualmente sí tengo varios proyectos laravel en el mismo servidor pero son independientes. Lo que realmente más espacio me ha ocupado son los archivos que te autogenera, como archivos de cache.

Deja un comentario