Subir proyecto de Laravel 5 a Servidor Compartido

Creo que esta es una de las preguntas más frecuentes que se ven dentro del Slack, luego de haber desarrollado mi aplicación como puedo subirla a producción dentro de un hosting o servidor compartido. En este articulo te vamos a explicar una de las maneras en que puedes hacer esto.

Para los que me conocen saben que particularmente odio los servidores compartidos debido a que nos da un trabajo doble al tener que montar una aplicación en producción ya que en su mayoría no disponemos de un acceso SSH (aparte que en la mayoría de las casos los clientes que los tienen son los que menos pagan xD). Pero esto no quiere decir que el proceso sea caótico o difícil, no hay nada de que preocuparse, y aunque a veces nos puede generar uno que otro error, nada que no se pueda solucionar.

Intentare explicar Paso a Paso como lograr subir una aplicación de Laravel 5 en producción dentro de un Hosting compartido que usa CPanel sin morir en el intento. Cabe destacar que este método es particular y en la red puedes encontrar otras maneras de hacerlo. Luego de tanta cháchara vamos a ello.

¡Asegurarte de que puedes!

Pues si, lo primero que debes hacer es asegurarte de que tu Servidor compartido cumpla con los requisitos mínimos para ejecutar Laravel, esto lo puedes ver en la documentación oficial pero como somos amigos colocare aquí los requerimientos para la ultima versión de al momento de escribir este articulo.

  1. PHP >= 5.6.4
  2. OpenSSL PHP Extension
  3. PDO PHP Extension
  4. Mbstring PHP Extension
  5. Tokenizer PHP Extension
  6. XML PHP Extension

Pues aunque parezca algo tonto, por experiencia se que aun son bastante los proveedores de hosting que aun mantienen sus servidores con versiones viejas de PHP lo que es igual a vulnerabilidades importantes de seguridad y una que otra limitación a la hora de programar con nuevas funciones.

Y puede que venga algún tonto a querer engañarte diciéndote uno de sus famosos lemas “tu aplicación no debería requerir más que PHP 5.3, ya que cualquier otra versión más reciente es demasiado nueva“. Si conoces a alguien así, huye rápidamente puesto que gracias a programadores así es que PHP no es tomado en serio para los que programan en otros lenguajes. porque una cosa es no poder actualizar y otra es no querer.

PHP ha cambiado enormemente, y nosotros también debemos hacerlo. Hoy en día, esperar años a actualizar la versión de PHP es simplemente ridículo. Es por ello que antes de instalar Laravel asegúrate de hablar con el proveedor de servicios si no cumples con alguno de estos requisitos (y puede que alguna que otra extensión extra si manejas imágenes y otras cosillas que no suelen venir por defecto).

Subir Proyecto de Laravel a Servidor Compartido

Luego de haber terminado tu desarrollo, lo recomendable es que comprimas tu proyecto antes de subirlo, de esta manera puedes evitarte el pensamiento de si va a quedar algo por fuera. Luego de que este listo, ya sea por FTP o vía CPanel sube tu proyecto dentro de tu carpeta raíz.

Subir Proyecto de Laravel a Servidor Compartido

Extraer contenido

Luego de que se haya subido tu archivo con éxito, descomprime todos los archivos dentro de tu servidor.

Subir Proyecto de Laravel a Servidor Compartido

De tal manera que todos tus archivos estarán dentro de tu carpeta raíz.

Separar Aplicación

Aquí esta la parte importante. Por teoría, sabemos que el archivo index.php ubicado dentro de la carpeta public de cualquier proyecto en Laravel sirve como el controlador frontal de todas las solicitudes o peticiones HTTP que ingresan a la aplicación. En palabras más coloquiales, tienes que pasar por aquí antes de hacer cualquier otra cosa.

Caso de Uso 1

En el primer caso de uso, el más común; imaginemos que necesito subir mi proyecto a la raíz de mi sitio web es decir en “www.example.com” y sabemos que este directorio raíz en la mayoría de los casos es una carpeta llamada public_html.

