Platzi
Platzi

LA EDUCACIÓN ES UN REGALO ¡ACCEDE AL PRECIO ESPECIAL!

Antes: $249
$149
Currency
Antes: $249
Ahorras: $100
COMIENZA AHORA
Termina en: 17D : 16H : 37M : 21S

Laravel y Base de Datos

Entorno de trabajo y repaso de Laravel

1

Qué aprenderás sobre Laravel Avanzado

2

Repaso de Laravel y requisitos del curso

3

Configuración de la base de datos-SQLite en Laravel

4

Instalación, configuración y uso de Homestead

5

Instalar Laravel Sanctum

6

API de autenticación: laravel UI y laravel sanctum

Manejo de tu base de datos con Laravel

7

Capa de transformación con API Resources

8

Manejo de relaciones en bases de datos con Laravel

9

Relaciones Polimórficas en Eloquent

La terminal de Laravel

10

Cómo crear comandos para la terminal de Laravel

11

Ejecutando comandos desde la API

12

Programación de tareas

Eventos y tareas de Laravel

13

Eventos y Listeners en Laravel

14

Eventos de Eloquent

15

Introducción al uso de Queues y Jobs

16

Cómo disparar eventos en Queues

17

Laravel Horizon

Manejo de errores

18

Cómo capturar y leer errores con la clase Handler

19

Excepciones personalizadas

20

Excepciones HTTP personalizadas y debugging con Laravel Telescope

21

Configuración de logs y channels en Laravel

El corazón de Laravel

22

Ciclo de vida de una aplicación en Laravel

23

¿Qué son los service containers?

24

¿Cómo funciona un service container?

25

Registro y carga de clases con service providers

Creación de paquetes

26

¿Cómo crear mis propios paquetes de Laravel?

27

Propiedades para manejo de dependencias

28

Comprende el archivo composer.json

29

Extendiendo composer.json, autocarga de clases y PSR-4

30

Crear mis propios Services Providers

31

Publicación de archivos

32

Uso de repositorios locales

33

Publicación de paquetes en packagist

Instalación, configuración y uso de Homestead

4/33

Lectura

En la clase anterior creamos los endpoints para Products. ¿Cómo te fue creando el modelo, factories, seeders y migraciones para el endpoint de Categories?

Para evitar tener que configurar todo el entorno de desarrollo que vamos a usar en el curso, es decir, el motor Base de Datos, Redis, Cliente de correo, entre otros. En esta clase te voy a enseñar como dejar de preocuparte de ahora en adelante de la infraestructura local de tu proyecto usando Laravel Homestead.

¿Cómo funciona Homestead?

Laravel Homestead es una máquina virtual oficial del framework que viene lista para el desarrollo de proyectos con Laravel y otras tecnologías de PHP.

Con ella tienes un servidor web muy parecido al que deberías tener en producción. Y no pierdes tiempo configurando o teniendo problemas al instalar Node.js, Redis o cualquier otra herramienta que necesites para tu desarrollo.

Lo genial de Homestead es que puedes instalarlo en cualquier sistema operativo (Linux, Windows, o Mac). Y créeme, si tu equipo de trabajo lo utiliza, te va a quitar de encima la excusa de “en mi máquina sí funciona”.

Homestead funciona sobre VirtualBox utilizando Vagrant:

VirtualBox es la herramienta que nos permite crear máquinas virtuales.
Vagrant es una manera elegante y sencilla de administrar y aprovisionar máquinas virtuales como Laravel Homestead.

Requisitos para instalar Homestead

Lo primero es descargar las dos aplicaciones desde sus páginas oficiales.

https://www.virtualbox.org/wiki/Downloads
https://www.vagrantup.com/downloads.html

Recuerda que tu equipo debe tener activada la opción de Virtualización. En la BIOS debes buscar las opciones de virtualización, esto depende del fabricante, pero por lo general debes ver un área para habilitar una de las siguientes opciones: VT-x si tu procesador es Intel y AMD-v si tu procesador es AMD. En algunos equipos viene habilitado por defecto, pero si en el proceso de instalación tienes algún error, posiblemente es por esto.

