Publicar Laravel en Hosting compartido
Índice de contenidos
Recomendaciones antes de publicar
- Antes de empezar a desarrollar la aplicación en Laravel deberíamos saber, que versión de PHP se trabaja en el Hosting, en ocasiones los proveedores de Hosting no te permiten cambiar la versión del PHP a menos que te cambies de plan de cuenta. Según la versión de PHP podemos decidir que versión de Laravel podemos trabajar y así evitar futuros problemas.
- Verifica que el Hosting cumpla con los requerimientos de la versión de Laravel que se escogió, puedes revisarlo en la documentación de Laravel https://laravel.com/docs/master/installation
- En un Hosting compartido por lo general no hay problemas de permisos, pero si surgiera algún error recuerda que las carpetas
storage
ybootstrap/cache
debe tener permisos de escritura755
- Trabaja en un entorno de desarrollo lo más parecido al Hosting donde se va ha publicar, esto te evitará muchos dolores de cabeza.
- Sigue un principio básico, todo lo que no es público no debe ser accedido a traves del navegador web u otro programa. La carpeta
public
de Laravel es la parte que debe ser pública las demas carpetas no deben ser accedidas por ningun lado. - Para subir los archivos es mejor subirlo en uno o dos archivos comprimidos (zip), subalo por FTP y luego en el administrador de archivos del cPanel lo descomprime.
- Exporte su base de datos en formato .sql o .zip y lo importa a través de la aplicación phpMyAdmin que trae el cPanel
- Los datos de conexión se guardan en el archivo .env, cuando haya subido los archivos de laravel modifique este archivo con los nuevos datos de conexión.
APP_ENV=production APP_DEBUG=false DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_DATABASE=laravel_demo DB_USERNAME=root DB_PASSWORD=secret MAIL_DRIVER=mail MAIL_HOST=mail.midominio MAIL_PORT=25
Publicar en el dominio principal
Cambiar la estructura de carpetas
En un hosting compartido la carpeta pública del dominio principal es public_html
y su ruta absoluta es /home/user/public_html
. En Laravel la carpeta pública es public
, entonces debemos hacer los siguientes cambios.
Creamos la carpeta /home/user/laravel
y ponemos en esa carpeta todo el contenido de archivos y carpetas de Laravel
Movemos el todo el contenido de la carpeta /home/user/laravel/public
a la carpeta /home/user/public_html
Modificamos el archivo /home/user/public_html/index.php
, modificamos 2 lineas
require __DIR__.'/../laravel/vendor/autoload.php'; $app = require_once __DIR__.'/../laravel/bootstrap/app.php'; |
En app/Providers/AppServiceProvider.php agrega el siguiente código en el método register, para que la función public_path()
cambie a la nueva ruta de la carpeta pública
$this->app->bind('path.public', function() { return base_path().'/public_html'; }); |
Publicar en sub dominio
Cambiar la estructura de carpetas
En un sub dominio la ruta de la carpeta principal es /home/user/public_html/subdominio
Creamos la carpeta /home/user/public_html/subdominio/laravel
y ponemos en esa carpeta todo el contenido de archivos y carpetas de Laravel
Movemos el todo el contenido de la carpeta /home/user/public_html/subdominio/laravel/public
a la carpeta /home/user/public_html/subdominio
Modificamos el archivo /home/user/public_html/subdominio/index.php
, modificamos 2 lineas.
require __DIR__.'/laravel/vendor/autoload.php'; $app = require_once __DIR__.'/laravel/bootstrap/app.php'; |
En app/Providers/AppServiceProvider.php agrega el siguiente código en el método register, para que la función public_path()
cambie a la nueva ruta de la carpeta pública
$this->app->bind('path.public', function() { return realpath(base_path().'/../'); }); |
Proteger la carpeta laravel
Como la carpeta del subdominio se encuentra en la zona pública y puede ser accedido desde http://midomnio.com/subdominio/laravel/.env
entonces necesitamos protegerlo.
En el archivo public_html/subdominio/.htaccess
agregamos al inicio la siguiente redirección
<IfModule mod_alias.c> RedirectMatch 301 laravel/.* /error/? </IfModule> |