Server Setup · 8 min read · Oct 28, 2025
Il Server Perfetto - Ubuntu 16.04 (Xenial Xerus) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1 - Pagina 2
8. Installa Apache, PHP, phpMyAdmin, FCGI, SuExec, Pear e mcrypt
Apache2, PHP 7, phpMyAdmin, FCGI, suExec, Pear e mcrypt possono essere installati come segue:
apt-get install apache2 apache2-doc apache2-utils libapache2-mod-php php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap phpmyadmin php7.0-cli php7.0-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php-auth php7.0-mcrypt mcrypt imagemagick libruby libapache2-mod-python php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl memcached php-memcache php-imagick php-gettext php7.0-zip php7.0-mbstringVedrai la seguente domanda:
Web server to reconfigure automatically: <-- apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Premi invioQuindi esegui il seguente comando per abilitare i moduli Apache suexec, rewrite, ssl, actions e include (più dav, dav_fs e auth_digest se desideri utilizzare WebDAV):
a2enmod suexec rewrite ssl actions include cgia2enmod dav_fs dav auth_digest headersPer garantire che il server non possa essere attaccato tramite la vulnerabilità HTTPOXY, disabiliterò l’intestazione HTTP_PROXY in apache globalmente.
sudo nano /etc/apache2/conf-available/httpoxy.confIncolla questo contenuto nel file:
RequestHeader unset Proxy early
Abilita il file di configurazione eseguendo:
a2enconf httpoxyRiavvia Apache dopo:
service apache2 restartSe desideri ospitare file Ruby con l’estensione .rb sui tuoi siti web creati tramite ISPConfig, devi commentare la riga application/x-ruby rb in /etc/mime.types:
nano /etc/mime.types[...]
#application/x-ruby rb
[...](Questo è necessario solo per i file .rb; i file Ruby con l’estensione .rbx funzionano subito.)
Riavvia Apache dopo:
service apache2 restart8.1 Cache Opcode PHP
APCu è un cache opcode PHP gratuito per memorizzare e ottimizzare il codice intermedio PHP. È fortemente consigliato avere uno di questi installati per velocizzare la tua pagina PHP.
APCu può essere installato come segue:
apt-get install php7.0-opcache php-apcuOra riavvia Apache:
service apache2 restart8.2 PHP-FPM
Per utilizzare PHP-FPM con Apache, abbiamo bisogno del modulo Apache mod_fastcgi (per favore non confonderlo con mod_fcgid - sono molto simili, ma non puoi usare PHP-FPM con mod_fcgid). Possiamo installare PHP-FPM e mod_fastcgi come segue:
apt-get install libapache2-mod-fastcgi php7.0-fpmAssicurati di abilitare il modulo e riavviare Apache:
a2enmod actions fastcgi alias
service apache2 restart8.3 Versioni PHP Aggiuntive
È possibile avere più versioni di PHP su un server (selezionabili tramite ISPConfig) che possono essere eseguite tramite FastCGI e PHP-FPM. Per sapere come costruire versioni PHP aggiuntive (PHP-FPM e FastCGI) e come configurare ISPConfig, controlla questo tutorial: Come Utilizzare Più Versioni PHP (PHP-FPM & FastCGI) Con ISPConfig 3 (Ubuntu 12.10) (funziona anche per Ubuntu 16.04).
10.1 Installa HHVM (HipHop Virtual Machine)
In questo passaggio installeremo HHVM con apt. HHVM è un motore PHP veloce sviluppato da Facebook.
apt-get -y install software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
add-apt-repository "deb http://dl.hhvm.com/ubuntu xenial main"
apt-get update
apt-get -y install hhvm9. Installa Let’s Encrypt
ISPConfig 3.1 ha supporto integrato 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 in ISPConfig.
Ora aggiungeremo supporto per Let’s Encrypt installando il client certbot.
apt install software-properties-common
add-apt-repository ppa:certbot/certbot
apt update
apt -y remove letsencrypt
apt -y install python-certbot-apache10. 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 (Italian)
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… <– ENTER
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
newaliasesdopo e riavvia Postfix:
service postfix restartInfine dobbiamo abilitare la configurazione Apache di Mailman:
ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.confQuesto definisce l’alias /cgi-bin/mailman/ per tutti i vhost Apache, il che significa che puoi accedere all’interfaccia di amministrazione di Mailman per una lista su http://
Sotto http://
Riavvia Apache dopo:
service apache2 restartQuindi avvia il demone Mailman:
service mailman start11. 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/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.pemNome del Paese (codice di 2 lettere) [AU]: <– Inserisci il tuo Nome del Paese (ad esempio, “IT”).
Nome dello Stato o della Provincia (nome completo) [Some-State]: <– Inserisci il tuo Nome dello Stato o della Provincia.
Nome della Località (es. città) []: <– Inserisci la tua Città.
Nome dell’Organizzazione (es. azienda) [Internet Widgits Pty Ltd]: <– Inserisci il tuo Nome dell’Organizzazione (ad esempio, il nome della tua azienda).
Nome dell’Unità Organizzativa (es. sezione) []: <– Inserisci il tuo Nome dell’Unità Organizzativa (ad esempio, “Reparto IT”).
Nome Comune (es. IL TUO nome) []: <– Inserisci il Nome di Dominio Completo del sistema (ad esempio, “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).
#
#
/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=39762f15-3a49-4982-add3-139d5040b48a /boot ext2 defaults 0 2
/dev/mapper/server1--vg-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 Per abilitare la quota, esegui questi comandi:
mount -o remount /quotacheck -avugm
quotaon -avugChe mostrerà il seguente output:
root@server1:~# quotacheck -avugm
quotacheck: Scanning /dev/mapper/server1--vg-root [/] done
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 11642 directories and 81307 files
quotacheck: Old file not found.
quotacheck: Old file not found.
root@server1:~# quotaon -avug
/dev/mapper/server1--vg-root [/]: group quotas turned on
/dev/mapper/server1--vg-root [/]: user quotas turned on12. Installa il Server DNS BIND
BIND può essere installato come segue:
apt-get install bind9 dnsutils haveged13. 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-perlApri /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.sh14. 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 automake1.11 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 binaryPuoi ora installare il pacchetto Jailkit.deb come segue:
cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*15. Installa fail2ban e UFW
Questo è facoltativo ma raccomandato, perché il monitor 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\] 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.confRiavvia fail2ban dopo:
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.