Últimas entradas

Publicar desarrollos en Laravel en Hosting

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

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *