Ir al contenido principal

Instalación de Laravel Homestead (III)

 

En este tercer artículo de la serie explicaré cómo hay que configurar el fichero Homestead.yaml para poder usar convenientemente nuestra máquina virtual Vagrant.
Toda la configuración la haremos sobre ese fichero estableciendo directivas para adecuarlo a nuestras necesidades. 

Configurando Homestead

La configuración de Homestead se hace en el fichero Homestead.yaml. Éste es un conjunto de directivas que luego utilizará Vagrant para crear y arrancar la máquina virtual. La principal ventaja de este método es que con sólo compartir el fichero Homestead.yaml con el resto de integrantes del proyecto todos harán las pruebas usando una misma configuración.
Las directivas contenidas en este fichero son de la forma:
comando: valor

Especificando la IP

La primera directiva de este fichero es en la que se especifica la dirección IP que va a tener nuestra máquina virtual. Generalmente nos valdrá el valor por defecto que se asigna. Pero si no es el caso, se puede especificar la que deseen. La sintaxis de esta directiva es:
ip: 192.168.10.10

Asignando la memoria

La siguiente directiva nos sirve para indicar la memoria RAM que se asignará a  la máquina virtual. Por defecto el valor es de 2048 MB. Pero se puede reservar hasta un máximo de la mitad de la memoria RAM física que tenga el ordenador. Su sintaxis es:

memory: 2048

Reservando un número de CPUs

Prácticamente todos los ordenadores modernos tienen varios núcleos que actúan como CPUs individuales en la máquina virtual, son las llamadas CPUs virtuales (vCPU). Con esta directiva se reserva un número determinado de vCPUs para la máquina virtual. Si se quiere saber el número máximo de vCPUs que se pueden asignar a una máquina virtual se tiene que multiplicar el número de núcleos por los hilos que tenga el procesador físico. Así un procesador de 4 núcleos y 8 hilos puede disponer de un máximo de 32 vCPUs. No es recomendable asignar a una máquina virtual más de la mitad de las vCPUs disponibles pues se corre el riesgo de que el ordenador se bloquee. La sintaxis de esta directiva es:

cpus: 2

Estableciendo el proveedor

Lo que hay que hacer a continuación es establecer con qué hypervisor vamos a trabajar. Por defecto Homestead se configura para usar VirtualBox. Es lo que se llama el proveedor. Como nombramos en artículos anteriores se pueden utilizar varios hypervisores. Como por ejemplo: virtualbox, vmware, parallel... La sintaxis de esta directiva es:
provider: virtualbox

Definiendo las carpetas compartidas

La propiedad folders del fichero Homestead.yaml lista todas las carpetas que se desean compartir con tu entorno Homestead. Cuando los ficheros de esas carpetas cambian, se sincronizan entre la máquina local y el entorno virtual  de Homestead. Puedes configurar tantas carpetas compartidas como sea necesario:

folders:

        - map: ~/code/proyecto1

            to: /home/vagrant/proyecto1

Siempre se puede mapear aplicaciones individuales a sus propias carpetas en vez de mapear un solo gran directorio que contenga todas las aplicaciones.

Cuando se mapea una carpeta, la máquina virtual deber seguir el rastro de todas las operaciones de entrada/salida para cada fichero en la carpeta. Puedes notar que el rendimiento se reduce si tienes un gran número de ficheros en una carpeta:

folders:

        - map: ~/code/proyecto1

            to: /home/vagrant/proyecto1 

        - map: ~/code/proyecto2

            to: /home/vagrant/proyecto2

Nunca se debe montar el directorio . (el directorio actual) cuando se usa Homestead. Esto causaría que Vagrant no mapeara la carpeta actual a /vagrant y provocaría resultados inesperados al crear la máquina virtual.

Para habilitar NFS, se puede añadir la opción type a la definición de la carpeta:

folders:

        - map: ~/code/proyecto1

            to: /home/vagrant/proyecto1 

            type: "nfs"

Incluso se pueden pasar cualquiera de las opciones soportadas por las carpetas sincronizadas de Vagrant listándolas bajo la palabra clave options:


folders:

        - map: ~/code/proyecto1

            to: /home/vagrant/proyecto1 

            type: "rsync"

                  options: 

                      rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
                      rsync__exclude: ["node_modules"]

Configurando los sitios web

Por defecto, Homestead usa como servidor web Nginx. Si no lo conoces, no hay problemas. La propiedad sites del fichero Homestead te permite fácilmente mapear un dominio a una carpeta en tu entorno Homestead. Una configuración simpre del sitio se incluye en el Homestead.yaml. De nuevo, puedes añadir tantos sitios como sea necesario. Homestead puede servir como un entorno virtualizado conveniente para cada aplicación de Laravel en la que esté trabajando:

sites:

        - map: homestead.test

            to: /home/vagrant/proyecto1/public

Si se cambia la propiedad sites después de provisionar la máquina virtual Homestead, se debe ejecutar el comando vagrant reload --provision en la terminal para actualizar la configuración Nginx de la máquna virtual.

Homestead soporta varios tipos de sitios que te permiten correr fácilmente proyectos que no están basados en Laravel. Por ejemplo, se puede añadir una aplicación Statamic a Homestead usando el tipo de sitio statamic:

sites:

        - map: statamic.test

             to: /home/vagrant/statamic-proyecto/web

            type: "statamic"

Los tipos de sitio disponibles son: apache, apigility, expressive, laravel (por defecto), proxy, silverstripe, statamic, symfony2, symfony4 y zf.

Una caja Homestead tiene soporte para varias versiones de PHP. Éstas son: "5.6", "7.0", "7.1", "7.2", "7.3", "7.4" "8.0", Por defecto se queda activada la versión más reciente. En este momento es PHP 8.0. Si se quiere especificar una versión concreta con la que se quiera trabajar hay que usar la palabra clave php:

