• Introducción
  • Instalación y configuración

    • Primeros pasos
    • Configuración de Homestead
    • Lanzamiento de The Vagrant Box
    • Instalación por proyecto
    • Instalación de funciones opcionales
    • Alias
  • Uso diario

    • Acceso a Homestead a nivel mundial
    • Conexión a través de SSH
    • Conexión a bases de datos
    • Copias de seguridad de la base de datos
    • Instantáneas de la base de datos
    • Agregar sitios adicionales
    • Variables de entorno
    • SSL comodín
    • Configuración de horarios Cron
    • Configurar Mailhog
    • Configurar Minio
    • Puertos
    • Compartiendo su entorno
    • Varias versiones de PHP
    • Servidores web
    • Correo
    • Anochecer de Laravel
  • Depuración y creación de perfiles

    • Depurar solicitudes web con Xdebug
    • Depuración de aplicaciones CLI
    • Aplicaciones de creación de perfiles con Blackfire
  • Interfaces de red
  • Ampliación de Homestead
  • Actualización de Homestead
  • Configuración específica del proveedor

    • VirtualBox

Introducción

Laravel se esfuerza por hacer que toda la experiencia de desarrollo de PHP sea placentera, incluido su entorno de desarrollo local. Vagabundo proporciona una forma simple y elegante de administrar y aprovisionar máquinas virtuales.

Laravel Homestead es una caja Vagrant oficial preempaquetada que le proporciona un entorno de desarrollo maravilloso sin necesidad de instalar PHP, un servidor web y cualquier otro software de servidor en su máquina local. ¡No más preocupaciones por estropear su sistema operativo! Las cajas Vagrant son completamente desechables. Si algo sale mal, puedes destruir y volver a crear la caja en minutos.

Homestead se ejecuta en cualquier sistema Windows, Mac o Linux, e incluye Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node y todas las demás ventajas que necesita para desarrollar aplicaciones increíbles de Laravel.

Si está utilizando Windows, es posible que deba habilitar la virtualización de hardware (VT-x). Por lo general, se puede habilitar a través de su BIOS. Si está utilizando Hyper-V en un sistema UEFI, es posible que también deba deshabilitar Hyper-V para acceder a VT-x.

Software incluido

  • Ubuntu 18.04
  • Git
  • PHP 7.4
  • PHP 7.3
  • PHP 7.2
  • PHP 7.1
  • PHP 7.0
  • PHP 5.6
  • Nginx
  • MySQL
  • lmm para instantáneas de bases de datos MySQL o MariaDB
  • Sqlite3
  • PostgreSQL (9.6, 10, 11, 12)
  • Compositor
  • Nodo (con hilo, glorieta, gruñido y trago)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • avahi
  • ngrok
  • Xdebug
  • XHProf / Tideways / XHGui
  • wp-cli

Software opcional

  • apache
  • Fuego negro
  • Casandra
  • Chronograf
  • CouchDB
  • Marco de cristal y suerte
  • Estibador
  • Elasticsearch
  • Gearman
  • Ir
  • Grafana
  • InfluxDB
  • MariaDB
  • MinIO
  • MongoDB
  • MySQL 8
  • Neo4j
  • Oh mi Zsh
  • Abrir Resty
  • PM2
  • Pitón
  • RabbitMQ
  • Solr
  • Utilidades Webdriver y Laravel Dusk

Instalación y configuración

Primeros pasos

Antes de iniciar su entorno de Homestead, debe instalar VirtualBox 6.x, VMWare, Paralelas o Hyper-V al igual que Vagabundo. Todos estos paquetes de software proporcionan instaladores visuales fáciles de usar para todos los sistemas operativos populares.

Para utilizar el proveedor de VMware, deberá adquirir VMware Fusion / Workstation y el Complemento de VMware Vagrant. Aunque no es gratuito, VMware puede proporcionar un rendimiento de carpeta compartida más rápido desde el primer momento.

Para utilizar el proveedor de Parallels, deberá instalar Complemento de Parallels Vagrant. Es gratis.

Porque Limitaciones vagabundas, el proveedor de Hyper-V ignora todas las configuraciones de red.

Instalación de The Homestead Vagrant Box

Una vez que se hayan instalado VirtualBox / VMware y Vagrant, debe agregar el laravel/homestead box a su instalación de Vagrant usando el siguiente comando en su terminal. La descarga de la caja tomará unos minutos, dependiendo de la velocidad de su conexión a Internet:

vagrant box add laravel/homestead

Si este comando falla, asegúrese de que su instalación de Vagrant esté actualizada.

Homestead emite periódicamente casillas “alfa” https://foroayuda.es/ “beta” para realizar pruebas, que pueden interferir con la vagrant box add mando. Si tiene problemas para ejecutar vagrant box add, puede ejecutar el vagrant up y se descargará la casilla correcta cuando Vagrant intente iniciar la máquina virtual.

Instalación de Homestead

Puede instalar Homestead clonando el repositorio en su máquina host. Considere la posibilidad de clonar el repositorio en un Homestead carpeta dentro de su directorio “home”, ya que el cuadro de Homestead servirá como anfitrión para todos sus proyectos de Laravel:

git clone https://github.com/laravel/homestead.git ~/Homestead

Debería consultar una versión etiquetada de Homestead desde el master Es posible que la rama no siempre sea estable. Puede encontrar la última versión estable en Página de lanzamiento de GitHub. Alternativamente, puede consultar el release rama que siempre contiene la última versión estable:

cd ~/Homestead

git checkout release

Una vez que haya clonado el repositorio de Homestead, ejecute el bash init.sh comando desde el directorio de Homestead para crear el Homestead.yaml archivo de configuración. los Homestead.yaml El archivo se colocará en el directorio de Homestead:

// Mac / Linux...
bash init.sh

// Windows...
init.bat

Configuración de Homestead

Configuración de su proveedor

los provider clave en su Homestead.yaml El archivo indica qué proveedor de Vagrant se debe utilizar: virtualbox, vmware_fusion, vmware_workstation, parallels o hyperv. Puede configurar esto para el proveedor que prefiera:

provider: virtualbox

Configurar carpetas compartidas

los folders propiedad de la Homestead.yaml file enumera todas las carpetas que desea compartir con su entorno de Homestead. A medida que se modifiquen los archivos dentro de estas carpetas, se mantendrán sincronizados entre su máquina local y el entorno de Homestead. Puede configurar tantas carpetas compartidas como sea necesario:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1

Los usuarios de Windows no deben utilizar ~/ sintaxis de ruta y, en su lugar, debe usar la ruta completa a su proyecto, como C:UsersuserCodeproject1.

Siempre debe asignar proyectos individuales a su propia asignación de carpetas en lugar de asignar toda su ~/code carpeta. Cuando asigna una carpeta, la máquina virtual debe realizar un seguimiento de todas las E / S del disco para cada archivo en la carpeta. Esto conduce a problemas de rendimiento si tiene una gran cantidad de archivos en una carpeta.

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1

    - map: ~/code/project2
      to: /home/vagrant/project2

Nunca deberías montar . (el directorio actual) al usar Homestead. Esto hace que Vagrant no asigne la carpeta actual a /vagrant y romperá las funciones opcionales y provocará resultados inesperados durante el aprovisionamiento.

Para permitir NFS, solo necesita agregar una bandera simple a la configuración de su carpeta sincronizada:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "nfs"

Cuando utilice NFS en Windows, debería considerar instalar el vagabundo-winnfsd enchufar. Este complemento mantendrá los permisos de usuario / grupo correctos para archivos y directorios dentro del cuadro de Homestead.

También puede pasar cualquier opción admitida por Vagrant’s Carpetas sincronizadas enumerándolos bajo el options llave:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

Configuración de sitios de Nginx

¿No estás familiarizado con Nginx? No hay problema. los sites La propiedad le permite asignar fácilmente un “dominio” a una carpeta en su entorno de Homestead. Se incluye una configuración de sitio de muestra en el Homestead.yaml expediente. Nuevamente, puede agregar tantos sitios a su entorno de Homestead como sea necesario. Homestead puede servir como un entorno virtualizado conveniente para cada proyecto de Laravel en el que esté trabajando:

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public

Si cambia el sites propiedad después de aprovisionar la caja de Homestead, debe volver a ejecutar vagrant reload --provision para actualizar la configuración de Nginx en la máquina virtual.

Los scripts de Homestead están diseñados para ser lo más idempotentes posible. Sin embargo, si tiene problemas durante el aprovisionamiento, debe destruir y reconstruir la máquina a través de vagrant destroy && vagrant up.

Habilitar / deshabilitar servicios

Homestead inicia varios servicios de forma predeterminada; sin embargo, puede personalizar qué servicios están habilitados o deshabilitados durante el aprovisionamiento. Por ejemplo, puede habilitar PostgreSQL y deshabilitar MySQL:

services:
    - enabled:
        - "[email protected]"
    - disabled:
        - "mysql"

Los servicios especificados se iniciarán o detendrán según su orden en el enabled y disabled directivas.

Resolución de nombre de host

Homestead publica los nombres de host mDNS para la resolución automática del host. Si pones hostname: homestead en tus Homestead.yaml archivo, el anfitrión estará disponible en homestead.local. Las distribuciones de escritorio de MacOS, iOS y Linux incluyen mDNS soporte por defecto. Windows requiere instalación Servicios de impresión Bonjour para Windows.

El uso de 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 hosts archivo en su máquina. los hosts El archivo redirigirá las solicitudes de sus sitios de Homestead a su máquina de Homestead. En Mac y Linux, este archivo se encuentra en /etc/hosts. En Windows, se encuentra en C:WindowsSystem32driversetchosts. Las líneas que agregue a este archivo tendrán el siguiente aspecto:

192.168.10.10  homestead.test

Asegúrese de que la dirección IP que aparece en la lista sea la configurada en su Homestead.yaml expediente. Una vez que haya agregado el dominio a su hosts y lanzó el cuadro Vagrant, podrá acceder al sitio a través de su navegador web:

http://homestead.test

Lanzamiento de The Vagrant Box

Una vez que haya editado el Homestead.yaml a tu gusto, ejecuta el vagrant up comando desde su directorio de Homestead. Vagrant arrancará la máquina virtual y configurará automáticamente sus carpetas compartidas y sitios Nginx.

Para destruir la máquina, puede utilizar el vagrant destroy --force mando.

Instalación por proyecto

En lugar de instalar Homestead a nivel mundial y compartir la misma caja de Homestead en todos sus proyectos, puede configurar una instancia de Homestead para cada proyecto que administra. Instalar Homestead por proyecto puede ser beneficioso si desea enviar un Vagrantfile con su proyecto, permitiendo que otras personas que trabajan en el proyecto vagrant up.

Para instalar Homestead directamente en su proyecto, solicítelo usando Composer:

composer require laravel/homestead --dev

Una vez que se haya instalado Homestead, use el make comando para generar el Vagrantfile y Homestead.yaml archivo en la raíz de su proyecto. los make comando configurará automáticamente el sites y folders directivas en el Homestead.yaml expediente.

Mac / Linux:

php vendor/bin/homestead make

Ventanas:

vendor\bin\homestead make

A continuación, ejecute el vagrant up comando en su terminal y acceda a su proyecto en http://homestead.test en su navegador. Recuerde, aún necesitará agregar un /etc/hosts entrada de archivo para homestead.test o el dominio de su elección si no está utilizando la resolución automática de nombres de host.

Instalación de funciones opcionales

El software opcional se instala mediante la configuración de “características” en su archivo de configuración de Homestead. La mayoría de las funciones se pueden habilitar o deshabilitar con un valor booleano, mientras que algunas características permiten múltiples opciones de configuración:

features:
    - blackfire:
        server_id: "server_id"
        server_token: "server_value"
        client_id: "client_id"
        client_token: "client_value"
    - cassandra: true
    - chronograf: true
    - couchdb: true
    - crystal: true
    - docker: true
    - elasticsearch:
        version: 7.9.0
    - gearman: true
    - golang: true
    - grafana: true
    - influxdb: true
    - mariadb: true
    - minio: true
    - mongodb: true
    - mysql8: true
    - neo4j: true
    - ohmyzsh: true
    - openresty: true
    - pm2: true
    - python: true
    - rabbitmq: true
    - solr: true
    - webdriver: true

MariaDB

Habilitar MariaDB eliminará MySQL e instalará MariaDB. MariaDB sirve como un reemplazo directo para MySQL, por lo que aún debe usar el mysql controlador de base de datos en la configuración de la base de datos de su aplicación.

MongoDB

La instalación predeterminada de MongoDB establecerá el nombre de usuario de la base de datos en homestead y la contraseña correspondiente a secret.

Elasticsearch

Puede especificar una versión compatible de Elasticsearch, que puede ser una versión principal o un número de versión exacto (major.minor.patch). La instalación predeterminada creará un clúster llamado ‘homestead’. Nunca debes darle a Elasticsearch más de la mitad de la memoria del sistema operativo, así que asegúrate de que tu máquina Homestead tenga al menos el doble de la asignación de Elasticsearch.

