Homestead

Introduzione

Laravel si impegna a rendere l’intera esperienza di sviluppo in PHP piacevole, incluso l’ambiente di sviluppo locale. Laravel Homestead è una box Vagrant ufficiale e preconfezionata che ti offre un ottimo ambiente di sviluppo senza dover installare PHP, un server web o altri software server sulla tua macchina locale.

Vagrant offre un modo semplice ed elegante per gestire e configurare macchine virtuali. Le box di Vagrant sono completamente usa e getta. Se qualcosa va storto, puoi distruggere e ricreare la box in pochi minuti!

Homestead funziona su qualsiasi sistema Windows, macOS o Linux e include Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node e tutto il software necessario per sviluppare applicazioni Laravel straordinarie.

Se usi Windows, potrebbe essere necessario abilitare la virtualizzazione hardware (VT-x). Di solito può essere abilitata tramite il BIOS. Se usi Hyper-V su un sistema UEFI, potrebbe essere necessario disabilitare Hyper-V per accedere a VT-x.

Software Inclusi

  • 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 e Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailpit
  • avahi
  • ngrok
  • Xdebug
  • XHProf / Tideways / XHGui
  • wp-cli

Software Opzionale

  • 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 (PHP extension)
  • Webdriver & Laravel Dusk Utilities

Installazione e Configurazione

Primi Passi

Prima di avviare il tuo ambiente Homestead, devi installare Vagrant e uno dei seguenti provider supportati:

Tutti questi pacchetti software offrono installer visivi facili da usare per tutti i sistemi operativi più diffusi.

Per utilizzare il provider Parallels, devi installare il plug-in Parallels Vagrant. È gratuito.

Installazione di Homestead

Puoi installare Homestead clonando il repository di Homestead sulla tua macchina host. Considera di clonare il repository in una cartella Homestead nella tua directory "home", poiché la macchina virtuale Homestead fungerà da host per tutte le tue applicazioni Laravel. In questa documentazione, ci riferiremo a questa directory come la tua "directory Homestead":

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

Dopo aver clonato il repository Laravel Homestead, dovresti passare al branch release. Questo branch contiene sempre l’ultima versione stabile di Homestead:

cd ~/Homestead

git checkout release

Successivamente, esegui il comando bash init.sh dalla directory Homestead per creare il file di configurazione Homestead.yaml. Il file Homestead.yaml è dove configurerai tutte le impostazioni per la tua installazione di Homestead. Questo file sarà posizionato nella directory Homestead:

# macOS / Linux...
bash init.sh

# Windows...
init.bat

Configurare Homestead

Configurare il Provider

La chiave provider nel tuo file Homestead.yaml indica quale provider di Vagrant utilizzare: virtualbox o parallels:

provider: virtualbox

Se stai usando Apple Silicon è necessario il provider Parallels.

Configurazione delle Cartelle Condivise

La proprietà folders del file Homestead.yaml elenca tutte le cartelle che desideri condividere con l’ambiente Homestead. Quando i file in queste cartelle vengono modificati, saranno sincronizzati tra il tuo computer locale e l’ambiente virtuale Homestead. Puoi configurare tutte le cartelle condivise di cui hai bisogno:

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

Gli utenti Windows non dovrebbero usare la sintassi del percorso ~/ ma utilizzare invece il percorso completo del loro progetto, come C:\Users\user\Code\project1.

Dovresti sempre mappare le singole applicazioni alle loro cartelle specifiche invece di mappare una singola directory grande che contiene tutte le tue applicazioni. Quando mappi una cartella, la macchina virtuale deve tenere traccia di tutte le operazioni di I/O per ogni file nella cartella. Potresti riscontrare una riduzione delle prestazioni se hai un gran numero di file in una cartella:

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

Non dovresti mai montare . (la directory corrente) quando usi Homestead. Questo fa sì che Vagrant non mappi la cartella corrente a /vagrant e potrebbe interrompere funzionalità opzionali e causare risultati inaspettati durante il provisioning.

Per abilitare NFS, puoi aggiungere un’opzione type alla mappatura della cartella:

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

Quando usi NFS su Windows, dovresti considerare l’installazione del plug-in vagrant-winnfsd. Questo plug-in manterrà correttamente i permessi di utente/gruppo per file e cartelle all’interno della macchina virtuale Homestead.