sites:

        - map: homestead_php.test

            to:  /home/vagrant/proyecto_php/public

            php: "7.2"

Resolución del Hostname

Homestead publica nombres de host utilizando mDNS para la resolución automática de host. Si configura el nombre de host: homestead en su archivo Homestead.yaml, el host estará disponible en homestead.local. Las distribuciones de escritorio Linux incluyen compatibilidad con mDNS de forma predeterminada.

La directiva que se usa para especificar el nombre de la máquina virtual es:
hostname: homestead

Usar nombres de host automáticos funciona mejor para instalaciones por proyecto de Homestead. Si aloja varios sitios en una sola instancia de Homestead, puede agregar los dominios de sus sitios web al archivo de hosts de su máquina. El archivo de hosts redirigirá las solicitudes de sus sitios de Homestead a su máquina virtual de Homestead. En Linux este archivo se encuentra en /etc/hosts. Las líneas que se añadan a este fichero deben parecerse a esta:

192.168.10.10    homestead.test

Especificando las Bases de Datos

Una base de datos de Homestead se configura por defecto para MySQL y PostgreSQL lista para usar. Para conectarse a la base de datos desde el cliente de base de datos de su máquina física, debe utilizarse la IP 127.0.0.1 y el puerto 33060 (MySQL) o 54320 (PosstgreSQL). El nombre de usuario y contraseña para ambas bases de datos es homestead/secret

Solo se pueden usar estos puertos no estándares cuando se conecta a las bases de datos de la máquina anfitriona. Se debe usar los puertos por defecto 3306 y 5432 en el fichero de configuración de la aplicación Laravel dado que se estará ejecutando dentro de la máquina virtual.

Se puede especificar otro nombre para la base de datos usando la palabra clave databases
databases:

        - proyecto1

Ejemplo de fichero Homestead.yaml

ip: 192.168.10.10

memory: 2048

cpus: 1

provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:

    - ~/.ssh/id_rsa

folders:

    - map: ~/code/proyecto1

        to: /home/vagrant/code/proyecto1

sites:

    - map: proyecto1.test

        to: /home/vagrant/code/proyecto1

        type: "apache"

        php: "7.2"


databases:

    - proyecto1

name: proyecto1

hostname: proyecto1


Aún nos queda una última entrada en la ya veremos como funcionaría todo esto. 

Puedes continuar con el siguiente artículo de la serie siguiendo este enlace: Instalación de Laravel Homestead (IV)


 

Comentarios

Entradas populares de este blog

Añadir disco en caliente a un Ubuntu virtualizado

  En este artículo vamos a explicar cómo aumentar un volumen de discos en una máquina virtual. Pongamos por caso que tenemos un servidor que se nos ha quedado corto de espacio en disco y que no podemos parar. La solución es añadir un nuevo disco virtual a nuestra máquina y, con ese espacio añadido, extender el volumen de discos.  En principio, este es un proceso en el que no hay pérdida de datos. Sin embargo, es conveniente que exista una copia de seguridad antes de llevarlo a cabo como precaución. He de decir que yo lo he hecho en un par de ocasiones y no ha habido problemas con la máquina virtual ni con los datos. De hecho, los usuarios ni se enteraron de que se amplió el espacio en disco. Consideraciones iniciales En primer lugar, este es un proceso que sólo se puede llevar a cabo en una máquina virtual. Para añadir un disco nuevo en una máquina física hay que pararla y, por lo tanto, no se puede añadir en caliente. Cierto es que la parte de extender el volumen sí que se realiza igu

Atom ha muerto, viva Zed

El día 8 de junio de 2022, Microsoft anunció que a partir del día 31 de diciembre de este mismo año dejaría de dar soporte para el editor de código Atom .  ¿En qué nos afecta esto a nosotros? Bueno, pues si me han seguido en artículos anteriores saben que tras una comparativa de varios IDEs había decidido utilizar Atom para los ejemplos que tuviera que hacer en este blog. Sobre todo los artículos que prepararé para ilustrar el uso de Laravel . Amén de los miles de programadores que actualmente usan Atom  en sus proyectos, claro. Pero, ¿qué editor de código abierto podremos utilizar para sustituir a Atom ? En el mismo comunicado, Microsoft explicaba que el abandono del proyecto Atom  se debía a que querían volcar todos sus esfuerzos en el Visual Studio Code y, por supuesto, recomendó a los usuarios de Atom la utilización del mismo como alternativa natural. No quiero entrar en las bondades o defectos del Visual Studio Code  si quieres elegirlo como tu IDE para desarrollo predeterm

Zed: ahora un editor de código de código abierto

  Zed: ahora un editor de código de código abierto Introducción Como ya les comenté en un artículo anterior  Atom ha muerto, viva ZED , Microsoft dejó de dar soporte para el editor de código Atom en el año 2022 en beneficio del Visual Studio Code . En aquel artículo les comentaba que para mi el sucesor de Atom era Zed pues era un editor que se estaba creando por el mismo grupo de trabajo que creó el Atom . Además de que parecía que iba a seguir con la misma filosofía con la que nació  Atom . El editor Zed, una descripción de sus características Zed es un editor de código desarrollado en Rust que, como deberíamos saber, es un lenguaje de programación de sistemas que se enfoca en la seguridad, el rendimiento y la concurrencia. Pues, como decíamos, Zed acaba de dar el salto a ser de código abierto bajo la licencia GPL v3 . Este cambio no solo representa una nueva era para Zed , sino que también nos dirige a un nuevo mundo de colaboración y desarrollo en el ámbito de la programación.