Nelle ultime ore sto giocando molto con Digital Ocean. Lo trovo un servizio fantastico e ci sto quasi facendo un pensierino per Laravel-Italia.
Ho dato uno sguardo alla guida presente sul sito, dedicata al come installare il nostro framework preferito… e ho deciso di farne una veloce traduzione.
Nello specifico, in questo articolo vedremo come installare Laravel su un webserver Nginx, su Ubuntu 14.04.
Installiamo tutto il necessario
La prima cosa da fare, per poter lavorare con Laravel, è installare tutto lo stack di software necessario. Possiamo farlo senza problemi tramite i default repository di Ubuntu.
Eseguiamo l’update dell’indice, in modo tale da avere una lista aggiornata di tutti i package disponibili. Dopodiché procediamo con l’installazione del software necessario.
sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git
Con queste due semplici istruzioni, in pochi minuti, ci troveremo Nginx, insieme al PHP e tutti i tool necessari ad eseguire un’applicazione creata con Laravel.
Nota: installeremo anche Git, che verrà usato da Composer per scaricare le varie dipendenze.
Modifica del file php.ini
Abbiamo tutti i componenti necessari: passiamo a sistemare i file di configurazione. Cominciamo con PHP. Roba di pochi secondi.
Apriamo il file di configurazione principale di PHP-fpm, usato da Nginx.
sudo nano /etc/php5/fpm/php.ini
Avremo bisogno di modificare un solo, singolo valore di configurazione. Cerca, precisamente, il parametro cgi.fix_pathinfo. Impostalo su 0, come segue:
cgi.fix_pathinfo=0
A cosa serve? In poche parole spiega a PHP di non provare ad eseguire uno script nel caso il file in questione non venga trovato. È una cosa molto importante a livello di sicurezza: permette di evitare alcuni tipi di attacchi che consentono ad un malintenzionato di eseguire codice tramite una richiesta costruita ad-hoc.
Sistemato il file, salvalo e chiudilo.
Rimane solo da abilitare, tramite esplicita richiesta, l’estensione MCrypt, dalla quale Laravel dipende. Basta molto poco:
sudo php5enmod mcrypt
Ci siamo: riavvia il servizio php5-fpm con il seguente comando:
sudo service php5-fpm restart
Bene: PHP è configurato. Passiamo ad Nginx.
Configurare Nginx e la Web Root
Adesso tocca configurare il web server. L’operazione si svolgerà seguendo due step specifici e distinti.
Il primo consisterà nella configurazione della document root e della struttura delle directory da usare per i file di Laravel. I nostri file verranno infatti messi in una cartella /var/www/laravel.
Al momento attuale, l’unica cartella ad essere già presente è /var. Iniziamo quindi con il creare la struttura desiderata.
sudo mkdir -p /var/www/laravel
Nota: il flag -p serve a creare tutta la struttura in una volta sola.
Adesso che abbiamo un luogo “fisico” per i nostri file, possiamo passare alla modifica del file di configurazione di Nginx. Nello specifico, modificheremo la parte relativa ai server block.
Apriamo il file di configurazione dei siti disponibili:
sudo nano /etc/nginx/sites-available/default
Subito dopo l’installazione, il file sarà pieno di sezioni commentate. Tuttavia, la struttura basilare dovrebbe essere questa:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
La prima cosa da fare è cambiare la document root da usare. Laravel è stato installato in var/www/laravel. Agiamo di conseguenza.
Ricordiamo, comunque, che la directory esposta dal server non sarà quella principale, ma la subdirectory /public.
Quindi, modifichiamo così il file.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/laravel/public;
index index.php index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
Occorre, adesso, impostare la direttiva server_name che indica l’attuale nome di dominio del server. Se non ne hai uno, usa l’indirizzo IP che ti è stato assegnato.
Dobbiamo inoltre modificare come Nginx gestisce le richieste. L’elemento da modificare è la direttiva try_files.
L’idea di fondo è semplice: ogni richiesta deve essere gestita come se si stesse cercando un file. Se il file non viene trovato, allora si passa a gestire la richiesta come se fosse un parametro query per index.php.
La procedura può essere rappresentata così:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/laravel/public;
index index.php index.html index.htm;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
Infine, dobbiamo procedere con la creazione di un blocco ulteriore, che gestisca l’esecuzione di ogni singolo file PHP. Cercherà di eseguire il file, oppure gestirà la richiesta come parametro query per il file index.php.
Impostiamo le varie direttive fastcgi_* in modo tale che i percorsi vengano riconosciuti a dovere.
Infine, imposteremo il parametro SCRIPT_FILENAME in modo tale da permettere a PHP di rintracciare i file in modo corretto.
A lavoro ultimato, il file di configurazione dovrebbe apparirti così:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/laravel/public;
index index.php index.html index.htm;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Salva e chiudi. Ci siamo. Rimane solo da riavviare Nginx:
sudo service nginx restart
… e anche questa è fatta!
Installiamo Composer e Laravel
Siamo agli sgoccioli: tutto quello che manca, infatti, è installare Laravel e Composer.
Chiaramente, ci occuperemo prima di installare il gestore di dipendenze, per poi passare al framework come tocco finale.
Muoviamoci in una directory dove abbiamo i permessi di scrittura (la home, ad esempio) e scarichiamo lo script di installazione dal sito di Composer.
cd ~
curl -sS https://getcomposer.org/installer | php
Verrà creato un file composer.phar nella directory, che può essere tranquillamente eseguito da linea di comando.
Tuttavia, è anche vero che sarebbe ottimale poterlo eseguire da qualsiasi directory… perché non muoverlo in una cartella accessibile globalmente?
Provvediamo, tramite il comando mv.
sudo mv composer.phar /usr/local/bin/composer
Anche Composer è pronto. Installiamo Laravel, finalmente!
Ricorda che dobbiamo mettere i file di cui abbiamo bisogno nella cartella /var/www/laravel directory.
Di conseguenza, il comando da usare sarà…
sudo composer create-project laravel/laravel /var/www/laravel
Al momento in cui scriviamo la versione di Laravel è la 4.*.
Nota di Francesco: Anche con Laravel 5 non ci dovrebbero essere troppe difficoltà. In caso di sostanziali cambiamenti scriverò un altro articolo.
A questo punto, i file saranno stati scaricati nella cartella che abbiamo specificato. Tuttavia, sono ancora “posseduti” dall’account root. Bisogna quindi modificare alcuni permessi e ownership, in modo tale da poter servire i vari contenuti senza problemi.
sudo chown -R www-data /var/www/laravel
sudo chmod -R 775 /var/www/laravel/app/storage
Dopo aver eseguito questi ultimi due comandi, l’installazione sarà completa al 100%. Come verifica, accedi alla pagina di benvenuto visitando:
http://server_domain_or_IP
Buon divertimento la tua Droplet 😉