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.
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.
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.
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.
Si lo hacemos a la manera Laravel, entonces:
composer install
para instalar las dependencias..env
que debe ser hermano (y su contenido debe ser igual al) del archivo .env.example
mentores
..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}"
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.
php artisan key:generate
. Debe decir algo como Application key set successfullyphp artisan storage:link
para crear algunos enlaces con el almacenamiento y la carpeta pública. Debe decir algo como The links have been created.http://localhost/mentores/public/
y debe aparecernos la app.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.
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
.
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.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.