Server Setup · 11 min read · Jan 05, 2026
Il Server Perfetto - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1) - Pagina 2
10 Installa Nginx, PHP (PHP-FPM) e Fcgiwrap
Nginx è disponibile come pacchetto per Debian che possiamo installare come segue:
apt-get install nginxSe Apache2 è già installato sul sistema, fermalo ora…
service apache2 stopIl messaggio “ Impossibile fermare apache2.service: Unità apache2.service non caricata. “ va bene e non indica un errore.
… e rimuovi i collegamenti di avvio del sistema di Apache:
systemctl disable apache2Avvia nginx successivamente:
service nginx start(Se sia Apache2 che nginx sono installati, l’installatore di ISPConfig 3 ti chiederà quale vuoi utilizzare - rispondi nginx in questo caso. Se solo uno di questi due è installato, ISPConfig eseguirà automaticamente la configurazione necessaria.)
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-fpmPHP-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 php5Scegli 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-memcached php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcachedAPC è 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 consigliato avere uno di questi installato per accelerare la tua pagina PHP.
APC può essere installato come segue:
apt-get install php-apcSuccessivamente 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 reloadPer 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 condivisi perché consente a ciascun vhost di utilizzare la propria directory cgi-bin.
Installa il pacchetto fcgiwrap:
apt-get install fcgiwrapDopo l’installazione, il daemon fcgiwrap dovrebbe già essere avviato; il suo socket è /var/run/fcgiwrap.socket. Se non è in esecuzione, puoi utilizzare lo script fservice fcgiwrap per avviarlo.
Questo è tutto! Ora, quando crei un vhost nginx, ISPConfig si occuperà della corretta configurazione del vhost.
10.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 incl. PHP 7 e 7.1. Per sapere come costruire versioni PHP aggiuntive (PHP-FPM) e come configurare ISPConfig, controlla questo tutorial: Come installare PHP 7 (PHP-FPM & FastCGI) per ISPConfig 3 su Debian 8 (Jessie)
10.2 Installa phpMyAdmin
Installa phpMyAdmin come segue:
apt-get install phpmyadminNon selezionare un’opzione quando l’installatore chiede “ Server web da riconfigurare automaticamente: “ e premi ok.
Configurare il database per phpmyadmin con dbconfig-common? <-- sì
Password dell'utente amministrativo del database: <-- Inserisci la password root di MySQL
Password dell'applicazione MySQL per phpmyadmin: <-- Premi InvioOra 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 desideri utilizzare 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 desideri 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 utilizzi 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 utilizzi sia http che https per il tuo vhost, puoi utilizzare la variabile $https. Torna al campo Direttive nginx e invece di fastcgi_param HTTPS on; aggiungi la riga fastcgi_param HTTPS $https; in modo da poter utilizzare 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 $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;
}10.3 Installa HHVM (HipHop Virtual Machine)
In questo passaggio, installeremo HHVM dal suo repository ufficiale di Debian. Aggiungi il repository HHVM e importa la chiave.
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.listAggiorna l’elenco dei pacchetti:
sudo apt-get updatee installa HHVM:
sudo apt-get install hhvm11 Installa Let’s Encrypt
ISPConfig 3.1 ha supporto per l’autorità di certificazione SSL gratuita Let’s Encrypt. La funzione Let’s Encrypt ti consente di creare certificati SSL gratuiti per il tuo sito web direttamente da ISPConfig.
apt-get install python-certbot -t jessie-backports12 Installa Mailman
ISPConfig ti consente di gestire (creare/modificare/eliminare) le liste di distribuzione Mailman. Se desideri utilizzare questa funzione, installa Mailman come segue:
apt-get install mailmanSeleziona almeno una lingua, ad esempio:
Lingue da supportare: <– it (Italiano)
Lista siti mancanti <– Ok
Prima di poter avviare Mailman, deve essere creata una prima lista di distribuzione chiamata mailman:
newlist mailmanroot@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 successivamente…
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
newaliasessuccessivamente e riavvia Postfix:
service postfix restartQuindi avvia il daemon di Mailman:
service mailman startDopo 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/
Se desideri utilizzare 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 vhost). Pertanto, devi definire questi alias per ogni vhost da cui desideri 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://
Sotto http://
13 Installa PureFTPd e Quota
PureFTPd e quota possono essere installati con il seguente comando:
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatoolModifica 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 desideri consentire sessioni FTP e TLS, esegui
echo 1 > /etc/pure-ftpd/conf/TLSPer utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:
mkdir -p /etc/ssl/private/Successivamente, 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.pemNome del paese (codice di 2 lettere) [AU]: <– Inserisci il nome del tuo paese (ad es., “IT”).
Nome dello stato o della provincia (nome completo) [Some-State]: <– Inserisci il nome del tuo stato o provincia.
Nome della località (ad es., città) []: <– Inserisci la tua città.
Nome dell’organizzazione (ad es., azienda) [Internet Widgits Pty Ltd]: <– Inserisci il nome della tua organizzazione (ad es., il nome della tua azienda).
Nome dell’unità organizzativa (ad es., sezione) []: <– Inserisci il nome della tua unità organizzativa (ad es. “Reparto IT”).
Nome comune (ad es., IL TUO nome) []: <– Inserisci il nome di dominio completamente qualificato 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.pemQuindi riavvia PureFTPd:
service pure-ftpd-mysql restartModifica /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 i dispositivi
# che funziona anche se i dischi vengono aggiunti e rimossi. Vedi fstab(5).
#
#
# / era su /dev/sda1 durante l'installazione
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# lo swap era su /dev/sda5 durante l'installazione
UUID=36bf486e-8f76-492d-89af-5a8eb3ce8a02 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 Per abilitare la quota, esegui questi comandi:
mount -o remount /quotacheck -avugm
quotaon -avug14 Installa il Server DNS BIND
BIND può essere installato come segue:
apt-get install bind9 dnsutilsSe il tuo server è una macchina virtuale, è altamente consigliato installare il daemon haveged per ottenere una maggiore entropia per la firma DNSSEC. Puoi installare haveged anche su server non virtuali, non dovrebbe fare male.
apt-get install haveged
systemctl enable haveged
service haveged startUn’ulteriore spiegazione su questo argomento può essere trovata qui.
15 Installa Webalizer e AWstats
Webalizer e AWstats possono essere installati come segue:
apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perlApri /etc/cron.d/awstats successivamente…
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.sh16 Installa Jailkit
Jailkit è necessario solo se desideri chrootare gli utenti SSH. Può essere installato come segue (importante: Jailkit deve essere installato prima di ISPConfig - non può essere installato successivamente!):
apt-get install build-essential autoconf automake libtool flex bison debhelper binutilscd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./debian/rules binaryOra puoi installare il pacchetto Jailkit.deb come segue:
cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*17 Installa Fail2ban e Firewall UFW
Questo è facoltativo ma raccomandato, perché il monitor di ISPConfig cerca di mostrare il log:
apt-get install fail2banPer 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 = 3Quindi crea i seguenti due file di filtro:
nano /etc/fail2ban/filter.d/pureftpd.conf[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Autenticazione fallita per l'utente.*
ignoreregex = nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Autenticazione fallita|Accesso abortito \(autenticazione fallita|Accesso abortito \(tentativi di accesso disabilitati|Disconnesso \(autenticazione fallita|Accesso abortito \(\d+ tentativi di autenticazione).*rip=(?P\S*),.*
ignoreregex = Quindi, per aggiungere la riga ignoreregex nel file di filtro postfix-sasl, esegui:
echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.confRiavvia fail2ban successivamente:
service fail2ban restartPer installare il firewall UFW, esegui questo comando apt:
apt-get install ufwRicevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.