Revisar la Documentación de Elasticsearch para aprender a personalizar su configuración.

Neo4j

La instalación predeterminada de Neo4j establecerá el nombre de usuario de la base de datos en homestead y la contraseña correspondiente a secret. Para acceder al navegador Neo4j, visite http://homestead.test:7474 a través de su navegador web. Los puertos 7687 (Tornillo), 7474 (HTTP) y 7473 (HTTPS) están listos para atender solicitudes del cliente Neo4j.

Alias

Puede agregar alias de Bash a su máquina Homestead modificando el aliases archivo dentro de su directorio de Homestead:

alias c='clear'
alias ..='cd ..'

Después de haber actualizado el aliases archivo, debe volver a aprovisionar la máquina Homestead utilizando el vagrant reload --provision mando. Esto asegurará que sus nuevos alias estén disponibles en la máquina.

Uso diario

Acceso a Homestead a nivel mundial

A veces es posible que desee vagrant up su máquina Homestead desde cualquier lugar de su sistema de archivos. Puede hacer esto en sistemas Mac / Linux agregando una función Bash a su perfil Bash. En Windows, puede lograr esto agregando un archivo “por lotes” a su PATH. Estos scripts le permitirán ejecutar cualquier comando de Vagrant desde cualquier lugar de su sistema y señalarán automáticamente ese comando a su instalación de Homestead:

Mac / Linux

function homestead() {
    ( cd ~/Homestead && vagrant $* )
}

Asegúrate de ajustar el ~/Homestead ruta en la función a la ubicación de su instalación actual de Homestead. Una vez instalada la función, puede ejecutar comandos como homestead up o homestead ssh desde cualquier lugar de su sistema.

Ventanas

Crear un homestead.bat archivo por lotes en cualquier lugar de su máquina con el siguiente contenido:

@echo off

set cwd=%cd%
set homesteadVagrant=C:Homestead

cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%

set cwd=
set homesteadVagrant=

Asegúrate de modificar el ejemplo C:Homestead ruta en el script a la ubicación real de su instalación de Homestead. Después de crear el archivo, agregue la ubicación del archivo a su PATH. A continuación, puede ejecutar comandos como homestead up o homestead ssh desde cualquier lugar de su sistema.

Conexión a través de SSH

Puede SSH en su máquina virtual emitiendo el vagrant ssh comando terminal desde su directorio de Homestead.

Pero, dado que probablemente necesitará SSH en su máquina de Homestead con frecuencia, considere agregar la “función” descrita anteriormente a su máquina host para SSH rápidamente en la caja de Homestead.

Conexión a bases de datos

A homestead La base de datos está configurada para MySQL y PostgreSQL lista para usar. Para conectarse a su base de datos MySQL o PostgreSQL desde el cliente de base de datos de su máquina host, debe conectarse a 127.0.0.1 y puerto 33060 (MySQL) o 54320 (PostgreSQL). El nombre de usuario y la contraseña para ambas bases de datos es homestead / secret.

Solo debe usar estos puertos no estándar cuando se conecte a las bases de datos desde su máquina host. Utilizará los puertos predeterminados 3306 y 5432 en su archivo de configuración de la base de datos de Laravel ya que Laravel se está ejecutando dentro de la máquina virtual.

Copias de seguridad de la base de datos

Homestead puede hacer una copia de seguridad automática de su base de datos cuando se destruye su caja Vagrant. Para utilizar esta función, debe utilizar Vagrant 2.1.0 o superior. O, si está utilizando una versión anterior de Vagrant, debe instalar el vagrant-triggers enchufar. Para habilitar las copias de seguridad automáticas de la base de datos, agregue la siguiente línea a su Homestead.yaml expediente:

backup: true

Una vez configurado, Homestead exportará sus bases de datos a mysql_backup y postgres_backup directorios cuando el vagrant destroy se ejecuta el comando. Estos directorios se pueden encontrar en la carpeta donde clonó Homestead o en la raíz de su proyecto si está utilizando el método de instalación por proyecto.

Instantáneas de la base de datos

Homestead admite la congelación del estado de las bases de datos MySQL y MariaDB y la ramificación entre ellas mediante Administrador lógico de MySQL. Por ejemplo, imagine trabajar en un sitio con una base de datos de varios gigabytes. Puede importar la base de datos y tomar una instantánea. Después de trabajar un poco y crear algo de contenido de prueba localmente, puede restaurar rápidamente al estado original.

