Installazione e configurazione di Nginx + PHP-fpm in Debian

Installazione e configurazione di Nginx + PHP-fpm in Debian

Leggi 9 minuti

Nginx è un server web rilasciato nel 2004. Questo server è facile da usare, ma nonostante ciò gestisce perfettamente un gran numero di connessioni. Questa caratteristica è dovuta alla sua architettura interna. Inizialmente, è stato creato come server per l'esecuzione di contenuti statici (il cosiddetto server di caching). A differenza di Apache, Nginx non dispone di un interprete integrato per gestire le richieste di contenuti dinamici.

Ciò richiede un'ulteriore interazione tra il server web e l'applicazione. Il gestore di processi PHP-FPM (FastCGI) risolve con successo questo problema. Il punto importante è che, lavorando con PHP, il raccoglitore Nginx + PHP-FPM si dimostra meno produttivo di Apache + php_mod.

Quindi, se il vostro server ha requisiti di alte prestazioni per PHP, è meglio considerare il bundle apache + php_mod. Un altro punto importante è che Nginx richiede uno sforzo maggiore per la configurazione rispetto ad Apache.

Questo articolo tratta l'installazione e la semplice configurazione del server Nginx in combinazione con il gestore di processi PHP-FPM in Debian 8. Tutte le operazioni sono eseguite con i privilegi dell'utente root.

Per prima cosa, è necessario effettuare un aggiornamento:

apt-get update

Quindi, installiamo Nginx:

apt-get -y install nginx

Dopo l'installazione, si procede a testare il server. Per farlo, basta aprire l'indirizzo del browser web del nostro server. Si aprirà il seguente contenuto:

Questa è la pagina standard del plug-in di Nginx. Il passo successivo è installare php5-fpm. È molto semplice:

apt-get -y installare php5-fpm

Successivamente, è necessario eseguire la configurazione. Innanzitutto, configurare il server Nginx. Il file di configurazione si trova in /etc/nginx/nginx.conf.

Aprire questo file. Noi usiamo l'editor di testo vi, ma voi potete usare qualsiasi altro editor che vi sia congeniale.

vi /etc/nginx/nginx.conf

Vediamo di capire un po' la struttura del file stesso. L'intero file è in qualche modo simile al codice del programma. Presenta delle direttive. Esse sono divise in due tipi:

  • Semplice - una stringa con operatori che terminano con il simbolo ";". Ad esempio: pid /run/nginx.pid;
  • Blocco - una direttiva contenente parametri aggiuntivi posti tra parentesi graffe {}.

Altre direttive possono essere impostate all'interno delle parentesi graffe. In questo caso, si chiamerà contesto e tutte le direttive che si trovano nel file di configurazione ma non sono tra parentesi graffe sono nel contesto globale o nel cosiddetto contesto principale.

Le stringhe contrassegnate dal simbolo # sono commenti e non vengono considerate nella configurazione.

Come si può vedere nel file c'è una direttiva:

include /etc/nginx/sites-enabled/*;

Questa direttiva dice che questo file di configurazione include tutti i file di configurazione della cartella /etc/nginx/sites-enabled/. Questa directory contiene essenzialmente i link simbolici alla configurazione degli host virtuali (essenzialmente i siti serviti sul server).

Ora dobbiamo configurare un host virtuale che sarà responsabile della nostra risorsa più semplice (sia essa test.net). Per prima cosa, creeremo una directory per lui. Creiamola con un comando:

mkdir -p /var/www/test.net/html

Ora creiamo un file index.html in questa directory con il seguente contenuto:

<html> <head> <title>Hello World</title> </head> <body> <h>Questa è una pagina di prova.</h> </body> </html>

Ora abbiamo il contenuto del sito, una pagina di tutto. Per questo sito, è necessario creare un host virtuale. Copiare il file predefinito per l'host virtuale:

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test.net

Quindi, aprirlo per modificarlo. La direttiva listen contiene opzioni per default_server. È possibile impostare un solo blocco con questo valore, il che significa che questo blocco servirà le query per le quali non è stato trovato nulla di più adatto. Pertanto le righe

listen 80 default_server; listen [::]:80 default_server;

devono essere rimosse da questo file. Successivamente, è necessario configurare la directory principale che contiene i contenuti del nostro sito. Per farlo, scriviamo la direttiva root come segue:

root /var/www/test.net/html;

La seguente direttiva index definisce i file da utilizzare come file di indice. L'ordine in cui i file vengono controllati corrisponde all'ordine del file di configurazione. Questa direttiva è scritta come segue:

index.html index.htm index.nginx-debian.html;

La seguente direttiva server_name specifica il nome del server. Come valori, vengono specificati il nome di dominio e l'alias quando il nome di dominio è specificato con il prefisso www.

nome_server test.net www.test.net;

Successivamente, è sufficiente specificare una direttiva location, che imposta la configurazione del sito in base al nome URI specificato nella richiesta. Nel nostro caso, sarà semplice:

location / { try_files $uri $uri/ =404; }

Ciò significa che prima verranno controllati i file, poi le directory e, se non viene trovato nulla di adatto, verrà restituito il messaggio Not Found (404).

Questo è tutto per quanto riguarda il file di configurazione. Il suo contenuto finale è il seguente:

#cat /etc/nginx/sites-available/test.net
server { root /var/www/test.net/html; index index.html index.htm index.nginx-debian.html; server_name test.net www.test.net; location / { try_files $uri $uri/ =404; } }

Tutte le altre direttive e i loro valori possono essere letti nella documentazione ufficiale di Nginx, che si trova qui http://nginx.org/en/docs/.

Ora abbiamo il contenuto del sito e il suo file di configurazione. Non resta che includerlo. Per farlo, creare un collegamento simbolico:

ln -s /etc/nginx/sites-available/test.net /etc/nginx/sites-enabled/

Riavviare il server per rendere effettive le modifiche:

/etc/init.d/nginx restart

Verifichiamo il funzionamento della risorsa creata.

Per aprire una pagina, potrebbe essere necessario aggiungere una riga al file hosts del computer da cui si sta effettuando la verifica:

xxx.xxx.xxx.xxx test.net

Где xxx.xxx.xxx.xxx - это IP-адрес сервера с установленным Nginx. Файл host, находится:

  • C:\Windows\System32\drivers\etc (в Win7);
  • /etc/hosts (в Debian).

Abbiamo installato Nginx e php5-fpm e abbiamo creato il sito più semplice. Il passo successivo è configurare PHP e applicarlo a Nginx.

Per prima cosa, creeremo una pagina con codice PHP sul nostro host virtuale. Creiamo il file /var/www/test.net/html/info.php come segue:

<?php phpinfo(); ?>

Ora apriamo questa pagina nel browser http://test.net/info.php

Ma che dire dell'esecuzione del codice PHP? Il codice PHP non viene eseguito perché l'interprete PHP non è configurato in Nginx. Procediamo in questo modo.

Apriamo il nostro file di configurazione /etc/nginx/sites-available/test.net. Aggiungere la seguente direttiva di blocco:

location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

Questa direttiva descrive i parametri per l'elaborazione delle query che vanno ai file PHP. Non descriverò ogni parametro e il suo valore. Queste informazioni possono essere trovate nella documentazione ufficiale qui http://nginx.org/en/docs/dirindex.html.

Ora il nostro file di configurazione è il seguente:

server { root /var/www/test.net/html; index index.html index.htm index.nginx-debian.html; server_name test.net www.test.net; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

Salvare le modifiche al file e riavviare il server Nginx.

/etc/init.d/nginx restart

Ora proviamo di nuovo ad aprire http://test.net/info.php. Il risultato dovrebbe essere il seguente:

Ho segnato le informazioni nella schermata che indicano l'uso del gestore FPM.

In effetti, la configurazione più semplice di Nginx + server PHP-FPM è completa. Il sito più semplice è stato creato e configurato per funzionare con PHP.

Si veda il seguente articolo sulla configurazione di PHP-FPM.