Ahora lo que debemos hacer a continuación es copiar todos los archivos dentro de la carpeta public de lo que acabamos de subir y colocarlos dentro public_html. De esta manera el index.php que estará allí sera el de nuestra aplicación en laravel.

Subir Proyecto de Laravel a Servidor Compartido

Con esto, todo el contenido que estaba dentro de proyecto_compartido/public ahora esta dentro de nuestro directorio public_html.

Lo siguiente que debemos hacer es editar el archivo index.php en el cual ahora debemos apuntar a una nueva rutas de los require. En este archivo debes buscar en las siguientes lineas (por ahora linea 22 y linea 36)

Y debes cambiarlas apuntando a donde se encuentran actualmente, para este ejemplo (Cabe destacar que puedes ubicar tus archivos donde mas te sea cómodo).

De esta manera al ingresar a nuestro dominio www.example.com por lo menos ya debería arrojarnos un error de Laravel. Aunque con hacer esto ya te debería funcionar.

Caso de Uso 2:

En el caso de que necesites subir tu proyecto no en la raíz de tu dominio, sino dentro de una carpeta, ya sea porque tengas instalado WordPress u otra cosa. En vez de copiar los archivos de public dentro de public_html, debes hacerlo en una carpeta aparte.

Por ejemplo si quieres que este dentro de www.example.com/laraveles debes cortar tu carpeta public de tu proyecto y pegarla dentro de tu directorio public_html, para luego renombrarla como quieras, si la renombras laraveles podrás acceder a /laraveles.

El resto de los pasos es el mismo para todos, solo que tienes que revisar bien el tema de las rutas dentro del index.php

Como organices tus carpetas es tu decisión, y depende de como lo sientas mas ordenado. Solo debes cuidar que todo este bien declarado para que ninguna ruta falle.

Editar Service Provider

Si por casualidad tus archivos JS y CSS no cargan, esto es porque hemos movido la ubicación de la carpeta public, esto se puede solucionar indicándole a Laravel una nueva ruta publica.

Esto se dentro de un ServiceProvider, para el ejemplo hemos utilizado AppServiceProvider, dentro del método register debes colocar tu nueva ruta.

Con esto ya debería quedar solucionado, si no es así es que has cometido el grave error de usar rutas relativas para cargar tus recursos en vez de usar los helper de Laravel como es el caso de asset().

Subir Base de Datos

Ya que no podemos ejecutar las migraciones, desgraciadamente tendremos que subir nuestra base de datos tal cual lo hacíamos en los años 90. Es decir  haciendo un dump de tu Base de Datos en Local, iniciar sesión en tu phpMyAdmin e importar el dump en la misma. Creo que esto no tiene mayor complicación por lo que creo que no es necesario detallar este punto, más si te queda alguna duda dejalo en los comentarios.

Configuración de Variables de Entorno

Recordemos que en nuestro archivo .env se encuentra parte de la configuración importante para que nuestra aplicación funcione, en este debes colocar la configuración de tu aplicación, tus datos de acceso a la Base de Datos, y si vas a utilizar el servicio de correo colocar los datos.

Si tienes algún tipo de error, no dudes en revisar los archivos de log de Laravel, aunque no lo creas estos son de gran ayuda aunque sean ignorados por la mayoría de los desarrolladores.

Esto es todo por ahora, este articulo fue algo rápido, si necesitas una explicación más detallada no dudes en comunicarlo, si tuviéramos otro tipo de servidor el deploy se podría hacer en tan solo minutos y sin tanto proceso, pero así es la vida y hay que saber hacer de todo.

Recuerda que puedes unirte al Slack de Laraveles si quieres discutir otras maneas de como subir tu aplicación de laravel en un servidor compartido.

Comparte este artículo

Entra en la discusión y deja tu comentario

  • Hola Sergio, hace poco tuve el mismo problema. Pero un poco distinto, el caso mio fue instalar laravel en un hosting compartido y queria eliminar la carpeta /public de laravel para que no tenga que entrar como miweb.com/public, y lo pude lograr tal vez se pueda actualizar tu post y agregar la forma que lo pude lograr. Saludos