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.
1 2 3 4 5 6 7 8 |
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
1 2 |
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.
1 2 3 |
$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.
1 2 |
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
1 2 3 |
$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
1 2 3 |
IfModule mod_alias.c RedirectMatch 301 laravel/.* /error/? /IfModule |