Server Setup · 8 min read · Nov 11, 2025

Il Server Perfetto - CentOS 6.1 x86_64 Con nginx [ISPConfig 3] - Pagina 5

15 Installa Nginx, PHP5 (PHP-FPM) e Fcgiwrap

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

yum install nginx

Se Apache2 è già installato sul sistema, fermalo ora…

/etc/init.d/httpd stop

… e rimuovi i collegamenti di avvio del sistema di Apache:

chkconfig --del httpd

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

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

(Se sia Apache2 che nginx sono installati, l’installer di ISPConfig 3 ti chiederà quale vuoi usare - rispondi nginx in questo caso. Se solo uno di questi due è installato, ISPConfig farà la configurazione necessaria automaticamente.)

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 per siti più trafficati). Possiamo installare php-fpm insieme a php-cli e alcuni moduli PHP5 come php-mysql di cui hai bisogno se vuoi usare 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-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

Successivamente apriamo /etc/php.ini…

vi /etc/php.ini

… e cambiamo la segnalazione degli errori (in modo che le notifiche non vengano più mostrate) e decommentiamo cgi.fix_pathinfo=1:

| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...] |

Imposta anche 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 comportare PHP come prima. Il valore predefinito è 1. Dovresti correggere i tuoi script per usare 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 fare questo.)

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. È *obbligatorio* utilizzare l'impostazione date.timezone o la funzione date_default_timezone_set(). Nel caso tu abbia usato 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 tmp]# cat /etc/sysconfig/clock
ZONE=”Europe/Berlin”
[root@server1 tmp]#

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.

Per ottenere il supporto CGI in nginx, installiamo Fcgiwrap.

Fcgiwrap è un wrapper CGI che dovrebbe funzionare anche per script CGI complessi e può essere utilizzato per ambienti di hosting condiviso perché consente a ciascun vhost di utilizzare la propria directory cgi-bin.

Poiché non esiste un pacchetto fcgiwrap per CentOS 6.1, dobbiamo costruirlo noi stessi. Prima installiamo alcune dipendenze:

yum install fcgi-devel

Ora possiamo costruire fcgiwrap come segue:

cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install

Questo installa fcgiwrap in /usr/local/sbin/fcgiwrap.

Successivamente installiamo il pacchetto spawn-fcgi che ci consente di eseguire fcgiwrap come un daemon:

yum install spawn-fcgi

Apri /etc/sysconfig/spawn-fcgi…

vi /etc/sysconfig/spawn-fcgi

… e modifica il file come segue:

| # Devi impostare alcune opzioni di lavoro prima che il servizio "spawn-fcgi" funzioni. # Se SOCKET punta a un file, questo file viene pulito dallo script di init. # # Vedi spawn-fcgi(1) per tutte le opzioni possibili. # # Esempio : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=apache FCGI_GROUP=apache FCGI_EXTRA_OPTIONS="-M 0770" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |

Ora aggiungi l’utente nginx al gruppo apache:

usermod -a -G apache nginx

Crea i collegamenti di avvio del sistema per spawn-fcgi…

chkconfig --levels 235 spawn-fcgi on

… e avvialo come segue:

/etc/init.d/spawn-fcgi start

Dovresti ora trovare il socket fcgiwrap in /var/run/fcgiwrap.socket, di proprietà dell’utente e del gruppo apache (alcuni script, ad esempio Mailman, si aspettano di essere eseguiti dall’utente/gruppo apache, ecco perché non eseguiamo spawn-fcgi come utente/gruppo nginx, ma invece aggiungiamo nginx al gruppo apache).

16 Installa phpMyAdmin

Successivamente installiamo phpMyAdmin:

yum install phpmyadmin

Successivamente cambiamo l’autenticazione in phpMyAdmin da cookie a http:

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* Tipo di autenticazione */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

Ora puoi trovare phpMyAdmin nella directory /usr/share/phpmyadmin/.

Dopo aver installato ISPConfig 3, puoi accedere a phpMyAdmin come segue:

Le app ISPConfig vhost sulla porta 8081 per nginx vengono fornite con una configurazione di phpMyAdmin, quindi puoi usare http://server1.example.com:8081/phpmyadmin o http://server1.example.com:8081/phpMyAdmin per accedere a phpMyAdmin.

Se vuoi usare un alias /phpmyadmin o /phpMyAdmin che puoi utilizzare dai tuoi siti web, questo è un po’ più complicato rispetto ad Apache perché nginx non ha alias globali (cioè, alias che possono essere definiti per tutti i vhost). Pertanto, devi definire questi alias per ogni vhost da cui vuoi accedere a phpMyAdmin.

Per fare ciò, incolla il seguente codice nel campo Direttive nginx nella scheda Opzioni del sito web in ISPConfig:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

Se usi http s invece di http per il tuo vhost, dovresti aggiungere la riga fastcgi_param HTTPS on; alla tua configurazione di phpMyAdmin in questo modo:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- aggiungi questa riga fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

Se utilizzi sia http che https per il tuo vhost, devi aggiungere la seguente sezione alla sezione http {} in /etc/nginx/nginx.conf (prima di qualsiasi riga di inclusione) che determina se il visitatore utilizza http o https e imposta la variabile $fastcgi_https (che utilizzeremo nella nostra configurazione di phpMyAdmin) di conseguenza:

vi /etc/nginx/nginx.conf

| [...] http { [...] ## Rileva quando viene utilizzato HTTPS map $scheme $fastcgi_https { default off; https on; } [...] } [...] |

Non dimenticare di ricaricare nginx dopo:

/etc/init.d/nginx reload 

Poi vai di nuovo al campo Direttive nginx, e invece di fastcgi_param HTTPS on; aggiungi la riga fastcgi_param HTTPS $fastcgi_https; in modo da poter usare phpMyAdmin per entrambe le richieste http e https:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- aggiungi questa riga fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

17 Installa Mailman

Dalla versione 3.0.4, ISPConfig consente anche di gestire (creare/modificare/eliminare) le liste di distribuzione Mailman. Se desideri utilizzare questa funzionalità, installa Mailman come segue:

yum install mailman

Prima di poter avviare Mailman, deve essere creata una prima lista di distribuzione chiamata mailman:

/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Inserisci l’email della persona che gestisce la lista: <– indirizzo email dell’amministratore, ad esempio [email protected]
Password iniziale di mailman: <– password dell’amministratore per la lista mailman
Per completare la creazione della tua lista di distribuzione, devi modificare il tuo file /etc/aliases (o equivalente) aggiungendo le seguenti righe, e possibilmente eseguendo il programma newaliases:

lista di distribuzione mailman

mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Premi invio per notificare il proprietario di mailman… <– INVIO

[root@server1 tmp]#

Apri /etc/aliases dopo…

vi /etc/aliases

… e aggiungi le seguenti righe:

| [...] mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman" |

Esegui

newaliases

dopo e riavvia Postfix:

/etc/init.d/postfix restart

Crea i collegamenti di avvio del sistema per Mailman e avvialo:

chkconfig –levels 235 mailman on
/etc/init.d/mailman start

Ora dobbiamo creare questo symlink per far funzionare Mailman con ISPConfig:

cd /usr/lib/mailman/cgi-bin/
ln -s ./ mailman

Se desideri utilizzare Mailman dai tuoi siti web creati tramite ISPConfig, questo è un po’ più complicato rispetto ad Apache perché nginx non ha alias globali (cioè, alias che possono essere definiti per tutti i vhost). Pertanto, devi definire questi alias per ogni vhost da cui vuoi accedere a Mailman.

Per fare ciò, incolla il seguente codice nel campo Direttive nginx nella scheda Opzioni del sito web in ISPConfig:

| location /cgi-bin/mailman { alias /usr/lib/mailman/cgi-bin; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/mailman$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/lib/mailman$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/lib/mailman/icons; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } |

Questo definisce l’alias /cgi-bin/mailman/ per il tuo vhost, il che significa che puoi accedere all’interfaccia di amministrazione di Mailman per una lista su http:///cgi-bin/mailman/admin/, e la pagina web per gli utenti di una lista di distribuzione può essere trovata su http:///cgi-bin/mailman/listinfo/.

Sotto http:///pipermail puoi trovare gli archivi delle liste di distribuzione.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.