Bajo el capó, LMM utiliza la funcionalidad de instantánea delgada de LVM con soporte de copia en escritura. En la práctica, esto significa que cambiar una sola fila en una tabla solo hará que los cambios realizados se escriban en el disco, lo que ahorrará mucho tiempo y espacio en disco durante las restauraciones.

Ya que lmm interactúa con LVM, debe ejecutarse como root. Para ver todos los comandos disponibles, ejecute sudo lmm dentro de tu caja Vagrant. Un flujo de trabajo común tiene el siguiente aspecto:

  1. Importar una base de datos a la predeterminada master rama lmm.
  2. Guarde una instantánea de la base de datos sin cambios usando sudo lmm branch prod-YYYY-MM-DD.
  3. Modifica la base de datos.
  4. Correr sudo lmm merge prod-YYYY-MM-DD para deshacer todos los cambios.
  5. Correr sudo lmm delete <branch> para eliminar ramas innecesarias.

Agregar sitios adicionales

Una vez que su entorno de Homestead esté aprovisionado y en ejecución, es posible que desee agregar sitios Nginx adicionales para sus aplicaciones de Laravel. Puede ejecutar tantas instalaciones de Laravel como desee en un solo entorno de Homestead. Para agregar un sitio adicional, agregue el sitio a su Homestead.yaml expediente:

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
    - map: another.test
      to: /home/vagrant/project2/public

Si Vagrant no administra automáticamente su archivo “hosts”, es posible que también deba agregar el nuevo sitio a ese archivo:

192.168.10.10  homestead.test
192.168.10.10  another.test

Una vez que se ha agregado el sitio, ejecute el vagrant reload --provision comando desde su directorio de Homestead.

Tipos de sitios

Homestead admite varios tipos de sitios que le permiten ejecutar fácilmente proyectos que no están basados ​​en Laravel. Por ejemplo, podemos agregar fácilmente una aplicación Symfony a Homestead usando el symfony2 tipo de sitio:

sites:
    - map: symfony2.test
      to: /home/vagrant/my-symfony-project/web
      type: "symfony2"

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

Parámetros del sitio

Puede agregar Nginx adicional fastcgi_param valores a su sitio a través del params directiva del sitio. Por ejemplo, agregaremos un FOO parámetro con un valor de BAR:

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
      params:
          - key: FOO
            value: BAR

Variables de entorno

Puede establecer variables de entorno global agregándolas a su Homestead.yaml expediente:

variables:
    - key: APP_ENV
      value: local
    - key: FOO
      value: bar

Después de actualizar el Homestead.yaml, asegúrese de reaprovisionar la máquina ejecutando vagrant reload --provision. Esto actualizará la configuración de PHP-FPM para todas las versiones de PHP instaladas y también actualizará el entorno para el vagrant usuario.

SSL comodín

Homestead configura un certificado SSL autofirmado para cada sitio definido en el sites: sección de tu Homestead.yaml expediente. Si desea generar un certificado SSL comodín para un sitio, puede agregar un wildcard opción a la configuración de ese sitio. De forma predeterminada, el sitio utilizará el certificado comodín en lugar de del certificado de dominio específico:

- map: foo.domain.test
  to: /home/vagrant/domain
  wildcard: "yes"

Si el use_wildcard la opción está configurada en no, se generará el certificado comodín, pero no se utilizará:

- map: foo.domain.test
  to: /home/vagrant/domain
  wildcard: "yes"
  use_wildcard: "no"

Configuración de horarios Cron

Laravel proporciona una forma conveniente de programar trabajos de Cron programando un solo schedule:run Mando artesanal que se ejecutará cada minuto. los schedule:run El comando examinará el horario de trabajo definido en su AppConsoleKernel class para determinar qué trabajos deben ejecutarse.

Si desea el schedule:run que se ejecute para un sitio de Homestead, puede configurar el schedule opción a true al definir el sitio:

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
      schedule: true

El trabajo Cron para el sitio se definirá en el /etc/cron.d carpeta de la máquina virtual.

Configurar Mailhog

Mailhog le permite capturar fácilmente su correo electrónico saliente y examinarlo sin enviar el correo a sus destinatarios. Para comenzar, actualice su .env archivo para utilizar la siguiente configuración de correo:

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Una vez que se ha configurado Mailhog, puede acceder al panel de Mailhog en http://localhost:8025.

Configurar Minio

Minio es un servidor de almacenamiento de objetos de código abierto con una API compatible con Amazon S3. Para instalar Minio, actualice su Homestead.yaml archivo con la siguiente opción de configuración en la sección de características:

minio: true

De forma predeterminada, Minio está disponible en el puerto 9600. Puede acceder al panel de control de Minio visitando http://localhost:9600/. La clave de acceso predeterminada es homestead, mientras que la clave secreta predeterminada es secretkey. Al acceder a Minio, siempre debe usar region us-east-1.

Para utilizar Minio, deberá ajustar la configuración del disco S3 en su config/filesystems.php archivo de configuración. Deberá agregar el use_path_style_endpoint opción a la configuración del disco, así como cambiar la url clave para endpoint:

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'endpoint' => env('AWS_URL'),
    'use_path_style_endpoint' => true,
]

Finalmente, asegúrese de que su .env archivo tiene las siguientes opciones:

AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1
AWS_URL=http://localhost:9600

Para aprovisionar depósitos, agregue un buckets directiva a su archivo de configuración de Homestead:

buckets:
    - name: your-bucket
      policy: public
    - name: your-private-bucket
      policy: none

Soportado policy los valores incluyen: none, download, upload, y public.

Puertos

De forma predeterminada, los siguientes puertos se reenvían a su entorno de Homestead:

  • SSH: 2222 → Adelante a 22
  • Interfaz de usuario de ngrok: 4040 → Adelante a 4040
  • HTTP: 8000 → Adelante a 80
  • HTTPS: 44300 → Reenvía a 443
  • MySQL: 33060 → Adelante a 3306
  • PostgreSQL: 54320 → Reenvía a 5432
  • MongoDB: 27017 → Adelante a 27017
  • Mailhog: 8025 → Reenvía a 8025
  • Minio: 9600 → Adelante a 9600

Reenvío de puertos adicionales

Si lo desea, puede reenviar puertos adicionales a la caja de Vagrant, así como especificar su protocolo:

ports:
    - send: 50000
      to: 5000
    - send: 7777
      to: 777
      protocol: udp

Compartiendo su entorno

A veces, es posible que desee compartir lo que está trabajando actualmente con compañeros de trabajo o un cliente. Vagrant tiene una forma incorporada de respaldar esto a través de vagrant share; sin embargo, esto no funcionará si tiene varios sitios configurados en su Homestead.yaml expediente.

Para resolver este problema, Homestead incluye su propio share mando. Para comenzar, SSH en su máquina Homestead a través de vagrant ssh y correr share homestead.test. Esto compartirá el homestead.test sitio de tu Homestead.yaml archivo de configuración. Puede sustituir cualquiera de sus otros sitios configurados por homestead.test:

share homestead.test

Después de ejecutar el comando, verá aparecer una pantalla de Ngrok que contiene el registro de actividad y las URL de acceso público para el sitio compartido. Si desea especificar una región personalizada, un subdominio u otra opción de tiempo de ejecución de Ngrok, puede agregarlos para usted share mando:

share homestead.test -region=eu -subdomain=laravel

Recuerde, Vagrant es intrínsecamente inseguro y está exponiendo su máquina virtual a Internet cuando ejecuta el share mando.

Varias versiones de PHP

Homestead 6 introdujo soporte para múltiples versiones de PHP en la misma máquina virtual. Puede especificar qué versión de PHP usar para un sitio determinado dentro de su Homestead.yaml expediente. Las versiones de PHP disponibles son: “5.6”, “7.0”, “7.1”, “7.2”, “7.3” y “7.4” (la predeterminada):

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
      php: "7.1"

Además, puede utilizar cualquiera de las versiones de PHP compatibles a través de la CLI:

php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
php7.2 artisan list
php7.3 artisan list
php7.4 artisan list

También puede actualizar la versión CLI predeterminada emitiendo los siguientes comandos desde su máquina virtual Homestead:

php56
php70
php71
php72
php73
php74

Servidores web

Homestead utiliza el servidor web Nginx de forma predeterminada. Sin embargo, puede instalar Apache si apache se especifica como un tipo de sitio. Si bien ambos servidores web se pueden instalar al mismo tiempo, no se pueden instalar ambos. corriendo al mismo tiempo. los flip El comando shell está disponible para facilitar el proceso de cambio entre servidores web. los flip El comando determina automáticamente qué servidor web se está ejecutando, lo apaga y luego inicia el otro servidor. Para usar este comando, SSH en su máquina Homestead y ejecute el comando en su terminal:

flip

Correo

Homestead incluye el agente de transferencia de correo Postfix, que está escuchando en el puerto 1025 por defecto. Por lo tanto, puede indicarle a su aplicación que use el smtp controlador de correo activado localhost Puerto 1025. Luego, todo el correo enviado será manejado por Postfix y capturado por Mailhog. Para ver sus correos electrónicos enviados, abra http: // localhost: 8025 en su navegador web.

Anochecer de Laravel

Para ejecutar las pruebas de Laravel Dusk dentro de Homestead, debe habilitar el webdriver característica en su configuración de Homestead:

  features:
      - webdriver: true

No olvide aprovisionar su máquina virtual Homestead después para garantizar la webdriver La función está completamente instalada.

Depuración y creación de perfiles

Depurar solicitudes web con Xdebug

Homestead incluye soporte para depuración paso a paso usando Xdebug. Por ejemplo, puede cargar una página web desde un navegador y PHP se conectará a su IDE para permitir la inspección y modificación del código en ejecución.

De forma predeterminada, Xdebug ya se está ejecutando y está listo para aceptar conexiones. Si necesita habilitar Xdebug en la CLI, ejecute el sudo phpenmod xdebug comando dentro de su caja Vagrant. A continuación, siga las instrucciones de su IDE para habilitar la depuración. Finalmente, configure su navegador para activar Xdebug con una extensión o bookmarklet.

Xdebug hace que PHP se ejecute significativamente más lento. Para deshabilitar Xdebug, ejecute sudo phpdismod xdebug dentro de su caja Vagrant y reinicie el servicio FPM.

Depuración de aplicaciones CLI

Para depurar una aplicación CLI de PHP, use el xphp alias de shell dentro de su caja Vagrant:

xphp path/to/script

Inicio automático de Xdebug

Al depurar pruebas funcionales que realizan solicitudes al servidor web, es más fácil iniciar automáticamente la depuración en lugar de modificar las pruebas para que pasen por un encabezado personalizado o una cookie para activar la depuración. Para forzar que Xdebug se inicie automáticamente, modifique /etc/php/7.x/fpm/conf.d/20-xdebug.ini dentro de su caja Vagrant y agregue la siguiente configuración:

; If Homestead.yaml contains a different subnet for the IP address, this address may be different...
xdebug.remote_host = 192.168.10.1
xdebug.remote_autostart = 1

Aplicaciones de creación de perfiles con Blackfire

Fuego negro es un servicio SaaS para crear perfiles de solicitudes web y aplicaciones CLI y escribir afirmaciones de rendimiento. Ofrece una interfaz de usuario interactiva que muestra datos de perfil en gráficos de llamadas y líneas de tiempo. Está diseñado para su uso en desarrollo, puesta en escena y producción, sin gastos generales para los usuarios finales. Proporciona controles de rendimiento, calidad y seguridad en el código y php.ini ajustes de configuración.

los Jugador de Blackfire es una aplicación de rastreo web, pruebas web y raspado web de código abierto que puede funcionar junto con Blackfire para crear escenarios de creación de perfiles.

Para habilitar Blackfire, use la configuración de “características” en su archivo de configuración de Homestead:

features:
    - blackfire:
        server_id: "server_id"
        server_token: "server_value"
        client_id: "client_id"
        client_token: "client_value"

Credenciales del servidor Blackfire y credenciales del cliente requiere una cuenta de usuario. Blackfire ofrece varias opciones para perfilar una aplicación, incluida una herramienta CLI y una extensión del navegador. Por favor revise la documentación de Blackfire para más detalles.

Perfilar el rendimiento de PHP con XHGui

XHGui es una interfaz de usuario para explorar el rendimiento de sus aplicaciones PHP. Para habilitar XHGui, agregue xhgui: 'true' a la configuración de su sitio:

sites:
    -
        map: your-site.test
        to: /home/vagrant/your-site/public
        type: "apache"
        xhgui: 'true'

Si el sitio ya existe, asegúrese de ejecutar vagrant provision después de actualizar su configuración.

Para perfilar una solicitud web, agregue xhgui=on como parámetro de consulta para una solicitud. XHGui adjuntará automáticamente una cookie a la respuesta para que las solicitudes posteriores no necesiten el valor de la cadena de consulta. Puede ver los resultados de su perfil de aplicación navegando a http://your-site.test/xhgui.

Para perfilar una solicitud CLI usando XHGui, anteponga el comando con XHGUI=on:

XHGUI=on path/to/script

Los resultados del perfil CLI se pueden ver de la misma manera que los resultados del perfil web.

Tenga en cuenta que el acto de generar perfiles ralentiza la ejecución del script y los tiempos absolutos pueden ser hasta el doble de las solicitudes del mundo real. Por lo tanto, compare siempre las mejoras porcentuales y no los números absolutos. Además, tenga en cuenta que el tiempo de ejecución incluye cualquier tiempo de pausa en un depurador.

Dado que los perfiles de rendimiento ocupan una gran cantidad de espacio en disco, se eliminan automáticamente después de unos días.

Interfaces de red

los networks propiedad de la Homestead.yaml configura interfaces de red para su entorno de Homestead. Puede configurar tantas interfaces como sea necesario:

networks:
    - type: "private_network"
      ip: "192.168.10.20"

Para habilitar un puenteado interfaz, configure un bridge configurar y cambiar el tipo de red a public_network:

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"

Para permitir DHCP, solo quita el ip opción de su configuración:

networks:
    - type: "public_network"
      bridge: "en1: Wi-Fi (AirPort)"

Ampliación de Homestead

Puede extender Homestead usando el after.sh script en la raíz de su directorio de Homestead. Dentro de este archivo, puede agregar cualquier comando de shell que sea necesario para configurar y personalizar correctamente su máquina virtual.

Al personalizar Homestead, Ubuntu puede preguntarle si desea mantener la configuración original de un paquete o sobrescribirlo con un nuevo archivo de configuración. Para evitar esto, debe usar el siguiente comando al instalar paquetes para evitar sobrescribir cualquier configuración escrita previamente por Homestead:

sudo apt-get -y 
    -o Dpkg::Options::="--force-confdef" 
    -o Dpkg::Options::="--force-confold" 
    install your-package

Personalizaciones de usuario

Al usar Homestead en un entorno de equipo, es posible que desee modificar Homestead para que se adapte mejor a su estilo de desarrollo personal. Puede crear un user-customizations.sh archivo en la raíz de su directorio de Homestead (el mismo directorio que contiene su Homestead.yaml). Dentro de este archivo, puede realizar cualquier personalización que desee; sin embargo, el user-customizations.sh no debe ser controlado por versiones.

Actualización de Homestead

Antes de comenzar a actualizar Homestead, asegúrese de haber eliminado su máquina virtual actual ejecutando el siguiente comando en su directorio de Homestead:

vagrant destroy

A continuación, debe actualizar el código fuente de Homestead. Si clonó el repositorio, puede ejecutar los siguientes comandos en la ubicación en la que clonó originalmente el repositorio:

git fetch

git pull origin release

Estos comandos extraen el último código de Homestead del repositorio de GitHub, obtienen las últimas etiquetas y luego verifican la última versión etiquetada. Puede encontrar la última versión estable en el Página de lanzamientos de GitHub.

Si ha instalado Homestead a través del composer.json archivo, debe asegurarse de que su composer.json el archivo contiene "laravel/homestead": "^11" y actualice sus dependencias:

composer update

Luego, debe actualizar el cuadro Vagrant usando el vagrant box update mando:

vagrant box update

A continuación, debe ejecutar el bash init.sh comando desde el directorio de Homestead para actualizar algunos archivos de configuración adicionales. Se le preguntará si desea sobrescribir su Homestead.yaml, after.sh, y aliases archivos:

// Mac / Linux...
bash init.sh

// Windows...
init.bat

Finalmente, deberá regenerar su caja de Homestead para utilizar la última instalación de Vagrant:

vagrant up

Configuración específica del proveedor

VirtualBox

natdnshostresolver

Por defecto, Homestead configura el natdnshostresolver ajuste a on. Esto le permite a Homestead usar la configuración de DNS de su sistema operativo anfitrión. Si desea anular este comportamiento, agregue las siguientes líneas a su Homestead.yaml expediente:

provider: virtualbox
natdnshostresolver: 'off'

Enlaces simbólicos en Windows

Si los enlaces simbólicos no funcionan correctamente en su máquina con Windows, es posible que deba agregar el siguiente bloque a su Vagrantfile:

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end