Consideraciones antes de realizar la publicación
- Verificar la versión de PHP que tiene el Hosting, en función a la versión de PHP podemos decidir que versión de Laravel podemos trabajar y así evitar futuros inconvenientes.
- Validar que el Hosting cumpla con los requerimientos de la versión de Laravel que se escogió, en el siguiente enlace se puede encontrar la documentación Link
- En un Hosting compartido por lo general no hay problemas de permisos, sin embargo si surgiera algún error las carpetas storage y bootstrap/cache debe tener permisos de escritura 755.
- Debemos desarrollar nuestra aplicación en un ambiente lo más parecido al Hosting donde se va ha publicar.
- 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.
- Exportar la base de datos en formato .sql o .zip e importarlo desde la aplicación phpMyAdmin que se encuentra en el cPanel.
- Los datos de conexión de nuestra aplicación se guardan en el archivo .env, cuando se suba los archivos de nuestra aplicación modificaremos 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=bd_laravel DB_USERNAME=root DB_PASSWORD=secret
Consideraciones antes de realizar la publicación
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 la aplicación.
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 nuestra aplicación
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