laravel

Montar y configurar proyecto existente de Laravel desde cero

En este post te describiré cómo montar un proyecto de Laravel en tu servidor de desarrollo. Lo hago para los clientes a los que les envío el código y necesitan una guía para hacerlo.

Este tutorial también sirve por si te has descargado un proyecto de Laravel y lo quieres colocar en tu servidor de desarrollo.

Por cierto, este tutorial va enfocado a usar Laravel con Apache en Windows.

Explicación rápida de un proyecto de Laravel

Laravel tiene varias dependencias que están dentro de vendor. Digamos que son librerías y código de terceros para que el framework funcione. Estas dependencias las descarga Composer y no deberían compartirse.

El verdadero código está mayormente en app y routes.

No hay esquema de base de datos; todo se hace a través de migraciones que se encuentran dentro de database.

Al hacer las migraciones se crean las tablas y en ocasiones se ingresan datos como el primer usuario o cosas similares.

La mayoría de cosas se hacen con composer y artisan, usando la línea de comandos. Así que es necesario tener composer y php en la PATH.

Instalando herramientas

Entonces vas a necesitar PHP, Apache, MySQL y composer. PHP es el lenguaje de programación, Apache es el servidor web que procesará las solicitudes pasándolas a PHP, MySQL el gestor de base de datos y composer el gestor de dependencias.

En mi blog ya tengo el tutorial para instalar XAMPP que contiene las primeras 3 herramientas, te recomiendo ir al mismo y descargar la última versión, ya que el post fue hecho con la versión 7 pero al descargar XAMPP se descargará la última versión.

Si dejas todo como está, entonces PHP quedará en C:\xampp\php\. Guarda esa ruta porque luego tienes que agregarla a la PATH como se indica en este tutorial.

En cuanto a MySQL no es necesario agregarlo a la path, solo basta con instalarlo, y se instala automáticamente con XAMPP (recuerda instalar phpmyadmin igualmente). Si incluso así quieres tenerlo, agrega la carpeta C:\xampp\mysql\bin\ a la PATH.

Luego debes instalar composer, que es el gestor de dependencias. Ya tengo un tutorial de cómo instalarlo aquí.

Ahora abre un nuevo símbolo del sistema o CMD y ejecuta:

php -v

Luego ejecuta (la V es mayúscula en este caso):

composer - V

Y debe salir algo como lo siguiente:

C:\Users\parzibyte>php -v
PHP 8.0.3 (cli) (built: Mar  2 2021 23:34:05) ( ZTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.0.3, Copyright (c) Zend Technologies

C:\Users\parzibyte>composer -V
Composer version 2.0.13 2021-04-27 13:11:08

Si te dice “…  no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable” es porque no agregaste la o las carpetas a la PATH o no has guardado cambios.

Importando proyecto

Nota: para el ejemplo supondré que la carpeta se llama mentores. No olvides cambiar el nombre en los siguientes puntos si tu proyecto tiene otro nombre.

Debes colocar el proyecto en una nueva carpeta de htdocs, por ejemplo si el proyecto se llama mentores entonces debe estar en C:\xampp\htdocs\mentores y dentro debe tener la carpeta app, bootstrap, etcétera.

A partir de aquí los comandos se deben ejecutar en la carpeta del proyecto, así que debes cambiar a ella con:

cd C:\xampp\htdocs\mentores

Y el prompt debe cambiar. Al pedir un comando debe decir:

C:\xampp\htdocs\mentores>

Ahora puedes elegir 2 cosas, una es la manera correcta y otra la manera fácil que puede traer más errores.

La manera correcta

Si lo hacemos a la manera Laravel, entonces:

  • Ejecutamos composer install para instalar las dependencias.
  • Creamos el archivo .env que debe ser hermano (y su contenido debe ser igual al) del archivo .env.example
  • Abrimos phpmyadmin o la consola de MySQL y creamos una nueva base de datos. A la mía la llamaré mentores.
  • En el archivo .env, dentro de DB_DATABASE ponemos el nombre de nuestra base de datos. En mi caso queda así porque se llama mentores (línea 14):
APP_NAME=Laravel
APP_ENV=local
APP_KEY=esta es una clave secreta que no deberías compartir
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mentores
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
  • Volvemos a la terminal y ejecutamos php artisan migrate --seed. Ese comando va a migrar la base de datos (crear tablas) y alimentarla. Si te da errores puede que sea porque no has configurado la base de datos en el archivo .env. Debe decir algo así:
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (17.73ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (47.74ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (29.33ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated:  2019_12_14_000001_create_personal_access_tokens_table (113.63ms)
Migrating: 2022_03_31_165447_create_mentors_table
Migrated:  2022_03_31_165447_create_mentors_table (17.77ms)
Migrating: 2022_03_31_171619_agregar_campos_mentores
Migrated:  2022_03_31_171619_agregar_campos_mentores (7.44ms)
Migrating: 2022_04_01_184225_add_rol_column
Migrated:  2022_04_01_184225_add_rol_column (8.51ms)
Migrating: 2022_04_01_184725_drop_columns_from_mentores
Migrated:  2022_04_01_184725_drop_columns_from_mentores (6.28ms)
Migrating: 2022_04_01_184855_add_users_relation_to_mentores
Migrated:  2022_04_01_184855_add_users_relation_to_mentores (38.03ms)
Migrating: 2022_04_01_190020_agregar_bandera_registro_mentores
Migrated:  2022_04_01_190020_agregar_bandera_registro_mentores (8.04ms)
Migrating: 2022_04_02_184935_agregar_campos_registro_secundario_mentores
Migrated:  2022_04_02_184935_agregar_campos_registro_secundario_mentores (6.19ms)
Migrating: 2022_04_04_152101_eliminar_campo_registro_completo_de_mentores
Migrated:  2022_04_04_152101_eliminar_campo_registro_completo_de_mentores (7.63ms)
Migrating: 2022_04_04_171642_create_mentorados_table
Migrated:  2022_04_04_171642_create_mentorados_table (52.01ms)
Migrating: 2022_04_08_025859_create_reportes_table
Migrated:  2022_04_08_025859_create_reportes_table (57.04ms)
Migrating: 2022_04_11_003403_create_periodos_table
Migrated:  2022_04_11_003403_create_periodos_table (16.36ms)
Migrating: 2022_04_11_025122_add_id_periodo_to_mentors
Migrated:  2022_04_11_025122_add_id_periodo_to_mentors (41.87ms)
Migrating: 2022_04_11_043457_create_periodos_reportes_table
Migrated:  2022_04_11_043457_create_periodos_reportes_table (16.41ms)
Seeding: Database\Seeders\UserSeeder
Seeded:  Database\Seeders\UserSeeder (54.45ms)
Database seeding completed successfully.
  • En la misma terminal generamos una clave para nuestro proyecto con php artisan key:generate. Debe decir algo como Application key set successfully
  • Luego de eso ejecutamos php artisan storage:link para crear algunos enlaces con el almacenamiento y la carpeta pública. Debe decir algo como The links have been created.
  • Visitamos http://localhost/mentores/public/ y debe aparecernos la app.
  • (este punto solo es para algunos proyectos que son míos) Ya puedes iniciar sesión con el usuario administrador por defecto, cuyas credenciales puedes ver en database\seeders\PrimerUsuarioSeeder.php

Nota importante: si aparece un error recomiendo buscar su solución en Google. A veces solo hay que hacer un composer update, actualizar la versión de PHP, revisar la conexión de internet, etcétera y no tienen nada que ver con el proyecto en sí, sino con el entorno.

La manera fácil

Si no quieres instalar las dependencias ni hacer las migraciones entonces puedes solicitarme el proyecto con las dependencias instaladas (obviamente solo si me has contratado para ese proyecto, en otro caso, no), el archivo .env, los enlaces y un archivo .sql que vas a importar en MySQL.

La instalación de todo XAMPP igual la debes hacer, solo te ahorras los comandos. El proyecto queda en las mismas carpetas y se abre en la misma ruta del navegador, además de que igualmente debes crear la base de datos como lo diga el .env.

Conclusión

Espero que este artículo te haya servido o te haya aclarado ciertas dudas.

Para terminar te dejo con otro post que te dice qué hacer después de clonar un proyecto de Laravel y más tutoriales y sistemas de Laravel en mi blog.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

3 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

3 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

3 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

4 días hace

Esta web usa cookies.