Installazione Nginx · 5 min read · Jan 31, 2026

Installazione di Nginx Con PHP5 (E PHP-FPM) E Supporto MySQL Su CentOS 6.2 - Pagina 2

5 Installazione di PHP5

Possiamo far funzionare PHP5 in nginx tramite PHP-FPM (PHP-FPM (FastCGI Process Manager) è un’implementazione alternativa di PHP FastCGI con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, in particolare siti più trafficati). Possiamo installare php-fpm insieme a php-cli e alcuni moduli PHP5 come php-mysql di cui hai bisogno se vuoi utilizzare MySQL dai tuoi script PHP come segue:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

Poi apri /etc/php.ini e imposta cgi.fix_pathinfo=0:

vi /etc/php.ini

| [...] ; cgi.fix_pathinfo fornisce supporto *reale* per PATH_INFO/PATH_TRANSLATED per CGI. Il comportamento precedente di PHP era di impostare PATH_TRANSLATED su SCRIPT_FILENAME e di non comprendere cosa sia PATH_INFO. Per ulteriori informazioni su PATH_INFO, vedere le specifiche cgi. Impostare questo su 1 farà sì che PHP CGI corregga i suoi percorsi per conformarsi alla specifica. Un'impostazione di zero fa sì che PHP si comporti come prima. Il valore predefinito è 1. Dovresti correggere i tuoi script per utilizzare SCRIPT_FILENAME piuttosto che PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

(Per favore leggi http://wiki.nginx.org/Pitfalls per scoprire perché dovresti farlo.)

In aggiunta a ciò, per evitare errori come

[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): Non è sicuro fare affidamento sulle impostazioni del fuso orario del sistema. È *richiesto* utilizzare l'impostazione date.timezone o la funzione date_default_timezone_set(). Nel caso tu abbia utilizzato uno di questi metodi e stai ancora ricevendo questo avviso, è molto probabile che tu abbia scritto male l'identificatore del fuso orario. Abbiamo selezionato 'Europe/Berlin' per 'CEST/2.0/DST' invece in /usr/share/nginx/html/info.php alla riga 2

… in /var/log/php-fpm/www-error.log quando chiami uno script PHP nel tuo browser, dovresti impostare date.timezone in /etc/php.ini:

| [...] [Date] ; Definisce il fuso orario predefinito utilizzato dalle funzioni di data ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |

Puoi scoprire il fuso orario corretto per il tuo sistema eseguendo:

cat /etc/sysconfig/clock
[root@server1 nginx]# cat /etc/sysconfig/clock  
ZONE="Europe/Berlin"  
[root@server1 nginx]#

Successivamente crea i collegamenti di avvio del sistema per php-fpm e avvialo:

chkconfig --levels 235 php-fpm on  
/etc/init.d/php-fpm start

PHP-FPM è un processo daemon (con lo script di init /etc/init.d/php-fpm) che esegue un server FastCGI sulla porta 9000.

6 Configurazione di nginx

La configurazione di nginx si trova in /etc/nginx/nginx.conf che apriamo ora:

vi /etc/nginx/nginx.conf

La configurazione è facile da capire (puoi saperne di più qui: http://wiki.codemongers.com/NginxFullExample e qui: http://wiki.codemongers.com/NginxFullExample2)

Per prima cosa (questo è facoltativo) puoi aumentare il numero di processi worker e impostare il keepalive_timeout a un valore ragionevole:

| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |

Gli host virtuali sono definiti nei contenitori server {}. Modifichiamo il vhost predefinito (anche in /etc/nginx/nginx.conf) come segue:

| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # reindirizza le pagine di errore del server alla pagina statica /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy gli script PHP ad Apache in ascolto su 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # passa gli script PHP al server FastCGI in ascolto su 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # nega l'accesso ai file .htaccess, se la root del documento di Apache # coincide con quella di nginx # location ~ /\.ht { deny all; } } [...] |

servername ; rende questo un vhost catchall predefinito (ovviamente, puoi anche specificare un nome host qui come www.example.com).

Nella parte location / ho aggiunto index.php alla riga index. root /usr/share/nginx/html; significa che la root del documento è la directory /usr/share/nginx/html.

La parte importante per PHP è la stanza location ~ .php$ {}. Decommentala per abilitarla. Cambia la riga root nella root del documento del sito web (ad esempio root /usr/share/nginx/html;). Assicurati di cambiare la riga fastcgi_param in fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; perché altrimenti l’interprete PHP non troverà lo script PHP che chiami nel tuo browser ( $document_root si traduce in /usr/share/nginx/html perché è quello che abbiamo impostato come nostra root del documento).

PHP-FPM ascolta sulla porta 9000 su 127.0.0.1 per impostazione predefinita, quindi diciamo a nginx di connettersi a 127.0.0.1:9000 con la riga fastcgi_pass 127.0.0.1:9000;. È anche possibile far utilizzare a PHP-FPM un socket Unix - descriverò questo nel capitolo 7.

Ora salva il file e ricarica nginx:

/etc/init.d/nginx reload

Ora crea il seguente file PHP nella root del documento /usr/share/nginx/html…

vi /usr/share/nginx/html/info.php

| |

Ora chiamiamo quel file in un browser (ad esempio http://192.168.0.100/info.php):

Come puoi vedere, PHP5 sta funzionando, e sta funzionando tramite FPM/FastCGI, come mostrato nella riga Server API. Se scorri più in basso, vedrai tutti i moduli che sono già abilitati in PHP5, incluso il modulo MySQL:

7 Far Utilizzare a PHP-FPM un Socket Unix

Per impostazione predefinita PHP-FPM ascolta sulla porta 9000 su 127.0.0.1. È anche possibile far utilizzare a PHP-FPM un socket Unix che evita l’overhead TCP. Per fare ciò, apri /etc/php-fpm.d/www.conf…

vi /etc/php-fpm.d/www.conf

… e fai in modo che la riga listen appaia come segue:

| [...] ;listen = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |

Poi riavvia PHP-FPM:

/etc/init.d/php-fpm restart

Successivamente, passa attraverso la tua configurazione nginx e tutti i tuoi vhosts e cambia la riga fastcgi_pass 127.0.0.1:9000; in fastcgi_pass unix:/tmp/php5-fpm.sock;, ad esempio in questo modo:

vi /etc/nginx/nginx.conf

| [...] location ~ \.php$ { try_files $uri =404; root /usr/share/nginx/html; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [...] |

Infine ricarica nginx:

/etc/init.d/nginx reload

8 Link

Informazioni sull’autore

Falko Timme è il proprietario di Timme Hosting (hosting web nginx ultra-veloce). È il principale manutentore di HowtoForge (dal 2005) e uno dei core developer di ISPConfig (dal 2000). Ha anche contribuito al libro O’Reilly “Linux System Administration”.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.