Server Setup · 11 min read · Jan 10, 2026

Il Server Perfetto - Ubuntu 14.10 (nginx, BIND, Dovecot, ISPConfig 3) - Pagina 2

8. Installa Nginx, PHP5 (PHP-FPM) e Fcgiwrap

Nginx è disponibile come pacchetto per Ubuntu che possiamo installare come segue:

apt-get install nginx

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

service apache2 stop

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

update-rc.d -f apache2 remove

Avvia nginx dopo:

service nginx start

(Se sia Apache2 che nginx sono installati, l’installer di ISPConfig 3 ti chiederà quale vuoi utilizzare - 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 siti più trafficati) che installiamo come segue:

apt-get install php5-fpm

PHP-FPM è un processo daemon (con lo script di init /etc/init.d/php5-fpm) che esegue un server FastCGI sul socket /var/run/php5-fpm.sock.

Per ottenere il supporto MySQL in PHP, possiamo installare il pacchetto php5-mysql. È una buona idea installare anche alcuni altri moduli PHP5 poiché potresti averne bisogno per le tue applicazioni. Puoi cercare i moduli PHP5 disponibili in questo modo:

apt-cache search php5

Scegli quelli di cui hai bisogno e installali in questo modo:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl

APC è un cache opcode PHP gratuito e open source 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:

apt-get install php-apc

Successivamente apri /etc/php5/fpm/php.ini…

nano /etc/php5/fpm/php.ini

… e imposta cgi.fix_pathinfo=0 e il tuo fuso orario:

[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...]

(Puoi trovare tutti i fusi orari disponibili nelle directory /usr/share/zoneinfo e nelle sue sottodirectory.)

Ora ricarica PHP-FPM:

service php5-fpm reload

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.

Installa il pacchetto fcgiwrap:

apt-get install fcgiwrap

Dopo l’installazione, il daemon fcgiwrap dovrebbe già essere avviato; il suo socket è /var/run/fcgiwrap.socket. Se non è in esecuzione, puoi utilizzare lo script /etc/init.d/fcgiwrap per avviarlo.

Questo è tutto! Ora, quando crei un vhost nginx, ISPConfig si occuperà della corretta configurazione del vhost.

8.1 Versioni PHP Aggiuntive

A partire da ISPConfig 3.0.5, è possibile avere più versioni di PHP su un server (selezionabili tramite ISPConfig) che possono essere eseguite tramite PHP-FPM. Per sapere come costruire versioni PHP aggiuntive (PHP-FPM) e come configurare ISPConfig, controlla questo tutorial: Come Usare Più Versioni PHP (PHP-FPM & FastCGI) Con ISPConfig 3 (Ubuntu 12.10) (funziona anche per Ubuntu 14.10).

8.2 Installa phpMyAdmin

Installa phpMyAdmin come segue:

apt-get install phpmyadmin

Vedrai le seguenti domande:

Server web da riconfigurare automaticamente: <– seleziona nessuno (perché solo apache2 e lighttpd sono disponibili come opzioni)
Configurare il database per phpmyadmin con dbconfig-common? <– No

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

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

Il vhost delle app ISPConfig sulla porta 8081 per nginx viene fornito 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 usare 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 vhosts). 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 unix:/var/run/php5-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       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 unix:/var/run/php5-fpm.sock;
                       fastcgi_param HTTPS on; # <-- aggiungi questa riga
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       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 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 include) che determina se il visitatore utilizza http o https e imposta la variabile $fastcgi_https (che utilizzeremo nella nostra configurazione di phpMyAdmin) di conseguenza:

nano /etc/nginx/nginx.conf
[...]
http {
[...]
        ## Rileva quando viene utilizzato HTTPS
        map $scheme $fastcgi_https {
          default off;
          https on;

        }
[...]
}
[...]

Non dimenticare di ricaricare nginx dopo:

service nginx reload

Poi torna 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 unix:/var/run/php5-fpm.sock;
                       fastcgi_param HTTPS $fastcgi_https; # <-- aggiungi questa riga
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       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;
        }

9. Installa Mailman

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

apt-get install mailman

Seleziona almeno una lingua, ad esempio:

Lingue da supportare: <– en (Inglese)
Lista dei siti mancanti <– Ok

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

newlist mailman

root@server1:~# 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: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

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

root@server1:~#

Apri /etc/aliases dopo…

nano /etc/aliases

… e aggiungi le seguenti righe:

[...]
## lista di distribuzione mailman
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Esegui

newaliases

dopo e riavvia Postfix:

service postfix restart

Poi avvia il daemon Mailman:

service mailman start

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

Il vhost delle app ISPConfig sulla porta 8081 per nginx viene fornito con una configurazione di Mailman, quindi puoi usare http://server1.example.com:8081/cgi-bin/mailman/admin/ o http://server1.example.com:8081/cgi-bin/mailman/listinfo/ per accedere a Mailman.

Se vuoi usare Mailman 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 vhosts). 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 {
               root /usr/lib/;
               fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
               include /etc/nginx/fastcgi_params;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
               fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
               fastcgi_intercept_errors on;
               fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /images/mailman {
               alias /usr/share/images/mailman;
        }

        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.

10. Installa PureFTPd e Quota

PureFTPd e quota possono essere installati con il seguente comando:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Modifica il file /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… e assicurati che la modalità di avvio sia impostata su standalone e imposta VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Ora configuriamo PureFTPd per consentire sessioni FTP e TLS. FTP è un protocollo molto insicuro perché tutte le password e tutti i dati vengono trasferiti in chiaro. Utilizzando TLS, l’intera comunicazione può essere crittografata, rendendo così FTP molto più sicuro.

Se vuoi consentire sessioni FTP e TLS, esegui

echo 1 > /etc/pure-ftpd/conf/TLS

Per utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:

mkdir -p /etc/ssl/private/

Dopo, possiamo generare il certificato SSL come segue:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Nome del Paese (codice di 2 lettere) [AU]: <– Inserisci il tuo Nome del Paese (ad esempio, “DE”).
Nome dello Stato o della Provincia (nome completo) [Some-State]: <– Inserisci il tuo Nome dello Stato o della Provincia.
Nome della Località (ad es., città) []: <– Inserisci la tua Città.
Nome dell’Organizzazione (ad es., azienda) [Internet Widgits Pty Ltd]: <– Inserisci il tuo Nome dell’Organizzazione (ad es., il nome della tua azienda).
Nome dell’Unità Organizzativa (ad es., sezione) []: <– Inserisci il tuo Nome dell’Unità Organizzativa (ad es. “Reparto IT”).
Nome Comune (ad es., IL TUO nome) []: <– Inserisci il Nome di Dominio Completo del sistema (ad es. “server1.example.com”).
Indirizzo Email []: <– Inserisci il tuo Indirizzo Email.

Cambia i permessi del certificato SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Poi riavvia PureFTPd:

service pure-ftpd-mysql restart

Modifica /etc/fstab. Il mio appare così (ho aggiunto,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 alla partizione con il punto di montaggio /):

nano /etc/fstab
# /etc/fstab: informazioni statiche sul file system.
#
# Usa 'blkid' per stampare l'identificatore univoco universale per un
# dispositivo; questo può essere utilizzato con UUID= come un modo più robusto per nominare dispositivi
# che funziona anche se i dischi vengono aggiunti e rimossi. Vedi fstab(5).
#
#                
/dev/mapper/server1--vg-root /               ext4    errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0       1
# /boot era su /dev/sda1 durante l'installazione
UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot           ext2    defaults        0       2
/dev/mapper/server1--vg-swap_1 none            swap    sw              0       0

Per abilitare la quota, esegui questi comandi:

mount -o remount /
quotacheck -avugm  
quotaon -avug

11. Installa il Server DNS BIND

BIND può essere installato come segue:

apt-get install bind9 dnsutils

12. Installa Vlogger, Webalizer e AWstats

Vlogger, webalizer e AWstats possono essere installati come segue:

apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

Apri /etc/cron.d/awstats dopo…

nano /etc/cron.d/awstats

… e commenta tutto in quel file:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Genera report statici:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

13. Installa Jailkit

Jailkit è necessario solo se vuoi chrootare gli utenti SSH. Può essere installato come segue (importante: Jailkit deve essere installato prima di ISPConfig - non può essere installato dopo!):

apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz  
tar xvfz jailkit-2.17.tar.gz  
cd jailkit-2.17  
./debian/rules binary

Ora puoi installare il pacchetto Jailkit.deb come segue:

cd ..  
dpkg -i jailkit_2.17-1_*.deb  
rm -rf jailkit-2.17*

14. Installa fail2ban

Questo è facoltativo ma raccomandato, perché il monitor di ISPConfig cerca di mostrare il log:

apt-get install fail2ban

Per far sì che fail2ban monitori PureFTPd e Dovecot, crea il file /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled  = true
port     = smtp
filter   = postfix-sasl
logpath  = /var/log/mail.log
maxretry = 3

Poi crea i seguenti due file di filtro:

nano /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =
nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Aggiungi la riga ignoreregex mancante nel file postfix-sasl: echo “ignoreregex =” >> /etc/fail2ban/filter.d/postfix-sasl.conf

Riavvia fail2ban dopo:

service fail2ban restart
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.