en vagrant

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 terminal
sudo update-alternatives --config php

Comando para poder editar en una carpeta
sudo chown -R $USER:$USER www

Para instalar wget
brew install wget

Escriba un comentario

Comentario