¡Felicitaciones! Estás listo/a para ensuciarte las manos conmigo.
Claro que antes de tirar nuestra primera línea de código debemos preparar el terreno.
Hablemos un poco sobre los entornos de trabajo.
Típicamente en un proyecto de software nos encontraremos con, al menos, dos entornos diferentes:
Desarrollo
Producción
Salvo que seas Chuck Norris que va directo a producción claro ;)
Bien, asumiendo que no lo eres, acordemos en que tendremos un entorno (una computadora con su sistema operativo, software de base y demás) donde se conectarán a nuestra aplicación los usuarios reales y otro donde tú trabajarás en las increíbles mejoras que le realizarás.
Está bien que la aplicación se rompa de tanto en tanto en el entorno de desarrollo… es lo esperable.
No está bien que la aplicación se rompa en el entorno productivo.
Un esquema simplificado de trabajo será el siguiente:
El código nuevo se escribe (¡y se prueba!) en el entorno de desarrollo y, una vez está listo para consumo humano se despliega en producción.
Un punto muy importante: el código no sabe dónde se está corriendo… es tu responsabilidad garantizar que lo que en tu computadora funciona también lo haga en Producción.
Un modo muy simple de dar esa garantía es usar una computadora exactamente igual en producción y en desarrollo.
¡Alto! ¡No corras todavía! Eso no significa que tengas que comprar una computadora diferente para cada proyecto que encares… afortunadamente tenemos una mejor solución: la virtualización.
De qué se trata la virtualización
La virtualización es una técnica que permite emular un entorno de computación, es decir, correr un sistema dentro de otro.
Las principales ventajas de utilizar entornos virtualizados son:
No requieres comprar y montar hardware especial.
Si algo sale mal se puede tirar todo a la basura y empezar de nuevo sin mayores costos.
Al no instalar nada en la computadora física es muy fácil mantener la independencia entre proyectos.
El último punto es probablemente el más importante… si trabajaste en paralelo en varios proyectos de software sabrás de los dolores de cabeza que trae cuando un proyecto usa la versión 1.x de un lenguaje y otro la 2.x… al virtualizar eliminas el problema de tajo.
Qué herramientas existen
Existen diversas herramientas que permiten generar entornos virtuales, entre ellas:
VirtualBox
VMWare
Qemu
Todos estos son motores de virtualización, aplicaciones que puedes instalar en tu computadora y, a través de ellos, crear hardware virtual al cual puedes instalarle un sistema operativo diferente y cuantas aplicaciones quieras, sin que ello interceda con tu día a día.
Otra herramienta que está muy de moda estos días y que, precisamente por ello, no quiero dejar de mencionar es Docker.
A los fines prácticos no hay mucha diferencia entre usar Docker o alguna de las otras que te menciono, sin embargo, internamente son muy diferentes.
Qué herramientas usaremos
En este curso utilizaremos VirtualBox (es gratis y puedes descargarlo de aquí) pero, para hacernos la vida un poco más simple agregaremos un par de herramientas que se montan sobre esta: Vagrant y Homestead.
Vagrant es una herramienta de automatización de máquinas virtuales.
De lo que se trata es de un script capaz de leer una especificación y crear una máquina virtual acorde y, una vez creada, mantenerla actualizada.
Como se trata de una herramienta de línea de comandos es muy buena para utilizarse dentro de scripts.
Vagrant también es gratuito y puedes descargarlo de aquí.
Y por último usaremos una herramienta que se monta sobre Vagrant para hacer algunas cosas todavía más fáciles (así de vago soy): Homestead.
Homestead es otra herramienta de línea de comandos que permite automatizar algunas tareas típicas del montaje de entornos virtuales para desarrollo web (descargar, instalar y configurar un servidor web por ejemplo).
¡Ya puedes armar tu entorno de trabajo!
Preparando nuestro entorno
Lo primero que haremos será inicializar el entorno Homestead, para ello ejecuta el siguiente comando:
vagrant box add laravel/homestead
Este comando descargará la máquina virtual base sobre la que armarás la tuya (en realidad será Homestead quien se encargue de esto, no te preocupes).
Cuando haya finalizado este comando será hora de instalar Homestead. Para ello ejecuta:
En el mismo directorio ejecuta docker-compose up en tu terminal y vete a localhost:5000. Tambień tienes phpmyadmin en localhost:8080
Solo como apoyo a cualquiera que le este dando problemas al utilizar el script, a pasarlo a su computadora revisen bien que este bien el espacio de los ":" sino generar un problema de sintaxis con el .yaml :)
Me he encontrado con este problema:
Check your Homestead.yaml (or Homestead.json) file, the path to your private key does not exist.
SOLUCIÓN:
Use git bash para solucionarlo:
Copiar y pegar el siguiente comando, el mail puede ser suyo
Les va a salir algo como esto, en mi caso di enter a todo !!!solo para realizar el curso!!!.
Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa): (ENTER)
Enter passphrase (empty for no passphrase): (ENTER)
Enter same passphrase again:(ENTER)
Leer si eres nuevo
No lo menciona pero estos pasos que hizo solo funcionan si estás en Linux, específicamente en un entorno basado en Debian, como ubuntu.
Si eres usuario de Windows te recomiendo mucho más utilizar la herramienta Laragon.
Si eres un usuario intermedio, hay mejores herramientas que homestead en la actualidad, por ejemplo Docker.
Si tienes complicaciones con la instalación te recomiendo mil veces más optar por las opciones que menciono
Yo en lo personal no planeo virtualizar nada, prefiero desarrollar usando mi propia máquina, sin contar que la virtualización te consume recursos... espero que esto no sea un hueco para seguir el curso
Saludos, me gustaria saber como te fue, por que tampoco me quiero poner a virtualizar.
Bien dentro de lo que cabe jaja, puedes hacerlo sin problemas mientras tengas la versión adecuada de PHP, con la 7 basta
Queremos Docker de una. La tendencia de VM esta bajando mucho gracias a Docker. ¿Se podra actualizar el curso con Docker?
Hola he creado un repositorio en github montado con docker (docker-compose) que tiene los requisitos para arrancar el proyecto del curso espero que pueda ayudar https://github.com/JesusCH92/symfony-dockerizado.git
Hola a todos!, he creado un repositorio en GitHub con todo lo neceseario para arrancar el proyecto con Docker.
Este repositorio tiene los servicios de: PHP(Symfony) + Nginx + MySQL, el esqueleto (Symfony) del proyecto ya está montado además la conexión a la BBDD también, espero que pueda ayudarles:
https://github.com/JesusCH92/symfony-dockerizado.git
Héroe!!
Nos dice que pongamos 192.168.10.10 homestead.test en el archivo host pero no nos explica porque se hace eso.
Me agrada montar entornos virtuales para poder practicar y combinar todo lo aprendido. En caso de romperla, puedo crear otra sin romper mi máquina principal.
Siento que usar temas de entornos virtuales como vagran y virtualbox le quitan la emocion de los errores de depencias y sobre todo de desarmar la pc para saber el error, por que luego llevarlo al servidor se pone complejo por que ahi no funciona tu super comando genial xd, aunque docker tambien te libra de eso.
Vagrant y Homestead desde que los conoci en Platzi, ha sido lo mejor para montar todos los proyectos en mi equipo. Se puede hasta usar Homestead para diferentes versiones de PHP sin problema.
Salvo que seas Chuck Norris que va directo a producción 🤣🤣🤣
Todo listo!
Hola a todos, si la aplicación que vamos a desarrollar, la queremos montar en AWS, las maquinas virtuales que simulan el entorno de producción, me sirven para cualquier servidor de producción???. Gracias.
Me encanta el carisma de Mauro, Jajajaja...
Pero creo que usaré Docker por experimentar, tome el curso de docker para el de django avanzado y que decisión más inteligente porque no lo dejo de usar ahora.
Tienes el enlace de la clase donde lo enseñan? porfa... o es todo el curso donde lo explican?
Hola @alejaksot yo estoy preparan un tutorial para el curso pronto lo terminaré cuando lo tenga te envió el link
Tengo ubuntu 16.04, me toco forzar para que instalara php7,4 y vagran 2. Pero por ahora va todo funcionando bien.
Hola buen día, estoy atorado agregando esto 192.168.10.10 homestead.test en el archivo hosts que esta en la ruta C:\Windows\System32\drivers\etc. Intento editarlo pero no me funciona me dice que no tengo permisos en Windows para editar o cambiar el archivo ¿Cómo puedo agregar 192.168.10.10 homestead.tes al archivo host?
Al abrir cualquier editor tienes que ejecutarlo como administrador y en ese momento abrir el fichero "etc" que se encuentra en la ruta "C:\Windows\System32\drivers" y luego guardar.
Por ahora me saltaré esta parte, no tengo planeado instalar una máquina virtual en mi PC. Espero no tener muchos problemas.