Puoi anche passare qualsiasi opzione supportata dalle cartelle sincronizzate di Vagrant elencandole sotto la chiave options:

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

Configurazione dei siti Nginx

Non conosci Nginx? Nessun problema. La proprietà sites del tuo file Homestead.yaml ti permette di mappare facilmente un "dominio" a una cartella nel tuo ambiente Homestead. Una configurazione di esempio del sito è inclusa nel file Homestead.yaml. Puoi aggiungere quanti siti desideri al tuo ambiente Homestead. Homestead può fungere da ambiente virtualizzato comodo per ogni applicazione Laravel su cui lavori:

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

Se modifichi la proprietà sites dopo aver provisionato la macchina virtuale Homestead, devi eseguire il comando vagrant reload --provision nel tuo terminale per aggiornare la configurazione di Nginx sulla macchina virtuale.

Gli script di Homestead sono progettati per essere il più idempotenti possibile. Tuttavia, se riscontri problemi durante il provisioning, dovresti distruggere e ricreare la macchina eseguendo il comando vagrant destroy && vagrant up.

Risoluzione degli Hostname

Homestead pubblica gli hostname usando mDNS per una risoluzione automatica. Se imposti hostname: homestead nel tuo file Homestead.yaml, l’host sarà accessibile su homestead.local. macOS, iOS e le distribuzioni desktop di Linux includono il supporto per mDNS di default. Se usi Windows, devi installare Bonjour Print Services for Windows.

L’uso degli hostname automatici funziona meglio per le installazioni per progetto di Homestead. Se ospiti più siti su un’unica istanza di Homestead, puoi aggiungere i "domini" dei tuoi siti web al file hosts del tuo computer. Il file hosts reindirizzerà le richieste per i tuoi siti Homestead nella tua macchina virtuale Homestead. Su macOS e Linux, questo file si trova in /etc/hosts. Su Windows, si trova in C:\Windows\System32\drivers\etc\hosts. Le linee che aggiungi a questo file saranno simili alle seguenti:

192.168.56.56  homestead.test

Assicurati che l’indirizzo IP elencato sia quello impostato nel tuo file Homestead.yaml. Una volta aggiunto il dominio al tuo file hosts e avviata la box Vagrant, potrai accedere al sito tramite il tuo browser web:

http://homestead.test

Configurazione dei Servizi

Homestead avvia diversi servizi di default, ma puoi personalizzare quali abilitare o disabilitare durante la configurazione. Ad esempio, puoi abilitare PostgreSQL e disabilitare MySQL modificando l’opzione services nel file Homestead.yaml:

services:
    - enabled:
        - "postgresql"
    - disabled:
        - "mysql"

I servizi specificati verranno avviati o fermati secondo l’ordine nelle direttive enabled e disabled.

Avvio della Vagrant Box

Dopo aver modificato il file Homestead.yaml come preferisci, esegui il comando vagrant up dalla tua directory Homestead. Vagrant avvierà la macchina virtuale e configurerà automaticamente le cartelle condivise e i siti Nginx.

Per eliminare la macchina, puoi usare il comando vagrant destroy.

Installazione per progetto

Invece di installare Homestead globalmente e condividere la stessa macchina virtuale Homestead tra tutti i tuoi progetti, puoi configurare un’istanza di Homestead per ogni progetto che gestisci. Installare Homestead per progetto può essere utile se desideri includere un Vagrantfile nel tuo progetto, permettendo ad altri collaboratori di eseguire vagrant up subito dopo aver clonato il repository del progetto.

Puoi installare Homestead nel tuo progetto usando il gestore di pacchetti Composer:

composer require laravel/homestead --dev

Una volta installato Homestead, esegui il comando make di Homestead per generare il file Vagrantfile e Homestead.yaml per il tuo progetto. Questi file saranno posizionati nella root del tuo progetto. Il comando make configurerà automaticamente le direttive sites e folders nel file Homestead.yaml:

# macOS / Linux...
php vendor/bin/homestead make

# Windows...
vendor\\bin\\homestead make

Successivamente, esegui il comando vagrant up nel tuo terminale e accedi al tuo progetto su http://homestead.test nel tuo browser. Ricorda, dovrai comunque aggiungere un’entrata nel file /etc/hosts per homestead.test o il dominio di tua scelta se non stai utilizzando la risoluzione automatica del nome host.

