Installazione software · 7 min read · Jan 26, 2026
Installazione di Nginx Con Supporto PHP5 (E PHP-FPM) E MySQL Su Fedora 19
Nginx (pronunciato “engine x”) è un server HTTP gratuito, open-source e ad alte prestazioni. Nginx è noto per la sua stabilità, ricco set di funzionalità, configurazione semplice e basso consumo di risorse. Questo tutorial mostra come puoi installare Nginx su un server Fedora 19 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 Installazione di MySQL/MariaDB 5
Prima installiamo MySQL 5 in questo modo:
yum install mysql mysql-serverPoi 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:
systemctl enable mysqld.service
systemctl start mysqld.serviceOra controlla che la rete sia abilitata. Esegui
netstat -tap | grep mysqlDovrebbe mostrare qualcosa di simile:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 1116/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:
systemctl restart mysqld.serviceEsegui
mysql_secure_installationper impostare una password per l’utente root (altrimenti chiunque può accedere al tuo database MySQL!):
[root@server1 ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: E’ RACCOMANDATO ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT PER TUTTI I SERVER MariaDB IN USO IN PRODUZIONE! PER FAVORE LEGGI OGNI PASSO ATTENTAMENTE!
Per accedere a MariaDB per metterlo in sicurezza, avremo bisogno della password attuale per l’utente root. Se hai appena installato MariaDB e non hai ancora impostato la password di 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 di root? [Y/n] <– INVIO
Nuova password: <– yourrootsqlpassword
Reinserisci la nuova password: <– yourrootsqlpassword
Password aggiornata con successo!
Ricaricamento delle tabelle dei privilegi..
… Successo!
Per impostazione predefinita, un’installazione di MariaDB ha un utente anonimo, consentendo a chiunque di accedere a MariaDB 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, MariaDB 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 dei privilegi garantirà che tutte le modifiche apportate finora abbiano effetto immediato.
Ricaricare le tabelle dei privilegi ora? [Y/n] <– INVIO
… Successo!
Pulizia…
Tutto fatto! Se hai completato tutti i passaggi sopra, la tua installazione di MariaDB dovrebbe ora essere sicura.
Grazie per aver utilizzato MariaDB!
[root@server1 ~]#
3 Installazione di Nginx
Nginx è disponibile come pacchetto per Fedora 19 che possiamo installare come segue:
yum install nginxPoi creiamo i collegamenti di avvio del sistema per nginx e lo avviamo:
systemctl enable nginx.service
systemctl start nginx.serviceDigita 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:

4 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). C’è un pacchetto php-fpm nei repository ufficiali di Fedora 19, quindi possiamo installare php-fpm insieme a php-cli e alcuni moduli PHP5 come php-mysqlnd di cui hai bisogno se vuoi utilizzare MySQL dai tuoi script PHP:
yum install php-fpm php-cli php-mysqlnd php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidyZend OPcache è 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 APC e Xcache. È fortemente consigliato avere uno di questi installato per velocizzare la tua pagina PHP. Poiché Zend OPcache è ora ufficialmente incluso in PHP 5.5, lo usiamo invece di altri cache opcode.
Zend OPcache può essere installato come segue:
yum install php-opcachePer evitare errori come
[13-Nov-2011 22:13:16] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /usr/share/nginx/html/info.php on line 2… in /var/log/php-fpm/www-error.log quando chiami uno script PHP nel tuo browser, dovresti aprire /etc/php.ini e impostare date.timezone:
vi /etc/php.ini[...]
[Date]
; Definisce il fuso orario predefinito utilizzato dalle funzioni di data
; http://php.net/date.timezone
date.timezone = "Europe/Berlin"
[...] Successivamente crea i collegamenti di avvio del sistema per php-fpm e avvialo:
systemctl enable php-fpm.service
systemctl start php-fpm.servicePHP-FPM è un processo daemon che esegue un server FastCGI sulla porta 9000.
5 Configurazione di nginx
La configurazione di nginx si trova in /etc/nginx/nginx.conf che apriamo ora:
vi /etc/nginx/nginx.confLa configurazione è facile da capire (puoi saperne di più qui: http://wiki.codemongers.com/NginxFullExample e qui: http://wiki.codemongers.com/NginxFullExample2)
Prima (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 {}. L’host virtuale predefinito è definito più in basso nel file /etc/nginx/nginx.conf - modifichiamolo come segue:
vi /etc/nginx/nginx.conf[...]
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
# reindirizza le pagine di errore del server alla pagina statica /40x.html
#
error_page 404 /404.html;
location = /40x.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$ {
root /usr/share/nginx/html;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
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 host virtuale 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 st stanza location ~ .php$ {}. Decommentala per abilitarla. Cambia la riga root nella root del documento del sito web (ad es. 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.
Si prega di notare che ho aggiunto la riga try_files $uri =404; per prevenire exploit zero-day (vedi http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP e http://forum.nginx.org/read.php?2,88845,page=3). In alternativa, se non vuoi utilizzare la riga try_files $uri =404;, puoi impostare cgi.fix_pathinfo = 0; in /etc/php5/fpm/php.ini (non dimenticare di ricaricare PHP-FPM dopo).
Ora salva il file e ricarica nginx:
systemctl reload nginx.serviceOra crea il seguente file PHP nella root del documento /usr/share/nginx/html…
vi /usr/share/nginx/html/info.phpOra chiamiamo quel file in un browser (ad es. http://192.168.0.100/info.php):

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

6 Link
- nginx: http://nginx.org/
- wiki di nginx: http://wiki.nginx.org/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Fedora: http://fedoraproject.org/
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.