Prologo
Primi Passi
Architettura
Le Basi
- Routing
- Middleware
- Protezione da CSRF
- Controller
- Richieste
- Risposte
- Views
- Blade
- Vite
- URL
- Sessioni
- Validazione
- Errori
- Logging
Approfondimenti
- Artisan
- Broadcasting
- Cache
- Collezioni
- Concorrenza
- Contesto
- Contratti
- Eventi
- File System
- Helpers
- Client HTTP
- Localizzazione
- Notifiche
- Sviluppo di Package
- Processi
- Code
- Rate-limiting
- Stringhe
- Scheduling di Task
Sicurezza
Database
Eloquent ORM
Testing
Package
Homestead
- Introduzione
- Installazione e Configurazione
- Aggiornare Homestead
- Uso Quotidiano
- Debugging e Profiling
- Interfacce di Rete
- Estendere Homestead
- Impostazioni Specifiche del Provider
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, comeC:\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'