Installazione delle Funzionalità Opzionali

Il software opzionale viene installato utilizzando l’opzione features all’interno del tuo file Homestead.yaml. La maggior parte delle funzionalità può essere abilitata o disabilitata con un valore booleano, mentre alcune funzionalità consentono opzioni di configurazione multiple:

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

Puoi specificare una versione supportata di Elasticsearch, che deve essere un numero di versione esatto (major.minor.patch). L’installazione predefinita creerà un cluster chiamato ‘homestead’. Non devi mai assegnare a Elasticsearch più della metà della memoria del sistema operativo, quindi assicurati che la tua macchina virtuale Homestead abbia almeno il doppio dell’allocazione per Elasticsearch.

Consulta la documentazione di Elasticsearch per imparare come personalizzare la tua configurazione.

MariaDB

Abilitare MariaDB rimuoverà MySQL e installerà MariaDB. MariaDB di solito funziona come sostituto diretto di MySQL, quindi dovresti continuare a usare il driver mysql nella configurazione del database della tua applicazione.

MongoDB

L’installazione standard di MongoDB imposta il nome utente del database su homestead e la password su secret.

Neo4j

L’installazione predefinita di Neo4j imposterà il nome utente del database su homestead e la password su secret. Per accedere al Neo4j browser, visita http://homestead.test:7474 tramite il tuo browser. Le porte 7687 (Bolt), 7474 (HTTP) e 7473 (HTTPS) sono pronte per le richieste del client Neo4j.

Alias

Puoi aggiungere alias Bash alla tua macchina virtuale Homestead modificando il file aliases nella directory Homestead:

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

Dopo aver aggiornato il file aliases, devi riprovisionare la macchina virtuale Homestead usando il comando vagrant reload --provision. Questo garantirà che i tuoi nuovi alias siano disponibili sulla macchina.

Aggiornare Homestead

Prima di iniziare ad aggiornare Homestead, assicurati di aver rimosso la tua attuale macchina virtuale eseguendo il seguente comando nella directory di Homestead:

vagrant destroy

Successivamente, devi aggiornare il codice sorgente di Homestead. Se hai clonato il repository, puoi eseguire i seguenti comandi nella posizione in cui hai originariamente clonato il repository:

git fetch

git pull origin release

Questi comandi prelevano l’ultimo codice di Homestead dal repository GitHub, recuperano gli ultimi tag e poi effettuano il checkout dell’ultima release taggata. Puoi trovare l’ultima versione stabile nella pagina delle release di GitHub di Homestead.

Se hai installato Homestead tramite il file composer.json del tuo progetto, assicurati che il tuo file composer.json contenga "laravel/homestead": "^12" e aggiorna le dipendenze:

composer update

Successivamente, dovresti aggiornare la box di Vagrant usando il comando vagrant box update:

vagrant box update

Dopo aver aggiornato la box di Vagrant, dovresti eseguire il comando bash init.sh dalla directory di Homestead per aggiornare i file di configurazione aggiuntivi di Homestead. Ti verrà chiesto se desideri sovrascrivere i file esistenti Homestead.yaml, after.sh e aliases:

# macOS / Linux...
bash init.sh

# Windows...
init.bat

Infine, dovrai rigenerare la tua macchina virtuale Homestead per utilizzare l’ultima installazione di Vagrant:

vagrant up

Uso Quotidiano

Connessione tramite SSH

Puoi connetterti alla tua macchina virtuale eseguendo il comando vagrant ssh nel terminale dalla directory di Homestead.

Aggiungere Siti Aggiuntivi

Una volta che il tuo ambiente Homestead è stato configurato e avviato, potresti voler aggiungere ulteriori siti Nginx per i tuoi altri progetti Laravel. Puoi eseguire quanti progetti Laravel desideri su un unico ambiente Homestead. Per aggiungere un sito aggiuntivo, aggiungi il sito al file Homestead.yaml.

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

Assicurati di aver configurato una mappatura delle cartelle per la directory del progetto prima di aggiungere il sito.

Se Vagrant non gestisce automaticamente il tuo file "hosts", potresti dover aggiungere anche il nuovo sito a quel file. Su macOS e Linux, questo file si trova in /etc/hosts. Su Windows, si trova in C:\Windows\System32\drivers\etc\hosts:

192.168.56.56  homestead.test
192.168.56.56  another.test

Una volta aggiunto il sito, esegui il comando vagrant reload --provision nel terminale dalla directory di Homestead.

Tipi di Sito

Homestead supporta diversi "tipi" di siti che ti permettono di eseguire facilmente progetti che non sono basati su Laravel. Ad esempio, possiamo aggiungere facilmente un’applicazione Statamic a Homestead usando il tipo di sito statamic:

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

I tipi di sito disponibili sono: apache, apache-proxy, apigility, expressive, laravel (predefinito), proxy (per nginx), silverstripe, statamic, symfony2, symfony4 e zf.

Parametri del Sito

Puoi aggiungere valori fastcgi_param aggiuntivi di Nginx al tuo sito tramite la direttiva params del sito:

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

Variabili d’Ambiente

Puoi definire variabili d’ambiente globali aggiungendole al tuo file Homestead.yaml:

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

Dopo aver aggiornato il file Homestead.yaml, assicurati di riprovisionare la macchina eseguendo il comando vagrant reload --provision. Questo aggiornerà la configurazione PHP-FPM per tutte le versioni PHP installate e aggiornerà anche l’ambiente per l’utente vagrant.

Porte

Per impostazione predefinita, le seguenti porte sono inoltrate al tuo ambiente Homestead:

  • HTTP: 8000 → Inoltra a 80
  • HTTPS: 44300 → Inoltra a 443

Forwarding di Porte Aggiuntive

Se desideri, puoi inoltrare porte aggiuntive alla Vagrant box definendo una voce di configurazione ports nel tuo file Homestead.yaml. Dopo aver aggiornato il file Homestead.yaml, assicurati di riprovisionare la macchina eseguendo il comando vagrant reload --provision:

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

Di seguito è riportato un elenco di porte dei servizi aggiuntivi di Homestead che potresti voler mappare dalla tua macchina host alla tua Vagrant box:

  • SSH: 2222 → A 22
  • ngrok UI: 4040 → A 4040
  • MySQL: 33060 → A 3306
  • PostgreSQL: 54320 → A 5432
  • MongoDB: 27017 → A 27017
  • Mailpit: 8025 → A 8025
  • Minio: 9600 → A 9600

Versioni PHP

Homestead supporta l’esecuzione di più versioni di PHP sulla stessa macchina virtuale. Puoi specificare quale versione di PHP usare per un determinato sito nel tuo file Homestead.yaml. Le versioni PHP disponibili sono: "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2" e "8.3" (predefinita):

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

All’interno della tua macchina virtuale Homestead, puoi usare una qualsiasi delle versioni PHP supportate tramite 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
php8.0 artisan list
php8.1 artisan list
php8.2 artisan list
php8.3 artisan list

Puoi cambiare la versione predefinita di PHP usata dalla CLI eseguendo i seguenti comandi all’interno della tua macchina virtuale Homestead:

php56
php70
php71
php72
php73
php74
php80
php81
php82
php83

Connessione ai Database

Un database homestead è configurato per MySQL e PostgreSQL fin dall’inizio. Per connetterti al tuo database MySQL o PostgreSQL dal client del database sulla tua macchina host, dovresti collegarti a 127.0.0.1 sulla porta 33060 (MySQL) o 54320 (PostgreSQL). Il nome utente e la password per entrambi i database sono homestead / secret.

Usa queste porte non standard solo quando ti connetti ai database dalla tua macchina host. Nella configurazione database della tua applicazione Laravel userai le porte predefinite 3306 e 5432 poiché Laravel gira all’interno della macchina virtuale.

Backup del Database

Homestead può eseguire automaticamente il backup del tuo database quando la macchina virtuale Homestead viene distrutta. Per utilizzare questa funzionalità, devi usare Vagrant 2.1.0 o superiore. Oppure, se stai usando una versione precedente di Vagrant, devi installare il plug-in vagrant-triggers. Per abilitare i backup automatici del database, aggiungi la seguente riga al tuo file Homestead.yaml:

backup: true

Una volta configurato, Homestead esporterà i tuoi database nelle directory .backup/mysql_backup e .backup/postgres_backup quando viene eseguito il comando vagrant destroy. Queste directory si trovano nella cartella in cui hai installato Homestead o nella radice del tuo progetto se stai usando il metodo di installazione per progetto.

