Installazione Server · 6 min read · Oct 22, 2025

Installazione di Nginx Con PHP5 (E PHP-FPM) E Supporto MySQL Su CentOS 6.3

Installazione di Nginx Con PHP5 (E PHP-FPM) E Supporto MySQL Su CentOS 6.3

Versione 1.0
Autore: Falko Timme
Seguimi su Twitter

Nginx (pronunciato “engine x”) è un server HTTP gratuito, open-source e ad alte prestazioni. Nginx è noto per la sua stabilità, il ricco set di funzionalità, la configurazione semplice e il basso consumo di risorse. Questo tutorial mostra come puoi installare Nginx su un server CentOS 6.3 con supporto PHP5 (tramite PHP-FPM) e supporto MySQL.

Non fornisco alcuna garanzia che questo funzionerà per te!

1 Nota Preliminare

In questo tutorial utilizzo il nome host server1.example.com con l’indirizzo IP 192.168.0.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato.

2 Abilitare Repository Aggiuntivi

php-fpm non è disponibile nei repository ufficiali di CentOS, ma nel repository Remi RPM che dipende dal repository EPEL; possiamo abilitare entrambi i repository come segue:

rpm --import https://fedoraproject.org/static/0608B895.txt   
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi  
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install yum-priorities

Modifica /etc/yum.repos.d/epel.repo…

vi /etc/yum.repos.d/epel.repo

… e aggiungi la riga priority=10 alla sezione [epel]:

| [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |

Poi fai lo stesso per la sezione [remi] in /etc/yum.repos.d/remi.repo, oltre a cambiare enabled in 1:

vi /etc/yum.repos.d/remi.repo

| [remi] name=Les RPM de remi pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi |

3 Installazione di MySQL 5

Prima installiamo MySQL 5 in questo modo:

yum install mysql mysql-server

Poi creiamo i collegamenti di avvio del sistema per MySQL (in modo che MySQL si avvii automaticamente ogni volta che il sistema si avvia) e avviamo il server MySQL:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start

Ora controlla che la rete sia abilitata. Esegui

netstat -tap | grep mysql

Dovrebbe mostrare qualcosa di simile:

[root@server1 ~]# netstat -tap | grep mysql  
tcp        0      0 *:mysql                     *:*                     LISTEN      1799/mysqld  
[root@server1 ~]#

Se non lo fa, modifica /etc/my.cnf e commenta l’opzione skip-networking:

vi /etc/my.cnf

| [...] #skip-networking [...] |

e riavvia il tuo server MySQL:

/etc/init.d/mysqld restart

Esegui

mysql_secure_installation

per impostare una password per l’utente root (altrimenti chiunque può accedere al tuo database MySQL!):

[root@server1 ~]# mysql_secure_installation

NOTA: E’ RACCOMANDATO ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT PER TUTTI I SERVER MySQL IN USO IN PRODUZIONE! PER FAVORE LEGGI ATTENTAMENTE OGNI PASSO!

Per accedere a MySQL per metterlo in sicurezza, avremo bisogno della password attuale per l’utente root. Se hai appena installato MySQL e non hai ancora impostato la password per root, la password sarà vuota, quindi dovresti semplicemente premere invio qui.

Inserisci la password attuale per root (premi invio per nessuna): <– INVIO
OK, password utilizzata con successo, procedendo…

Impostare la password per root garantisce che nessuno possa accedere all’utente root di MySQL senza la corretta autorizzazione.

Impostare la password per root? [Y/n] <– INVIO
Nuova password: <– yourrootsqlpassword
Re-inserisci la nuova password: <– yourrootsqlpassword
Password aggiornata con successo!
Ricaricamento delle tabelle di privilegio..
… Successo!

Per impostazione predefinita, un’installazione di MySQL ha un utente anonimo, che consente a chiunque di accedere a MySQL senza dover avere un account utente creato per loro. Questo è inteso solo per testare e per rendere l’installazione un po’ più fluida. Dovresti rimuoverli prima di passare a un ambiente di produzione.

Rimuovere gli utenti anonimi? [Y/n] <– INVIO
… Successo!

Normalmente, root dovrebbe essere autorizzato a connettersi solo da ‘localhost’. Questo garantisce che qualcuno non possa indovinare la password di root dalla rete.

Negare l’accesso remoto a root? [Y/n] <– INVIO
… Successo!

Per impostazione predefinita, MySQL viene fornito con un database chiamato ‘test’ a cui chiunque può accedere. Questo è anche inteso solo per testare e dovrebbe essere rimosso prima di passare a un ambiente di produzione.

Rimuovere il database di test e l’accesso ad esso? [Y/n] <– INVIO

  • Eliminazione del database di test…
    … Successo!
  • Rimozione dei privilegi sul database di test…
    … Successo!

Ricaricare le tabelle di privilegio garantirà che tutte le modifiche apportate finora abbiano effetto immediato.

Ricaricare le tabelle di privilegio ora? [Y/n] <– INVIO
… Successo!

Pulizia…

Tutto fatto! Se hai completato tutti i passaggi sopra, la tua installazione di MySQL dovrebbe ora essere sicura.

Grazie per aver utilizzato MySQL!

[root@server1 ~]#

4 Installazione di Nginx

Nginx è disponibile come pacchetto per CentOS 6.3 (da EPEL) che possiamo installare come segue:

yum install nginx

Poi creiamo i collegamenti di avvio del sistema per nginx e lo avviamo:

chkconfig --levels 235 nginx on  
/etc/init.d/nginx start

Digita l’indirizzo IP o il nome host del tuo server web in un browser (ad es. http://192.168.0.100), e dovresti vedere la pagina di benvenuto di nginx:

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, specialmente 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-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

APC è un cache opcode PHP gratuito e open per la memorizzazione nella cache e l’ottimizzazione del codice intermedio PHP. È simile ad altri cache opcode PHP, come eAccelerator e Xcache. È fortemente raccomandato avere uno di questi installato per velocizzare la tua pagina PHP.

APC può essere installato come segue:

yum install php-pecl-apc

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 impostare PATH_TRANSLATED su SCRIPT_FILENAME, e non comprendere cosa sia PATH_INFO. Per ulteriori informazioni su PATH_INFO, vedere le specifiche cgi. Impostare questo a 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. Devi *obbligatoriamente* 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.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.