Nginx sta rapidamente superando Apache come server web preferito. Per le app Web costruite in linguaggi come Rails e Python è praticamente onnipresente, ma è un po' più lento a prendere piede nel mondo PHP. Parte del motivo è la facilità con cui PHP e Apache vanno insieme. Tuttavia, PHP e Nginx possono cooperare quasi altrettanto facilmente e, con il rilascio di PHP 7, combinare i due può essere un'opzione abbastanza veloce.
I pacchetti
Cominciando dall'inizio. Aggiorna Ubuntu e ottieni i pacchetti Nginx e PHP.
# sudo apt-get update && sudo apt-get -y upgrade # sudo apt-get -y install nginx php7.0 php7.0-fpm
Al termine dell'installazione, i pacchetti dovrebbero essere tutti a posto e effettivamente in esecuzione. Per assicurarti che sia così, puoi controllare che sia Nginx che i servizi PHP-FPM siano in esecuzione in Systemd.
# sudo systemctl status nginx # sudo systemctl status php7.0-fpm
Se Systemd conferma che entrambi i servizi sono in esecuzione, il server dovrebbe essere effettivamente attivo e dovresti essere in grado di vedere la pagina di benvenuto predefinita di Nginx navigando su localhost
nel browser.
Configurazione
Ovviamente, non è neanche lontanamente pronto per ospitare effettivamente qualcosa. È necessaria una configurazione per puntare Nginx su alcuni contenuti effettivi e migliorare la sicurezza. La directory principale per i file di configurazione di Nginx si trova in /etc/nginx
. Per fortuna, ci sono già impostazioni predefinite da Ubuntu che rendono il processo di configurazione molto più semplice.
Nginx.conf
Il file di configurazione principale per Nginx è nginx.conf
. Aprilo nell'editor di testo di tua scelta. Richiederà i permessi di root, quindi un editor basato su testo come Vim sarà probabilmente il migliore. La configurazione predefinita è per lo più a posto. Ci sono ovviamente cose che possono essere fatte per migliorare la velocità e la sicurezza del sistema, ma la maggior parte di ciò va oltre lo scopo di questo tutorial di base. Se vuoi migliorare le prestazioni, le opzioni Gzip commentate aiuteranno con la compressione e possono velocizzare le cose. Per quanto riguarda la sicurezza, l'aggiunta delle tre righe seguenti aiuterà a prevenire attività dannose.
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
Configurazione del sito
Una volta aggiunte le righe, salva ed esci. Ci sono due cartelle nella radice di Nginx, sites-available
e sites-enabled
. sites-available
memorizza le configurazioni del sito. sites-enabled
contiene collegamenti simbolici ai file di configurazione in sites-available
. In questo modo, abilitare e disabilitare i siti è semplice come creare e rimuovere collegamenti simbolici.
Usando il tuo editor di testo, crea un file in /etc/nginx/sites-available/yoursite
. Questo file conterrà qualsiasi configurazione specifica del sito per il tuo nuovo sito Web PHP 7. L'esempio seguente contiene un'analisi nei commenti di ciò che fa ogni riga. È una configurazione abbastanza semplice, ma farà il suo lavoro.
server { #Nginx should listen on port 80 for requests to yoursite.com listen 80; server_name yoursite.com; #Create access and error logs in /var/log/nginx access_log /var/log/nginx/yoursite.access_log main; error_log /var/log/nginx/yoursite.error_log info; #Nginx should look in /var/www/yoursite for your website root /var/www/yoursite/; #The homepage of your website is a file called index.php index index.php; #Specifies that Nginx is looking for .php files location ~ \.php$ { #If a file isn’t found, 404 try_files $uri =404; #Include Nginx’s fastcgi configuration include /etc/nginx/fastcgi.conf; #Look for the FastCGI Process Manager at this location fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
Una volta creato il file, salvalo e spostati in sites-enabled
directory. Da lì, crea il collegamento simbolico al file che hai appena creato.
# cd /etc/nginx/sites-enabled # sudo ln -s /etc/nginx/sites-available/yoursite
Sicurezza PHP.ini
La sicurezza è un obiettivo in movimento ed è impossibile stare al passo con ogni possibile minaccia, ma è sempre una buona idea bloccare il più possibile qualsiasi nuova installazione di server. Ci sono alcune semplici modifiche che possono essere apportate a php.ini
file di configurazione che aiuterà a proteggere PHP. Con il tuo editor di testo, apri /etc/php/7.0/fpm/php.ini
. Questo è un file enorme. Ancora una volta, Vim o qualcosa con una funzione di ricerca è probabilmente il migliore.
Per prima cosa trova disable_functions
e aggiungi phpinfo,system,mail,exec
alla fine della stringa di funzioni che sono già presenti. Quindi trova file_uploads
e impostalo su Off
. Quindi, trova sql.safe_mode
e attivalo On
. Infine, trova allow_url_fopen
e impostalo su Off
. Prima di chiudere il file, aggiungi un'altra riga alla fine.
register_globals = Off
Al termine, salva e chiudi. Riavvia il server e dovrebbe essere pronto per l'uso.
# sudo systemctl restart php7.0-fpm # sudo systemctl restart nginx
Dove andare dopo
Così com'è, il server Ubuntu dovrebbe essere in grado di eseguire la maggior parte dei siti Web PHP. Tutti i file PHP inseriti in /var/www/yoursite
sarà eseguito dal server. Cercherà il index.php
prima il file e il sito Web può diramarsi da lì. Naturalmente, c'è molto di più che può essere fatto per configurare PHP e Nginx per velocità, sicurezza e qualsiasi situazione di caso speciale, ma ora hai un punto di partenza forte.