Configurare un ambiente di sviluppo per Laravel con MAMP
Le possibilità per mettere a punto un ambiente di sviluppo personalizzato per usare i nostri framework preferiti sono diverse, oggi vediamo uno dei modi per sviluppare una webapp in locale che usa Laravel.
Prima di tutto vediamo di cosa abbiamo bisogno:
- Laravel: è un framework PHP che sta riscuotendo successo ed è scaricabarile da qui.
- MAMP: è l’acronimo di Mac Apache MySQL PHP. È un’applicazione che ci permetterà di lanciare un server locale sulla nostra macchina senza troppi problemi. MAMP è specifico per OS X, XAMPP e WAMP sono disponibili anche per altre piattaforme, quindi le configurazioni del server possono essere leggermente differenti (XAMPP è disponibile anche per Mac).
- Un buon editor di testo: consiglio Sublime Text 2.
- Il Terminale e un Browser.
Configuriamo Laravel
Una volta che abbiamo scaricato Laravel, dopo che abbiamo rinominato la cartella decompressa con il nome del nostro progetto (oggi ho scelto laravel
), la prima cosa che dobbiamo fare è assicurarci che la cartella laravel/storage/views
abbia i permessi di scrittura. Quindi, da terminale, cambiamo directory fino a trovare la cartella laravel
e poi usiamo chmod
:
$ chmod -R 777 storage/views
Un passo molto importante nel configurare Laravel è quello di impostare una chiave univoca per la nostra applicazione, con questa Laravel si occuperà in automatico di gestire tutto quello che riguarda hashing, password ecc… Per impostarla possiamo inserire manualmente una stringa alfanumerica di 32 caratteri nel file application/config/application.php
alla riga 'key' => 'LaMiaChiave'
, oppure usare Artisan, l’interfaccia da riga di comando di Laravel, che possiamo trovare nella root del nostro progetto sotto forma di eseguibile. Per usarlo, già che ci troviamo nella cartella laravel
, da terminale eseguiamo:
$ php artisan key:generate
Una volta eseguito, se controlliamo il file application/config/application.php
, notiamo che la chiave è stata generata in automatico. Ora possiamo spostare questa cartella in MAMP. Apriamo la cartella /Applications/MAMP/htdocs
e spostiamoci dentro tutta la cartella che abbiamo scaricato: attenzione, spostiamo la cartella per intero e non semplicemente il suo contenuto. Questo per due motivi: il primo è che in questo modo possiamo avere più progetti su cui lavorare creando più directory all’interno di htdocs, il secondo è che se selezioniamo tutti gli elementi contenuti nella cartella e li spostiamo non sposteremo anche tutti i file nascosti come .gitignore
e .htaccess
che ci servirà più avanti.
Se ora avviamo MAMP e navighiamo su https://localhost:8888/laravel/public
dovremmo essere in grado di vedere la schermata di default di Laravel. Bene.
Configuriamo MAMP
Dato che per accedere al sito dobbiamo navigare fino alla cartella public, vogliamo che gli utenti (ed anche noi nella fase di sviluppo) possano accedere direttamente a questo indirizzo senza che siano in grado di navigare nella struttura della nostra applicazione. Per farlo bisogna configurare il nostro server in modo che ad ogni richiesta al nostro sito, si venga ridiretti alla cartella public. Esisto diversi modi per farlo. Un modo è quello di impostare la nostra DocumentRoot
sulla cartella public: apriamo MAMP, apriamo le preferenze e sotto la scheda Apache impostiamo il percorso che nel nostro caso sarà /Applications/MAMP/htdocs/laravel/public
. Quindi, se ora navighiamo su https://localhost:8888, dovremmo vedere la schermata di default. Questo approccio ha il vantaggio di essere estremamente semplice e rapido, mentre ha lo svantaggio che possiamo lavorare su un solo progetto per volta (per lavorare su più progetti dovremmo reimpostare la DocumentRoot
ogni volta che cambiamo progetto).
A noi, invece, serve qualcosa di più flessibile. Il risultato finale sarà che potremo collegarci direttamente all’indirizzo https://laravel.dev che in realtà punta a laravel/public.
Per cominciare dobbiamo cambiare alcune impostazioni in MAMP: apriamo le preferenze di MAMP e, sotto la scheda “Porte”, impostiamo il valore delle “Porte Apache” su :80
. Il valore impostato è :8888
ed infatti prima ci siamo collegati all’indirizzo https://localhost:8888. Il valore delle porte di default in Apache è :80
e quindi non ci sarà bisogno di dichiararlo esplicitamente nell’URL.
Ora abbiamo bisogno di creare un host virtuale per Apache e quindi andiamo a modificare le impostazioni di Apache contenuto in MAMP: apriamo il file /Applications/MAMP/htdocs/extra/httpd-vhosts.conf in cui vengono registrati gli host virtuali ed inseriamo le seguenti righe, che non fanno altro che dichiarare l’esistenza di un nuovo host:
<VirtualHost *:80>
DocumentRoot '/Applications/MAMP/htdocs/laravel/public'
ServerName laravel.dev
</VirtualHost>
salviamo e modifichiamo /Applications/MAMP/htdocs/httpd.conf. Dobbiamo togliere il commento alla seguente riga in modo da includere il file che abbiamo appena modificato:
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
Ora è il momento di modificare /etc/hosts. Apriamolo da terminale con sudo
ed aggiungiamo la riga
127.0.0.1 laravel.dev
salviamo e riavviamo Apache tramite MAMP. A questo punto all’indirizzo https://laravel.dev possiamo vedere la pagina di benvenuto che si aveva su https://localhost:8888/laravel/public.
Ora, in base alle configurazioni dei server potrebbe sorgere un problema di reindirizzamento. Per poterlo verificare aggiungiamo una nuova route alla nostra applicazione: in laravel/application/routes.php aggiungiamo:
Route::get('ciao', function() {
return View::make('hello.ciao');
});
poi creiamo una nuova view in laravel/application/views/hello chiamata ciao.php ed inseriamo un bel
<h1>Ciao!</h1>
se tutto va bene collegandosi a https://laravel.dev/ciao dovrebbe comparire il messaggio che abbiamo appena inserito. Se questo non dovesse succedere e ricevessimo una messaggio di errore significa che dovremmo modificare il nostro .htaccess, perché in realtà, dietro le quinte, stiamo richiedendo la pagina https://laravel.dev/index.php/ciao. Quindi nel file laravel/public/.htaccess sostituiamo l’ultima direttiva di mod_rewrite.c
con:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Sarebbe interessante sapere se funziona allo stesso modo con XAMPP e WAMP su altre piattaforme, quindi se qualcuno vuol condividere le sue configurazioni locali i commenti saranno ben accetti.
In ogni caso buon divertimento!