- Introducción
- Instalación y Configuración
- Actualizando Homestead
- Uso Diario
- Depuración y Perfilado
- Interfaces de Red
- Extendiendo Homestead
- Configuraciones Específicas del Proveedor
#Introducción
Laravel se esfuerza por hacer que toda la experiencia de desarrollo en PHP sea agradable, incluyendo su entorno de desarrollo local. Laravel Homestead es una caja Vagrant oficial y preempaquetada que le proporciona un entorno de desarrollo excelente sin necesidad de instalar PHP, un servidor web u otro software de servidor en su máquina local.
Vagrant ofrece una forma simple y elegante de gestionar y aprovisionar máquinas virtuales. Las cajas Vagrant son completamente desechables. ¡Si algo sale mal, puede destruir y recrear la caja en minutos!
Homestead funciona en cualquier sistema Windows, macOS o Linux e incluye Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node y todo el software necesario para desarrollar aplicaciones Laravel increíbles.
Si usa Windows, puede que necesite habilitar la virtualización por hardware (VT-x). Normalmente se habilita desde el BIOS. Si usa Hyper-V en un sistema UEFI, puede que también necesite deshabilitar Hyper-V para acceder a VT-x.
#Software Incluido
<style> #software-list > ul { column-count: 2; -moz-column-count: 2; -webkit-column-count: 2; column-gap: 5em; -moz-column-gap: 5em; -webkit-column-gap: 5em; line-height: 1.9; } </style>- Ubuntu 22.04
- Git
- PHP 8.3
- PHP 8.2
- PHP 8.1
- PHP 8.0
- PHP 7.4
- PHP 7.3
- PHP 7.2
- PHP 7.1
- PHP 7.0
- PHP 5.6
- Nginx
- MySQL 8.0
- lmm
- Sqlite3
- PostgreSQL 15
- Composer
- Docker
- Node (Con Yarn, Bower, Grunt y Gulp)
- Redis
- Memcached
- Beanstalkd
- Mailpit
- avahi
- ngrok
- Xdebug
- XHProf / Tideways / XHGui
- wp-cli
#Software Opcional
<style> #software-list > ul { column-count: 2; -moz-column-count: 2; -webkit-column-count: 2; column-gap: 5em; -moz-column-gap: 5em; -webkit-column-gap: 5em; line-height: 1.9; } </style>- Apache
- Blackfire
- Cassandra
- Chronograf
- CouchDB
- Crystal & Lucky Framework
- Elasticsearch
- EventStoreDB
- Flyway
- Gearman
- Go
- Grafana
- InfluxDB
- Logstash
- MariaDB
- Meilisearch
- MinIO
- MongoDB
- Neo4j
- Oh My Zsh
- Open Resty
- PM2
- Python
- R
- RabbitMQ
- Rust
- RVM (Ruby Version Manager)
- Solr
- TimescaleDB
- Trader (extensión PHP)
- Webdriver & Utilidades Laravel Dusk
#Instalación y Configuración
#Primeros Pasos
Antes de iniciar su entorno Homestead, debe instalar Vagrant así como uno de los siguientes proveedores soportados:
Todos estos paquetes de software ofrecen instaladores visuales fáciles de usar para los sistemas operativos más populares.
Para usar el proveedor Parallels, necesitará instalar el plugin Parallels Vagrant. Es gratuito.
#Instalando Homestead
Puede instalar Homestead clonando el repositorio Homestead en su máquina anfitriona. Se recomienda clonar el repositorio en una carpeta Homestead dentro de su directorio "home", ya que la máquina virtual Homestead servirá como anfitrión para todas sus aplicaciones Laravel. A lo largo de esta documentación, nos referiremos a este directorio como su "directorio Homestead":
git clone https://github.com/laravel/homestead.git ~/Homestead
Después de clonar el repositorio Laravel Homestead, debe cambiar a la rama release. Esta rama siempre contiene la última versión estable de Homestead:
cd ~/Homestead
git checkout release
A continuación, ejecute el comando bash init.sh desde el directorio Homestead para crear el archivo de configuración Homestead.yaml. El archivo Homestead.yaml es donde usted configurará todos los ajustes de su instalación de Homestead. Este archivo se colocará en el directorio Homestead:
# macOS / Linux...
bash init.sh
# Windows...
init.bat
#Configurando Homestead
#Configurando su Proveedor
La clave provider en su archivo Homestead.yaml indica qué proveedor Vagrant debe usarse: virtualbox o parallels:
provider: virtualbox
Si usa Apple Silicon, es obligatorio usar el proveedor Parallels.
#Configurando Carpetas Compartidas
La propiedad folders del archivo Homestead.yaml lista todas las carpetas que desea compartir con su entorno Homestead. A medida que los archivos dentro de estas carpetas cambian, se sincronizan entre su máquina local y la máquina virtual Homestead. Puede configurar tantas carpetas compartidas como necesite:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
Los usuarios de Windows no deben usar la sintaxis de ruta ~/ y en su lugar deben usar la ruta completa a su proyecto, como C:\Users\user\Code\project1.
Siempre debe mapear aplicaciones individuales a su propia carpeta en lugar de mapear un directorio grande que contenga todas sus aplicaciones. Cuando mapea una carpeta, la máquina virtual debe rastrear todas las operaciones de disco para cada archivo en la carpeta. Puede experimentar una reducción en el 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 debe montar . (el directorio actual) cuando use Homestead. Esto hace que Vagrant no mapee la carpeta actual a /vagrant y romperá funcionalidades opcionales causando resultados inesperados durante el aprovisionamiento.
Para habilitar NFS, puede agregar una opción type a su mapeo de carpeta:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "nfs"
Al usar NFS en Windows, debería considerar instalar el plugin vagrant-winnfsd. Este plugin mantiene los permisos correctos de usuario / grupo para archivos y directorios dentro de la máquina virtual Homestead.
También puede pasar cualquier opción soportada por las Carpetas Sincronizadas de Vagrant listándolas bajo la clave options:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
#Configurando Sitios Nginx
¿No está familiarizado con Nginx? No hay problema. La propiedad sites en su archivo Homestead.yaml le permite mapear fácilmente un "dominio" a una carpeta en su entorno Homestead. Un ejemplo de configuración de sitio está incluido en el archivo Homestead.yaml. Nuevamente, puede agregar tantos sitios como necesite en su entorno Homestead. Homestead puede servir como un entorno virtualizado conveniente para cada aplicación Laravel en la que esté trabajando:
sites:
- map: homestead.test
to: /home/vagrant/project1/public
Si cambia la propiedad sites después de aprovisionar la máquina virtual Homestead, debe ejecutar el comando vagrant reload --provision en su terminal 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 experimenta problemas durante el aprovisionamiento, debe destruir y reconstruir la máquina ejecutando el comando vagrant destroy && vagrant up.
#Resolución de Nombres de Host
Homestead publica nombres de host usando mDNS para resolución automática. Si establece hostname: homestead en su archivo Homestead.yaml, el host estará disponible en homestead.local. macOS, iOS y distribuciones de escritorio Linux incluyen soporte mDNS por defecto. Si usa Windows, debe instalar Bonjour Print Services para Windows.
Usar nombres de host automáticos funciona mejor para instalaciones por proyecto de Homestead. Si aloja múltiples sitios en una sola instancia Homestead, puede agregar los "dominios" de sus sitios web al archivo hosts en su máquina. El archivo hosts redirigirá las solicitudes a sus sitios Homestead hacia la máquina virtual Homestead. En macOS y Linux, este archivo está en /etc/hosts. En Windows, está en C:\Windows\System32\drivers\etc\hosts. Las líneas que agregue a este archivo se verán así:
192.168.56.56 homestead.test
Asegúrese de que la dirección IP listada sea la que está configurada en su archivo Homestead.yaml. Una vez que haya agregado el dominio a su archivo hosts y haya iniciado la caja Vagrant, podrá acceder al sitio desde su navegador web:
http://homestead.test
#Configurando Servicios
Homestead inicia varios servicios por defecto; sin embargo, puede personalizar qué servicios están habilitados o deshabilitados durante el aprovisionamiento. Por ejemplo, puede habilitar PostgreSQL y deshabilitar MySQL modificando la opción services en su archivo Homestead.yaml:
services:
- enabled:
- "postgresql"
- disabled:
- "mysql"
Los servicios especificados serán iniciados o detenidos según su orden en las directivas enabled y disabled.
#Iniciando la Máquina Vagrant
Una vez que haya editado el archivo Homestead.yaml a su gusto, ejecute el comando vagrant up desde su directorio Homestead. Vagrant arrancará la máquina virtual y configurará automáticamente sus carpetas compartidas y sitios Nginx.
Para destruir la máquina, puede usar el comando vagrant destroy.
#Instalación por Proyecto
En lugar de instalar Homestead globalmente y compartir la misma máquina virtual Homestead entre todos sus proyectos, puede configurar una instancia Homestead para cada proyecto que administre. Instalar Homestead por proyecto puede ser beneficioso si desea incluir un Vagrantfile con su proyecto, permitiendo que otros que trabajen en el proyecto ejecuten vagrant up inmediatamente después de clonar el repositorio.
Puede instalar Homestead en su proyecto usando el gestor de paquetes Composer:
composer require laravel/homestead --dev
Una vez instalado Homestead, invoque el comando make de Homestead para generar el archivo Vagrantfile y el archivo Homestead.yaml para su proyecto. Estos archivos se colocarán en la raíz de su proyecto. El comando make configurará automáticamente las directivas sites y folders en el archivo Homestead.yaml:
# macOS / Linux...
php vendor/bin/homestead make
# Windows...
vendor\\bin\\homestead make
Luego, ejecute el comando vagrant up en su terminal y acceda a su proyecto en http://homestead.test desde su navegador. Recuerde que aún necesitará agregar una entrada en el archivo /etc/hosts para homestead.test o el dominio que elija si no está usando la resolución automática de nombres de host.
#Instalando Funcionalidades Opcionales
El software opcional se instala usando la opción features dentro de su archivo Homestead.yaml. La mayoría de las funcionalidades pueden habilitarse o deshabilitarse con un valor booleano, mientras que algunas 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
- dragonflydb: true
- elasticsearch:
version: 7.9.0
- eventstore: true
version: 21.2.0
- flyway: true
- gearman: true
- golang: true
- grafana: true
- influxdb: true
- logstash: true
- mariadb: true
- meilisearch: true
- minio: true
- mongodb: true
- neo4j: true
- ohmyzsh: true
- openresty: true
- pm2: true
- python: true
- r-base: true
- rabbitmq: true
- rustc: true
- rvm: true
- solr: true
- timescaledb: true
- trader: true
- webdriver: true
#Elasticsearch
Puede especificar una versión soportada de Elasticsearch, que debe ser un número de versión exacto (major.minor.patch). La instalación por defecto creará un clúster llamado 'homestead'. Nunca debe asignar a Elasticsearch más de la mitad de la memoria del sistema operativo, así que asegúrese de que su máquina virtual Homestead tenga al menos el doble de la asignación de Elasticsearch.
Consulte la documentación de Elasticsearch para aprender cómo personalizar su configuración.
#MariaDB
Habilitar MariaDB eliminará MySQL e instalará MariaDB. MariaDB suele funcionar como un reemplazo directo de MySQL, por lo que debe seguir usando el controlador de base de datos mysql en la configuración de base de datos de su aplicación.
#MongoDB
La instalación por defecto de MongoDB establecerá el nombre de usuario de la base de datos como homestead y la contraseña correspondiente como secret.
#Neo4j
La instalación por defecto de Neo4j establecerá el nombre de usuario de la base de datos como homestead y la contraseña correspondiente como secret. Para acceder al navegador Neo4j, visite http://homestead.test:7474 desde su navegador web. Los puertos 7687 (Bolt), 7474 (HTTP) y 7473 (HTTPS) están listos para atender solicitudes del cliente Neo4j.
#Aliases
Puede agregar aliases Bash a su máquina virtual Homestead modificando el archivo aliases dentro de su directorio Homestead:
alias c='clear'
alias ..='cd ..'
Después de actualizar el archivo aliases, debe volver a aprovisionar la máquina virtual Homestead usando el comando vagrant reload --provision. Esto asegurará que sus nuevos aliases estén disponibles en la máquina.
#Actualizando Homestead
Antes de comenzar a actualizar Homestead, debe asegurarse de haber eliminado su máquina virtual actual ejecutando el siguiente comando en su directorio Homestead:
vagrant destroy
Luego, debe actualizar el código fuente de Homestead. Si clonó el repositorio, puede ejecutar los siguientes comandos en la ubicación donde originalmente clonó el repositorio:
git fetch
git pull origin release
Estos comandos descargan el código más reciente de Homestead desde el repositorio GitHub, obtienen las últimas etiquetas y luego cambian a la última versión etiquetada. Puede encontrar la última versión estable en la página de lanzamientos de Homestead en GitHub.
Si ha instalado Homestead a través del archivo composer.json de su proyecto, debe asegurarse de que su archivo composer.json contenga "laravel/homestead": "^12" y actualizar sus dependencias:
composer update
Luego, debe actualizar la caja Vagrant usando el comando vagrant box update:
vagrant box update
Después de actualizar la caja Vagrant, debe ejecutar el comando bash init.sh desde el directorio Homestead para actualizar los archivos de configuración adicionales de Homestead. Se le preguntará si desea sobrescribir sus archivos existentes Homestead.yaml, after.sh y aliases:
# macOS / Linux...
bash init.sh
# Windows...
init.bat
Finalmente, necesitará regenerar su máquina virtual Homestead para utilizar la última instalación de Vagrant:
vagrant up
#Uso Diario
#Conexión vía SSH
Puede conectarse vía SSH a su máquina virtual ejecutando el comando vagrant ssh desde su directorio Homestead.
#Agregando Sitios Adicionales
Una vez que su entorno Homestead esté aprovisionado y en ejecución, puede querer agregar sitios Nginx adicionales para sus otros proyectos Laravel. Puede ejecutar tantos proyectos Laravel como desee en un solo entorno Homestead. Para agregar un sitio adicional, añádalo a su archivo Homestead.yaml.
sites:
- map: homestead.test
to: /home/vagrant/project1/public
- map: another.test
to: /home/vagrant/project2/public
Debe asegurarse de haber configurado un mapeo de carpeta para el directorio del proyecto antes de agregar el sitio.
Si Vagrant no está gestionando automáticamente su archivo "hosts", puede que necesite agregar el nuevo sitio a ese archivo también. En macOS y Linux, este archivo está en /etc/hosts. En Windows, está en C:\Windows\System32\drivers\etc\hosts:
192.168.56.56 homestead.test
192.168.56.56 another.test
Una vez agregado el sitio, ejecute el comando vagrant reload --provision desde su directorio Homestead.
#Tipos de Sitios
Homestead soporta 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 Statamic a Homestead usando el tipo de sitio statamic:
sites:
- map: statamic.test
to: /home/vagrant/my-symfony-project/web
type: "statamic"
Los tipos de sitios disponibles son: apache, apache-proxy, apigility, expressive, laravel (el predeterminado), proxy (para nginx), silverstripe, statamic, symfony2, symfony4 y zf.
#Parámetros del Sitio
Puede agregar valores adicionales de fastcgi_param de Nginx a su sitio mediante la directiva params del sitio:
sites:
- map: homestead.test
to: /home/vagrant/project1/public
params:
- key: FOO
value: BAR
#Variables de Entorno
Puede definir variables de entorno globales agregándolas a su archivo Homestead.yaml:
variables:
- key: APP_ENV
value: local
- key: FOO
value: bar
Después de actualizar el archivo Homestead.yaml, asegúrese de volver a aprovisionar la máquina ejecutando el comando vagrant reload --provision. Esto actualizará la configuración PHP-FPM para todas las versiones de PHP instaladas y también actualizará el entorno para el usuario vagrant.
#Puertos
Por defecto, los siguientes puertos se redirigen a su entorno Homestead:
- HTTP: 8000 → Redirige a 80
- HTTPS: 44300 → Redirige a 443
#Redirigiendo Puertos Adicionales
Si lo desea, puede reenviar puertos adicionales a la máquina Vagrant definiendo una entrada de configuración ports en su archivo Homestead.yaml. Después de actualizar el archivo Homestead.yaml, asegúrese de volver a aprovisionar la máquina ejecutando el comando vagrant reload --provision:
ports:
- send: 50000
to: 5000
- send: 7777
to: 777
protocol: udp
A continuación hay una lista de puertos adicionales de servicios Homestead que puede mapear desde su máquina anfitriona a su caja Vagrant:
- SSH: 2222 → A 22
- Interfaz ngrok: 4040 → A 4040
- MySQL: 33060 → A 3306
- PostgreSQL: 54320 → A 5432
- MongoDB: 27017 → A 27017
- Mailpit: 8025 → A 8025
- Minio: 9600 → A 9600
#Versiones de PHP
Homestead soporta ejecutar múltiples versiones de PHP en la misma máquina virtual. Puede especificar qué versión de PHP usar para un sitio dado dentro de su archivo Homestead.yaml. Las versiones de PHP disponibles son: "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2" y "8.3" (la predeterminada):
sites:
- map: homestead.test
to: /home/vagrant/project1/public
php: "7.1"
Dentro de su máquina virtual Homestead, puede usar cualquiera de las versiones de PHP soportadas vía 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
php8.0 artisan list
php8.1 artisan list
php8.2 artisan list
php8.3 artisan list
Puede cambiar la versión predeterminada de PHP usada por la CLI ejecutando los siguientes comandos dentro de su máquina virtual Homestead:
php56
php70
php71
php72
php73
php74
php80
php81
php82
php83
#Conexión a Bases de Datos
Una base de datos homestead está configurada para MySQL y PostgreSQL por defecto. Para conectarse a su base de datos MySQL o PostgreSQL desde el cliente de base de datos de su máquina anfitriona, debe conectarse a 127.0.0.1 en el puerto 33060 (MySQL) o 54320 (PostgreSQL). El usuario y 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 anfitriona. Usará los puertos predeterminados 3306 y 5432 en el archivo de configuración database de su aplicación Laravel ya que Laravel se ejecuta dentro de la máquina virtual.
#Respaldo de Bases de Datos
Homestead puede respaldar automáticamente su base de datos cuando su máquina virtual Homestead es destruida. Para usar esta función, debe usar Vagrant 2.1.0 o superior. O, si usa una versión antigua de Vagrant, debe instalar el plugin vagrant-triggers. Para habilitar respaldos automáticos, agregue la siguiente línea a su archivo Homestead.yaml:
backup: true
Una vez configurado, Homestead exportará sus bases de datos a los directorios .backup/mysql_backup y .backup/postgres_backup cuando se ejecute el comando vagrant destroy. Estos directorios se encuentran en la carpeta donde instaló Homestead o en la raíz de su proyecto si usa el método de instalación por proyecto.
#Configurando Tareas Cron
Laravel ofrece una forma conveniente de programar tareas cron ejecutando un único comando Artisan schedule:run cada minuto. El comando schedule:run examina la programación de tareas definida en su clase App\Console\Kernel para determinar qué tareas programadas ejecutar.
Si desea que el comando schedule:run se ejecute para un sitio Homestead, puede establecer la opción schedule en true al definir el sitio:
sites:
- map: homestead.test
to: /home/vagrant/project1/public
schedule: true
La tarea cron para el sitio se definirá en el directorio /etc/cron.d de la máquina virtual Homestead.
#Configurando Mailpit
Mailpit le permite interceptar su correo saliente y examinarlo sin enviarlo realmente a sus destinatarios. Para comenzar, actualice el archivo .env de su aplicación con 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 configurado Mailpit, puede acceder al panel de Mailpit en http://localhost:8025.
#Configurando 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 archivo Homestead.yaml con la siguiente opción de configuración en la sección features:
minio: true
Por defecto, 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 la región us-east-1.
Para usar Minio, deberá ajustar la configuración del disco S3 en el archivo de configuración config/filesystems.php de su aplicación. Debe agregar la opción use_path_style_endpoint a la configuración del disco y cambiar la clave url a 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 archivo .env tenga 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 buckets "S3" con Minio, agregue una directiva buckets a su archivo Homestead.yaml. Después de definir sus buckets, debe ejecutar el comando vagrant reload --provision en su terminal:
buckets:
- name: your-bucket
policy: public
- name: your-private-bucket
policy: none
Los valores soportados para policy incluyen: none, download, upload y public.
#Laravel Dusk
Para ejecutar pruebas de Laravel Dusk dentro de Homestead, debe habilitar la funcionalidad webdriver en su configuración Homestead:
features:
- webdriver: true
Después de habilitar la funcionalidad webdriver, debe ejecutar el comando vagrant reload --provision en su terminal.
#Compartiendo su Entorno
A veces puede querer compartir en qué está trabajando con compañeros o un cliente. Vagrant tiene soporte incorporado para esto mediante el comando vagrant share; sin embargo, esto no funcionará si tiene múltiples sitios configurados en su archivo Homestead.yaml.
Para resolver este problema, Homestead incluye su propio comando share. Para comenzar, conéctese vía SSH a su máquina virtual Homestead con vagrant ssh y ejecute el comando share homestead.test. Este comando compartirá el sitio homestead.test de su archivo de configuración Homestead.yaml. Puede sustituir cualquiera de sus otros sitios configurados por homestead.test:
share homestead.test
Después de ejecutar el comando, verá una pantalla de Ngrok que contiene el registro de actividad y las URLs públicas accesibles para el sitio compartido. Si desea especificar una región personalizada, subdominio u otra opción de tiempo de ejecución de Ngrok, puede agregarlas a su comando share:
share homestead.test -region=eu -subdomain=laravel
Si necesita compartir contenido sobre HTTPS en lugar de HTTP, usar el comando sshare en lugar de share le permitirá hacerlo.
Recuerde, Vagrant es inherentemente inseguro y está exponiendo su máquina virtual a Internet al ejecutar el comando share.
#Depuración y Perfilado
#Depurando Peticiones Web con Xdebug
Homestead incluye soporte para depuración paso a paso usando Xdebug. Por ejemplo, puede acceder a una página en su navegador y PHP se conectará a su IDE para permitir la inspección y modificación del código en ejecución.
Por defecto, Xdebug ya está activo y listo para aceptar conexiones. Si necesita habilitar Xdebug en la CLI, ejecute el comando sudo phpenmod xdebug dentro de su máquina virtual Homestead. Luego, 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 funcione considerablemente más lento. Para deshabilitar Xdebug, ejecute sudo phpdismod xdebug dentro de su máquina virtual Homestead y reinicie el servicio FPM.
#Inicio Automático de Xdebug
Al depurar pruebas funcionales que hacen peticiones al servidor web, es más fácil iniciar la depuración automáticamente en lugar de modificar las pruebas para pasar un encabezado o cookie personalizado que active la depuración. Para forzar que Xdebug inicie automáticamente, modifique el archivo /etc/php/7.x/fpm/conf.d/20-xdebug.ini dentro de su máquina virtual Homestead y agregue la siguiente configuración:
; If Homestead.yaml contains a different subnet for the IP address, this address may be different...
xdebug.client_host = 192.168.10.1
xdebug.mode = debug
xdebug.start_with_request = yes
#Depurando Aplicaciones CLI
Para depurar una aplicación PHP CLI, use el alias de shell xphp dentro de su máquina virtual Homestead:
xphp /path/to/script
#Perfilando Aplicaciones con Blackfire
Blackfire es un servicio para perfilar peticiones web y aplicaciones CLI. Ofrece una interfaz interactiva que muestra datos de perfil en gráficos de llamadas y líneas de tiempo. Está diseñado para usarse en desarrollo, staging y producción, sin impacto para los usuarios finales. Además, Blackfire proporciona chequeos de rendimiento, calidad y seguridad en el código y en la configuración php.ini.
El Blackfire Player es una aplicación de código abierto para Web Crawling, pruebas web y scraping que puede trabajar conjuntamente con Blackfire para crear escenarios de perfilado.
Para habilitar Blackfire, use la configuración "features" en su archivo de configuración Homestead:
features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"
Las credenciales del servidor y cliente Blackfire requieren una cuenta Blackfire. Blackfire ofrece varias opciones para perfilar una aplicación, incluyendo una herramienta CLI y una extensión para navegador. Por favor, revise la documentación de Blackfire para más detalles.
#Interfaces de Red
La propiedad networks del archivo Homestead.yaml configura las interfaces de red para su máquina virtual Homestead. Puede configurar tantas interfaces como necesite:
networks:
- type: "private_network"
ip: "192.168.10.20"
Para habilitar una interfaz bridged, configure una opción bridge para la red y cambie el tipo de red a public_network:
networks:
- type: "public_network"
ip: "192.168.10.20"
bridge: "en1: Wi-Fi (AirPort)"
Para habilitar DHCP, simplemente elimine la opción ip de su configuración:
networks:
- type: "public_network"
bridge: "en1: Wi-Fi (AirPort)"
Para actualizar qué dispositivo usa la red, puede agregar una opción dev a la configuración de la red. El valor predeterminado de dev es eth0:
networks:
- type: "public_network"
ip: "192.168.10.20"
bridge: "en1: Wi-Fi (AirPort)"
dev: "enp2s0"
#Extendiendo Homestead
Puede extender Homestead usando el script after.sh en la raíz de su directorio Homestead. En este archivo, puede agregar cualquier comando shell necesario para configurar y personalizar adecuadamente su máquina virtual.
Al personalizar Homestead, Ubuntu puede preguntarle si desea conservar la configuración original de un paquete o sobrescribirla con un nuevo archivo de configuración. Para evitar esto, debe usar el siguiente comando al instalar paquetes para evitar sobrescribir cualquier configuración previamente escrita por Homestead:
sudo apt-get -y \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" \
install package-name
#Personalizaciones de Usuario
Cuando usa Homestead con su equipo, puede querer ajustar Homestead para que se adapte mejor a su estilo personal de desarrollo. Para lograr esto, puede crear un archivo user-customizations.sh en la raíz de su directorio Homestead (el mismo directorio que contiene su archivo Homestead.yaml). En este archivo, puede hacer cualquier personalización que desee; sin embargo, el archivo user-customizations.sh no debe ser controlado por versiones.
#Configuraciones Específicas del Proveedor
#VirtualBox
#natdnshostresolver
Por defecto, Homestead configura la opción natdnshostresolver en on. Esto permite que Homestead use la configuración DNS del sistema operativo anfitrión. Si desea anular este comportamiento, agregue las siguientes opciones de configuración a su archivo Homestead.yaml:
provider: virtualbox
natdnshostresolver: 'off'