Configurare le pianificazioni Cron

Laravel offre un modo semplice per pianificare i cron job impostando un unico comando Artisan schedule:run che si esegue ogni minuto. Il comando schedule:run controllerà la pianificazione dei job definita nel file routes/console.php per decidere quali attività eseguire.

Se vuoi che il comando schedule:run venga eseguito per un sito Homestead, puoi impostare l’opzione schedule su true quando definisci il sito:

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

Il cron job per il sito sarà definito nella directory /etc/cron.d della macchina virtuale Homestead.

Configurazione di Mailpit

Mailpit ti permette di intercettare le email in uscita ed esaminarle senza inviarle effettivamente ai destinatari. Per iniziare, aggiorna il file .env della tua applicazione per usare le seguenti impostazioni email:

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

Una volta configurato Mailpit, puoi accedere al dashboard di Mailpit all’indirizzo http://localhost:8025.

Configurazione di Minio

Minio è un server di object storage open source con un’API compatibile con Amazon S3. Per installare Minio, aggiorna il tuo file Homestead.yaml aggiungendo la seguente opzione di configurazione nella sezione features:

minio: true

Per impostazione predefinita, Minio è disponibile sulla porta 9600. Puoi accedere al pannello di controllo di Minio visitando http://localhost:9600. La chiave di accesso predefinita è homestead, mentre la chiave segreta predefinita è secretkey. Quando accedi a Minio, dovresti sempre utilizzare la regione us-east-1.

Per usare Minio, assicurati che il tuo file .env contenga le seguenti opzioni:

AWS_USE_PATH_STYLE_ENDPOINT=true
AWS_ENDPOINT=http://localhost:9600
AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1

Per creare i bucket "S3" gestiti da Minio, aggiungi una direttiva buckets nel tuo file Homestead.yaml. Dopo aver definito i tuoi bucket, esegui il comando vagrant reload --provision nel terminale:

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

I valori supportati per la policy includono: none, download, upload e public.

Laravel Dusk

Per eseguire i test di Laravel Dusk all’interno di Homestead, devi abilitare la webdriver feature nella configurazione di Homestead:

features:
    - webdriver: true

Dopo aver abilitato la webdriver feature, devi eseguire il comando vagrant reload --provision nel tuo terminale.

Condividere il tuo Ambiente

A volte potresti voler condividere su cosa stai lavorando con colleghi o un cliente. Vagrant ha un supporto integrato per questo tramite il comando vagrant share; tuttavia, questo non funzionerà se hai più siti configurati nel tuo file Homestead.yaml.

Per risolvere questo problema, Homestead include il proprio comando share. Per iniziare, accedi via SSH alla tua macchina virtuale Homestead tramite vagrant ssh ed esegui il comando share homestead.test. Questo comando condividerà il sito homestead.test dal tuo file di configurazione Homestead.yaml. Puoi sostituire homestead.test con qualsiasi altro sito configurato:

share homestead.test

Dopo aver eseguito il comando, vedrai apparire una schermata di Ngrok che contiene il registro delle attività e gli URL accessibili pubblicamente per il sito condiviso. Se desideri specificare una regione personalizzata, un sottodominio o un’altra opzione di runtime di Ngrok, puoi aggiungerle al tuo comando share:

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

Se hai bisogno di condividere contenuti su HTTPS invece che su HTTP, usare il comando sshare invece di share ti permetterà di farlo.

Ricorda, Vagrant è intrinsecamente insicuro e stai esponendo la tua macchina virtuale a Internet quando esegui il comando share.

Debugging e Profiling

Debuggare le Richieste Web con Xdebug

Homestead include il supporto per il debug passo-passo usando Xdebug. Ad esempio, puoi accedere a una pagina nel tuo browser e PHP si connetterà al tuo IDE per permettere l’ispezione e la modifica del codice in esecuzione.

Per impostazione predefinita, Xdebug è già in esecuzione e pronto ad accettare connessioni. Se hai bisogno di abilitare Xdebug sulla CLI, esegui il comando sudo phpenmod xdebug all’interno della tua macchina virtuale Homestead. Successivamente, segui le istruzioni del tuo IDE per abilitare il debug. Infine, configura il tuo browser per attivare Xdebug con un’estensione o un bookmarklet.

