tutorial-laravel

El objetivo de esta entrada es explicarles los pasos que realice para colocar una Api Laravel en Servidor Cpanel así como compartirles como revolví algunos detalles con los que me encontré.

En esta guía no estamos ingresando detalles de PHP o configuración si no enfocados al proceso de colocar la api en el servidor Cpanel. Es importante que en Cpanel tengamos configurado la versión de PHP compatible con la que se realizo la Api.

Paso 1. Revisión proyecto local

Verificar que la Api se encuentre correcta en el entorno local, despues de lo cual es recomendable cambiar las siguientes variables en el archivo .env

APP_ENV=production
APP_DEBUG=false

Paso 2.Comprimir el proyecto en un archivo .zip

Paso 3.Configurar Hosting (Cpanel)

Vamos a ingresar al administrador de Cpanel para asegurarnos de que tenga la versión de PHP que necesitamos. Para revisar que versión de PHP requiere tu proyecto lo puedes revisar con el comando

php artisan --version 

Con esa información podemos obtener en la pagina oficial de laravel la versión de PHP en la sección #Versiones PHP

Laravel guia

Ahora podemos revisar en el servidor que versión tiene de PHP y actualizarla si es necesario, esto lo hacemos desde Avanzado/Configuración PHP

configuración PHP
Configurar PHP en Cpanel

Paso 4. Subir los archivos del proyecto.

Los archivos del proyecto laravel van en la carpeta del Dominio Principal o subdominio donde deseemos montar.

Dominio Principal

Vamos a colocarlo en la carpeta public_html subimos el archivo comprimido .zip una vez que lo realicemos vamos a descomprimir el archivo.

Subdominio

En este caso colocamos la API en un subdominio llamado servicios por lo que cargaremos los .zip que hemos creado, después de subirlo hay que descomprimirlos y podemos borrar los .zip

Paso 5.Modificar archivo Index.php

Este paso es muy importante para indicarle donde se encuentra nuestraa aplicacion laravel, donde estan las rutas etc.

Buscamos el archivo index.php que se encuentra public y lo editamos de la siguiente manera:

require __DIR__.'/CarpetaProyecto/vendor/autoload.php';
$app = require_once __DIR__.'/CarpetaProyecto/bootstrap/app.php';

Si lo tenemos en un subdominio seria de la siguiente manera:

require __DIR__.'/../CarpetaProyecto/vendor/autoload.php';
$app = require_once __DIR__/.././CarpetaProyecto/bootstrap/app.php';

En caso como yo que descomprimi los archivos en la misma carpeta no realice este cambio.

Paso 6.Crear Base de Datos

En este paso debemos crear la base de datos en nuestro servidor en este caso en MySQL, es importante que resguardemos el usuario, contraseña y nombre de la BD que crearemos.

Crear BD

Paso 7.Conectar a Base de Datos

Después de crear la BD debemos editar el archivo .env, con los siguientes datos

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE= "BD"
DB_USERNAME= "usuariocreado"
DB_PASSWORD= "contraseñacreada"
Archivo .env

Si todo funciono correctamente y se realizaron los cambios necesarios el proyecto debe estar funcionado correctamente, ejemplo http://hoteldeabejas.org/servicios/

Inconvenientes

Durante mi proceso para colocar esta api en el servidor me tope principalmente con los siguientes dos problemas por lo que quiero compartirles como lo solucione.

Falta de Archivos

Si el proyecto lo descargamos de un repositorio como GitHub hay varias carpetas y archivos que por seguridad no se suben. Como es el caso de la carpeta vendor por que al subir el projecto e intentar ingresar a la url del dominio nos puede aparecer un error como el siguiente:

Warning: require(/home/u437253683/domains/hoteldeabejas.org/public_html/servicios/vendor/autoload.php): failed to open stream: No such file or directory in /home/u437253683/domains/hoteldeabejas.org/public_html/servicios/index.php on line 24

Fatal error: require(): Failed opening required '/home/u437253683/domains/hoteldeabejas.org/public_html/servicios/vendor/autoload.php' (include_path='.:/opt/alt/php74/usr/share/pear') in /home/u437253683/domains/hoteldeabejas.org/public_html/servicios/index.php on line 24

Para resolver esto debemos ejecutar lo siguiente en la consola

composer install

Con esto se vuelve a crear la carpeta vendor.

Error PHP Fatal error: Could not check compatibility between Handler and Illuminate

El siguiente error con el que me encontré me pareció confuso pero tenia que ver con la actualización de Laravel de acuerdo a la documentación oficial.

PHP Fatal error: Could not check compatibility between App\Exceptions\Handler::report(App\Exceptions\Throwable $exception) and Illuminate\Foundation\Exceptions\Handler::report(Throwable $e), because class App\Exceptions\Throwable is not available in /home/u437253683/domains/hoteldeabejas.org/public_html/servicios/app/Exceptions/Handler.php on line 37
PHP Fatal error: Uncaught ReflectionException: Class App\Exceptions\Handler does not exist in/home/u437253683/domains/hoteldeabejas.org/public_html/servicios/vendor/laravel/framework/src/Illuminate/Container/Container.php:830

Laravel 7 utiliza la serie 5.x de los componentes de Symfony por lo que se requieres unos cambios menores para su aplicación.

Estos cambios tienen que ver con los métodos reporte, render etc de Handler que se encuentra en  App\Exceptions\Handler los cuales deben aceptar las instancias de  Throwable en lugar de Exception

Información pagina oficial.

Blog de donde me guíe

Por lo que mi archivo se veía de esta manera:

Archivo con los cambios:

Throwable

Espero que esta información les pueda ayudar a ser mas sencillo la tarea de colocar su Api en un servidor, así como que los errores que me costo encontrar una solución les puedan guiar para resolver los suyos si se presentan.

por Esther Lopez

Programadora, Experiencia en educación para niños en el ámbito de la robótica, conferencista y activista en grupos donde enseñen programación a mujeres y niños de forma fácil.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.