La instalación es bastante simple, no debemos configurar nada en especial. Deja las opciones por defecto y dale clic en siguiente, la configuración se hará directamente usando los comandos que verás a continuación.

Primero vamos a agregar la Box de Vagrant que nos provee Laravel. Es bastante pesada, así que puede que este paso demore bastante si tienes una velocidad de descarga baja.

Dentro de la terminal (abre la terminal) basta con escribir el siguiente comando para empezar la descarga:

vagrant box add laravel/homestead

Instalando Homestead

Al terminar, vamos a instalar Homestead clonando el repositorio donde mejor te parezca usando git, te recomiendo que lo hagas dentro de tu directorio home.

git clone <https://github.com/laravel/homestead.git> Homestead

Luego de clonar el repositorio lo puedes instalar ejecutando el comando bash init.sh en tu consola dentro de la carpeta que clonaste (cd Homestead && bash init.sh). Si ussas Windows, entonces es init.bat.

Como resultado se creará un archivo llamado Homestead.yaml que estará ubicado en el directorio oculto ~/.homestead para Linux. En mi caso se creó dentro de C:\Users\Sergio Ojeda\.homestead\Homestead.yaml.

Configurando Homestead

El archivo Homestead.yaml es el archivo de configuración de Homestead. Ahí podemos definir una serie de campos como la IP, memoria y el proveedor de servicios. Debemos asegurarnos que el mismo esté de acuerdo a nuestras preferencias:

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

Para usarlo debemos tener creada nuestra Key SSH. Si aún no la tenemos, podemos ejecutar en nuestra consola (si usas Windows, te recomiendo Git Bash para esto):

ssh-keygen -t rsa -C "[email protected]".

Podemos dejar todo por defecto tecleando enter hasta que nos genere nuestra llave pública, dentro de una ruta la cual debe coincidir con:

authorize: ~/.ssh/id_rsa.pub
keys:

Carpeta Compartida

La propiedad folders del archivo Homestead.yaml muestra todas las carpetas que deseas compartir con Homestead. A medida que cambien los archivos dentro de estas carpetas, se mantendrán sincronizados entre tu máquina local y Homestead. Se pueden configurar tantas carpetas compartidas como sea necesario, pero para nuestro caso solo configuramos una:

folders:

- map: ~/Code

to: /home/vagrant/Code

En el caso de Windows, yo la ubique de la siguiente forma:

folders:

- map: C:\\Proyectos

to: /home/vagrant/Code

Configurar los sitios y base de datos

Para configurar nuestros sitios tenemos la propiedad sites, en la cual, dentro de map, podemos asignar un dominio fácilmente y apuntarlo a una de nuestras carpetas.

sites:

- map: laraveles.app
to: /home/vagrant/Code/laraveles/public

- map: platzi-api.test
      to: /home/vagrant/code/platzi-ecommerce-api/public      

Cada vez que desees agregar un nuevo sitio, se hace dentro de este archivo. Y podrás configurar tantos como desees. También tenemos una propiedad databases, en la cual podemos crear cuantas Bases de Datos queramos.

databases:

- laraveles

- platzi-api

Iniciando la máquina virtual

Luego de haber configurado nuestro archivo Homestead.yaml, nos queda iniciar la máquina virtual. Primero debemos ubicarnos dentro de la carpeta donde clonamos el repositorio y en consola ejecutar vagrant up.

Esto creará nuestra máquina virtual según lo que hayamos colocado en nuestro archivo de configuración. Luego de esto podremos acceder vía SSH a nuestra máquina dentro de la misma carpeta con el comando vagrant ssh.

Y podemos trabajar tal cual como si utilizáramos una máquina con Ubuntu con todo ya configurado. Al entrar podemos movernos a la carpeta donde se alojan nuestros proyectos dentro de la máquina virtual y procedemos a crear dos proyectos de prueba:

cd Code

laravel new homestead

Nota: como podemos observar, ya tenemos el instalador de Laravel en la máquina virtual.

Archivo Host

Para poder acceder a nuestros dominios es necesario editar el archivo host ubicado en:

Ubuntu: nano /etc/hosts
Windows: C:\\Windows\\System32\\drivers\\etc\\hosts

Si jamás has editado el archivo en Windows, puede que te de problemas de escritura, así que deberás abrir el archivo con un editor y permisos de administrador. O copiar el archivo en tus Documentos, editarlo y ponerlo de nuevo en la ruta correspondiente.

Dentro de este archivo solo debemos agregar la IP de Homestead y el nombre del o de los dominios que hayamos configurado:

192.168.10.10 laraveles.app
192.168.10.10 platzi-api.test

En nuestro navegador ya podremos ver nuestras aplicaciones accediendo a cualquiera de los dominios. Ya la máquina virtual se encarga automáticamente de darle los permisos correspondientes a bootstrap/cache y storage, algo que tendrías que hacer manualmente si trabajaras en un entorno local.

¿Dónde están mis archivos?

Para trabajar con los archivos de la aplicación puedes abrir el proyecto con el Editor o IDE de tu preferencia en la carpeta que hayas indicado en la propiedad folders. En mi caso, ~/Code para Ubuntu y C:\Proyectos para Windows. Al editar cualquier cosa, automáticamente estos archivos se sincronizan con los que tenemos en nuestra máquina virtual.

Agregar Nuevos Sitios

Para agregar nuevos sitios simplemente edita tu archivo Homestead.yaml como hiciste anteriormente, agregándolo en la propiedad sites. Cada vez que se haga esta operación debemos aprovisionar la máquina para que tome estos cambios, se realiza ejecutando dentro de tu terminal vagrant reload --provision.

Cambio mi .env por los datos de Base de Datos…

Y eso es todo. Ahora podemos usar Homestead para servir nuestras aplicaciones. Además nos ayuda a practicar como si estuviéramos dentro de un servidor real.

Para más información visita Laravel - Homestead

Homestead no es la única solución para esto, también tenemos otras herramientas como Docker, Laragon para Windows o Valet para Mac que nos crean entornos de desarrollo para Laravel. Te invito a que investigues sobre este tema, nos cuentes en la sección de comentarios y nos vemos en la siguiente clase donde trabajaremos con la API de autenticación.

Aportes 21

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Docker 😃

En mi caso con tal de tener un ambiente lo más cercano a producción en Windows decidí utilizar Windows Subsystem for Linux y con el paso del tiempo aprendí como establecer un ambiente con Valet para Ubuntu, aquí dejo el link para la guía:

https://platzi.com/tutoriales/1842-intro-laravel/5974-crea-un-ambiente-de-desarrollo-de-laravel-usando-wsl-2-y-laravel-valet/

Homestead es bonito, pero docker es amor!

Tanto tiempo sufriendo por esta configuración y todo este dolor se va con una sola clase!!

Interesante aunque prefiero usar mi máquina local donde siempre trato de tener todo actualizado, la virtualización puede consumir recursos así que prefiero trabajar desde mi computadora:3

Comparto con ustedes lo que a mi me funciono para instalar vagrant y virtual box Yo tengo instalado ubuntu en mi computadora lo primero que hice fue
activar la virtualizacion en la computadora a traves de la BIOS.

INSTALACION VIRTUAL BOX

1.- De la pagina oficial de virtual box descargue birtual box para ubuntu 19.10 en mi caso yo tengo esa version (tu necesitarias descargar de acuerdo a tu version de ubuntu o distribucion de linux).
2.- Abri mi consola como root, escribi lo siguiente para haccerlo
sudo -i
me pidio contrasenia de mi server, se la puse y ya tengo mi consola como root.
3.- En la misma consola me fui a mi carpeta descargas que es ah[i donde se descargo virtual box
di un ls para ver que ahi estaba mi archivo.
4.- En consola escribi lo siguiente para instalarlo
dpkg -i aquiponeselnombrecompletodetuarchivoquedescargastedevirtualbox.deb
le di enter y se comenzo a instalar, listo ahora ya lo tienes instalado.

INSTALACION VAGRANT

1.- De la pagina oficial de vegrant descargue el achivo para debian que termina en .deb.
2.- Abri mi consola como root, escribi lo siguiente para haccerlo
sudo -i
me pidio contrasenia de mi server, se la puse y ya tengo mi consola como root.
3.- En la misma consola me fui a mi carpeta descargas que es ahi donde se descargo mi archivo
di un ls para ver que ahi estaba mi archivo.
4.- En consola escribi lo siguiente para instalarlo
dpkg -i vagrant_2.2.9_x86_64.deb
le di enter y se comenzo a instalar, listo ahora ya lo tienes instalado.

Despues segui los pasos que menciona el profesor.

Siempre le he huido a homestead, pero creo que ya es el momento.

por que fallara tantoooooooooo todo esto de opensource y lenguajes y cosas de desarrollo. es horrible querer tener eso estable para trabajar
monte todo nada de errores HASTA QUE
fui a navegar la URL, no abria el laravel para nada
entre al archivo a crear un nuevo sitio y organizar bien las rutas
le meti el comando vagrant reload --provision.
y ahora no me funciona ni el vagrant ssh no conecta ni bota errores ni nada, una tortura estas cosas

le apuesto mas a docker, aunque laragon tambien es muy sencillo .

homestad es muy facil de implementar

Creo que otra excelente alternativa es usar docker. Yo tengo un proyecto base el cual reutilizo y se hace muy rápido.

Docker es una excelente opción y si usan Laravel 8, viene con Sail (que es básicamente docker ya configurado y también se puede modificar a gusto)

He tratado de usar Docker pero no lo he logrado, aunque Laragon me funciona a la perfección.

Pequeño aporte, en Windows con cmd o powershell remplacen el bash init.bat por ./init.bat

decidi pasarme a linux, logre montar ubuntu junto a linux despues de 2 noches de tortura, luego quice montar VAGRAND + HOMESTEAD en el linux y definitivamente me rendi!! fallos fallos fallos fallos … ahora le estoy dando una ultima oportunidad a homestead montandolo en el windows y si funciona comeback the ventana… sino… sigo con mi XAMPP que me harta esa sacadera de errores de estas plataformas

Creo que no vale la pena crear una máquina virtual que consuma tantos recursos (yo tengo un core i5 y 8gb de ram) teniendo el servidor local que nos proporciona Laravel. Aparte de que instalar Homestead es un verdadero dolor de cabeza. Si van a usar esto, preferible que usen Docker.

Para quienes usan windows, como yo, y en la linea de comandos se les presento el siguiente **error **:

init.bat : El término ‘init.bat’ no se reconoce como nombre de un cmdlet, función, archivo de script o programa ejecutable. Compruebe si
escribió correctamente el nombre o, si incluyó una ruta de acceso, compruebe que dicha ruta es correcta e inténtelo de nuevo.
En línea: 1 Carácter: 1

La solución es: .\init.bat.

Termine la instalación y al ingresar al dominio platzi-api.test solo me aparece "No input file specified. "

¿Alguien sabe que puede ser o que es lo que debería se ver?

Saludos!

Faltó indicar, que si se usa el motor mysql, en el archivo env estará la config DB_HOST=127.0.0.1

Lo que indicará que laravel va a intentar conectase a la máquina local en vez de la virtual (homestead) para acceder a la bd. Por lo tanto esa ip hay que cambiarla por la definida en el archivo Homestead.yaml. Por ejemplo si el archivo dice ip: “192.168.10.10”, entonces en el archivo .env de laravel hay que poner DB_HOST=192.168.10.10

En Mac uso Laradock con DNSMasq
Y próximamente migraré a Laravel Sail 🚀

Muy buen paso a paso para configurar Laravel - Homestead.