Contenido
Inicio
Primero vamos a su página https://www.vagrantup.com/ para ver todas las opciones
Instalar vagrant
Luego pueden ir a sus descargar https://www.vagrantup.com/downloads e instalar por el comando
brew install vagrant
En caso no tener brew, puede instalarlo desde https://brew.sh/index_es
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Siguiendo la documentación en https://learn.hashicorp.com/collections/vagrant/getting-started,
Instalando proveedor : VirtualBox
Instalamos un proveedor, para este caso usaremos virtualbox desde https://www.virtualbox.org/wiki/Downloads
Descargamos el paquete para mac, click en osx-host

y seguimos los pasos

Cuando solicite configuración de seguridad , hacer click donde se ubica el botón “reiniciar” y hacer check en Oracle

Luego reiniciar la mac.
Instalando un box del catálogo
Al volver, para iniciar una maquina virtual con el comando
vagrant init hashicorp/bionic64
Donde “hashicorp/bionic64” lo puedes encontrar en este catálogo https://app.vagrantup.com/boxes/search , y escoger uno según el proyecto

Para mi caso quiero probar una maquina preparada para laravel, escojo el segundo de la lista

Esto crea archivos ocultos, para verlos en mac, puede lanzar el comando ls -a, o estando en el explorador de archivos finder, presionar Comand+shif+punto
Por eso creamos y nos movemos a una carpeta temporal
$ mkdir tmp $ cd tmp
$ vagrant init laravel/homestead A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
podemos ver que creo un archivo VagrantFile

Iniciando la instancia
Para iniciar la instancia, lanzamos el comando
vagrant up
En caso halla problemas con root, en mac se debe activar el usuario root, siguiendo el tutorial de apple https://support.apple.com/es-es/HT204012
Para acceder por terminal a la maquina virtual
vagrant ssh
Ahora preparemos una index.html, no abordaremos un proyecto laravel seria mas pasos pero la configuración es similar
Por defecto la carpeta sincronizad “vagrant”a es la misma donde esta el archivo VagrantFile, para probarlo, podemos movernos a la carpeta vagrant y crear un archivo
vagrant@vagrant:~$ cd /vagrant vagrant@vagrant:/vagrant$ touch test_file vagrant@vagrant:/vagrant$

Compartiendo carpeta entre host y guest
Normalmente prefiero tener los archivos del proyecto en otra carpeta, para que se monte una carpeta referenciando a la carpeta de trabajo, podemos usar synced folders https://www.vagrantup.com/docs/synced-folders/basic_usage
Para eso editamos el archivo VagrantFile y agregamos
config.vm.synced_folder "/Documents/Projects/TestVagrant/public", "/www_test"
Reiniciamos con vagrant reload y accedemos vagrant ssh, y probamos ir a la carpeta www_test y creamos un archivo


y aparece, ahi creo el archivo de ejemplo, un html simple copiado de aquí https://getbootstrap.com/docs/5.1/getting-started/introduction/
Iniciando servicio web por defecto
ahora configuraremos el servicio de apache
Probamos si internamente responde , en caso de que no, reiniciamos el servicio de apache
vagrant@vagrant:/www_test$ wget 127.0.0.1 --2021-10-10 18:58:57-- http://127.0.0.1/ Connecting to 127.0.0.1:80... failed: Connection refused. vagrant@vagrant:/www_test$ sudo service apache2 restart vagrant@vagrant:/www_test$ sudo service apache2 restart vagrant@vagrant:/www_test$ wget 127.0.0.1 --2021-10-10 18:59:10-- http://127.0.0.1/ Connecting to 127.0.0.1:80... connected. HTTP request sent, awaiting response... 200 OK Length: 10918 (11K) [text/html] Saving to: ‘index.html’ index.html 100%[===========================>] 10.66K --.-KB/s in 0s 2021-10-10 18:59:10 (26.2 MB/s) - ‘index.html’ saved [10918/10918]
el index por defecto esta ubicado en /var/www/html/index.html
Desde la maquina real, aun no se puede acceder