Xdebug rallenta significativamente l’esecuzione di PHP. Per disabilitare Xdebug, esegui sudo phpdismod xdebug nella tua macchina virtuale Homestead e riavvia il servizio FPM.

Avvio automatico di Xdebug

Quando si eseguono test funzionali che fanno richieste al server web, è più semplice avviare automaticamente il debug invece di modificare i test per passare attraverso un’intestazione o un cookie personalizzato per attivare il debug. Per forzare Xdebug ad avviarsi automaticamente, modifica il file /etc/php/7.x/fpm/conf.d/20-xdebug.ini all’interno della tua macchina virtuale Homestead e aggiungi la seguente configurazione:

; Se Homestead.yaml contiene una subnet diversa per l'indirizzo IP, questo indirizzo potrebbe essere diverso...
xdebug.client_host = 192.168.10.1
xdebug.mode = debug
xdebug.start_with_request = yes

Debugging delle applicazioni CLI

Per fare debug di un’applicazione PHP CLI, usa l’alias xphp nella shell all’interno della tua macchina virtuale Homestead:

xphp /percorso/al/script

Profilare le applicazioni con Blackfire

Blackfire è un servizio per profilare le richieste web e le applicazioni CLI. Offre un’interfaccia utente interattiva che mostra i dati dei profili in grafici di chiamate e timeline. È pensato per essere usato in sviluppo, staging e produzione, senza impatti sulle prestazioni per gli utenti finali. Inoltre, Blackfire fornisce controlli sulle prestazioni, qualità e sicurezza del codice e delle impostazioni di configurazione php.ini.

Il Blackfire Player è un’applicazione open-source per il crawling web, il testing web e lo scraping web che può lavorare insieme a Blackfire per creare scenari di profilazione tramite script.

Per abilitare Blackfire, usa l’impostazione "features" nel tuo file di configurazione Homestead:

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

Le credenziali del server e del client di Blackfire richiedono un account Blackfire. Blackfire offre diverse opzioni per profilare un’applicazione, inclusi uno strumento CLI e un’estensione per browser. Per favore, consulta la documentazione di Blackfire per maggiori dettagli.

Interfacce di Rete

La proprietà networks del file Homestead.yaml configura le interfacce di rete per la tua macchina virtuale Homestead. Puoi configurare quante interfacce necessarie:

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

Per abilitare un’interfaccia bridged, configura un’impostazione bridge per la rete e cambia il tipo di rete in public_network:

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

Per abilitare DHCP, basta rimuovere l’opzione ip dalla tua configurazione:

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

Per aggiornare quale dispositivo la rete sta utilizzando, puoi aggiungere un’opzione dev alla configurazione della rete. Il valore predefinito di dev è eth0:

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

Estendere Homestead

Puoi estendere Homestead utilizzando lo script after.sh nella cartella principale della tua directory Homestead. In questo file, puoi aggiungere tutti i comandi shell necessari per configurare e personalizzare correttamente la tua macchina virtuale.

Quando personalizzi Homestead, Ubuntu potrebbe chiederti se desideri mantenere la configurazione originale di un pacchetto o sovrascriverla con un nuovo file di configurazione. Per evitare questo, dovresti usare il seguente comando quando installi i pacchetti, in modo da non sovrascrivere nessuna configurazione precedentemente impostata da Homestead:

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

Personalizzazioni Utente

Quando usi Homestead con il tuo team, potresti voler adattare Homestead al tuo stile di sviluppo personale. Per fare ciò, puoi creare un file user-customizations.sh nella radice della directory Homestead (la stessa directory che contiene il file Homestead.yaml). In questo file puoi effettuare tutte le personalizzazioni che desideri; tuttavia, user-customizations.sh non dovrebbe essere sotto controllo di versione.

Impostazioni Specifiche del Provider

VirtualBox

natdnshostresolver

Di default, Homestead imposta natdnshostresolver su on. Questo permette a Homestead di utilizzare le impostazioni DNS del tuo sistema operativo host. Se vuoi modificare questo comportamento, aggiungi le seguenti opzioni di configurazione al tuo file Homestead.yaml:

provider: virtualbox
natdnshostresolver: 'off'
Lascia un commento

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *