- 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 ejecutarvagrant box add
, puede ejecutar elvagrant 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, comoC: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:
- Importar una base de datos a la predeterminada
master
rama lmm. - Guarde una instantánea de la base de datos sin cambios usando
sudo lmm branch prod-YYYY-MM-DD
. - Modifica la base de datos.
- Correr
sudo lmm merge prod-YYYY-MM-DD
para deshacer todos los cambios. - 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