Configurando una red privada para un dominio personalizado
Ahora configuraremos una red privada, es decir al poner misitio.test cargue la pagina ( hay mas formas https://learn.hashicorp.com/tutorials/vagrant/getting-started-networking?in=vagrant/getting-started )
Salimos de la maquina virtual y agregamos la linea de red privada en el archivo Vagrant
# Create a private network, which allows host-only access to the machine # using a specific IP. config.vm.network "private_network", ip: "192.168.33.10"
Luego en la maquina local, vamos al hosts, y agregamos la linea para indicar el dominio y la ip
% sudo vi /etc/hosts # agregamso esta linea 192.168.33.10 misitio.test
Luego recargamos la configuracion de vagrant con
% vagrant reload
Ahora accediendo a misitio.test o a la ip


Nota: si no accede probar reiniciar el servicio de apache sudo service apache2 restart
Configurando un sitio web en una carpeta especifica
Ahora para que trabaje con los archivos de mi proyecto, puedo borrar los archivos en /../html y sincronizarlo direccionando a esa ruta, o registrar otro dominio, como lo segundo es lo que hare mas seguido para agregar mas sitios en la maquina virtual, hare eso.
Vamos al directorio de los sitios y creamos un nuevo archivo de configuración
vagrant@vagrant:~$ cd /etc/apache2/sites-available/ vagrant@vagrant:/etc/apache2/sites-available$ sudo vi miproyecto_test.conf
Configuramos para el nuevo sitio miproyecto.test, tomar en cuenta los directorios que debemos crear en la maquina virtual
<VirtualHost *:80> ServerAdmin webmaster@miproyecto.test ServerName miproyecto.test ServerAlias miproyecto.test DocumentRoot /var/www/public/miproyecto/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/public/miproyecto"> Options Indexes FollowSymLinks AllowOverride all Require all granted </Directory> </VirtualHost> presionar ESC, escribir :wq
Una ves editado lo activamos
vagrant@vagrant:/etc/apache2/sites-available$ sudo a2ensite miproyecto_test.conf Enabling site miproyecto_test. To activate the new configuration, you need to run: systemctl reload apache2 vagrant@vagrant:/etc/apache2/sites-available$ sudo systemctl reload apache2 vagrant@vagrant:/etc/apache2/sites-available$ sudo service apache2 restart
Creamos el directorio
vagrant@vagrant:/etc/apache2/sites-available$ sudo mkdir /var/www/public/ vagrant@vagrant:/etc/apache2/sites-available$ sudo mkdir /var/www/public/miproyecto
Salimos y editamos el archivo VagrantFile, para cambiar la carpeta a sincronizar
config.vm.synced_folder "/Users/jmac/Documents/Projects/TestVagrant/public", "/var/www/public/miproyecto"
y recargamos con el comando vagrant reload
Ahora agregamos el dominio en /etc/hosts
192.168.33.10 miproyecto.test
Ahora ingresamos a la dirección miproyecto.test

Nota: en un archivo .conf puede tener varios tag vitualhost
Borrar una instancia
Por ultimo en algún momento querremos borrarlo para no ocupar disco ni ram, para borra una maquina pueden seguir los pasos en https://learn.hashicorp.com/tutorials/vagrant/getting-started-teardown?in=vagrant/getting-started
% vagrant destroy default: Are you sure you want to destroy the 'default' VM? [y/N] y ==> default: Destroying VM and associated drives..
Referencias:
Homebrew , gestor de paquetes para mac
https://brew.sh/index_es
Documentación Get Started de Vagrant
https://learn.hashicorp.com/collections/vagrant/getting-started
Catálogo de boxes para vagrant
https://app.vagrantup.com/boxes/search
Soporte mac para activar el usuario root
https://support.apple.com/es-es/HT204012
Borra una instancia
https://learn.hashicorp.com/tutorials/vagrant/getting-started-teardown?in=vagrant/getting-started
Opciones de sincronización de carpetas
https://www.vagrantup.com/docs/synced-folders/basic_usage
Para habilitar mas de un sitio
https://peshmerge.io/adding-multiple-domains-to-vagrant-using-apache/
Crear un entorno basico
https://www.youtube.com/watch?v=DxA-YXbKfiY
Instalar Apache en Linux
https://www.taniarascia.com/how-to-install-apache-php-7-1-and-mysql-on-ubuntu-with-vagrant/
Para escoger diferentes versiones de php para la terminalsudo update-alternatives --config php
Comando para poder editar en una carpeta
sudo chown -R $USER:$USER www
Para instalar wget
brew install wget