Server Setup · 9 min read · Nov 28, 2025

Il Server Perfetto - Ubuntu 17.04 (Zesty Zapus) 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 -y 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 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-mbstring

Vedrai la seguente domanda:

Web server to reconfigure automatically: <-- apache2   
Configure database for phpmyadmin with dbconfig-common? <-- Yes  
MySQL application password for phpmyadmin: <-- Premi invio  

Quindi esegui il seguente comando per abilitare i moduli Apache suexec, rewrite, ssl, actions e include (più dav, dav_fs e auth_digest se vuoi utilizzare WebDAV):

a2enmod suexec rewrite ssl actions include cgi
a2enmod dav_fs dav auth_digest headers

Per garantire che il server non possa essere attaccato tramite la vulnerabilità HTTPOXY, disabiliterò l’intestazione HTTP_PROXY in apache globalmente. Crea un nuovo file httpoxy.conf con nano:

nano /etc/apache2/conf-available/httpoxy.conf

Incolla questo contenuto nel file:


    RequestHeader unset Proxy early

Abilita il file di configurazione eseguendo:

a2enconf httpoxy

Riavvia Apache successivamente:

service apache2 restart

Se 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 out of the box.)

Riavvia Apache successivamente:

service apache2 restart

8.1 Cache Opcode PHP (opzionale)

Opcache è un cache opcode PHP gratuito per memorizzare nella cache e ottimizzare il codice intermedio PHP. APCu è un modulo di compatibilità che fornisce funzioni compatibili con APC per Opcache, utilizzato da molti sistemi di caching CMS. È consigliato avere queste estensioni PHP installate per velocizzare la tua pagina PHP.

APCu può essere installato come segue:

apt-get -y install php7.0-opcache php-apcu

Ora riavvia Apache:

service apache2 restart

8.2 PHP-FPM

Per utilizzare PHP-FPM con Apache, abbiamo bisogno del modulo mod_proxy_fcgi di Apache, che è installato per impostazione predefinita e deve solo essere abilitato. Possiamo installare PHP-FPM come segue:

apt-get -y install php7.0-fpm

Assicurati di abilitare i moduli e riavviare Apache:

a2enmod actions proxy_fcgi alias   
service apache2 restart

8.3 Versioni PHP Aggiuntive

È possibile avere più versioni 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: https://www.howtoforge.com/tutorial/how-to-install-php-5-6-on-ubuntu-16-04/ (funziona anche per Ubuntu 16.10).

10.1 Installa HHVM (HipHop Virtual Machine), opzionale

In questo passaggio installeremo HHVM con apt. HHVM è un motore PHP veloce sviluppato da Facebook.

apt-get -y install hhvm

9. 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.

apt-get -y install certbot

10. 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 mailman

Seleziona 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 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… <– ENTER

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

newaliases

successivamente e riavvia Postfix:

service postfix restart

Infine dobbiamo abilitare la configurazione Apache di Mailman:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf

Questo 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:///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.

Riavvia Apache successivamente:

service apache2 restart

Quindi avvia il demone Mailman:

service mailman start

11. Installa PureFTPd e Quota

PureFTPd e quota possono essere installati con il seguente comando:

apt-get -y 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 desideri 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/

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.pem

Nome 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à (ad es., città) []: <– Inserisci la tua Città.
Nome dell’Organizzazione (ad es., azienda) [Internet Widgits Pty Ltd]: <– Inserisci il tuo Nome dell’Organizzazione (ad esempio, il nome della tua azienda).
Nome dell’Unità Organizzativa (ad es., sezione) []: <– Inserisci il tuo Nome dell’Unità Organizzativa (ad esempio, “Reparto IT”).
Nome Comune (ad 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.pem

Quindi 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 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  
/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 -avug

Che 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 19755 directories and 117639 files  
quotacheck: Old file not found.  
quotacheck: Old file not found.  
root@server1:/opt/metronome# quotaon -avug  
/dev/mapper/server1--vg-root [/]: group quotas turned on  
/dev/mapper/server1--vg-root [/]: user quotas turned on

12. Installa il Server DNS BIND

BIND può essere installato come segue:

apt-get -y install bind9 dnsutils haveged

13. 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 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.sh

14. 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 -y install build-essential autoconf automake1.11 libtool flex bison debhelper binutils
cd /tmp   
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz   
tar xvfz jailkit-2.19.tar.gz   
cd jailkit-2.19   
echo 5 > debian/compat

La versione attuale 2.19 di Jailkit ha un errore di sintassi che impedisce la sua compilazione. Per risolvere questo problema, apri il file debian/changelog con nano:

nano debian/changelog

E aggiungi la seguente riga alla riga 5 più una riga vuota dopo:

 -- Olivier   Wed, 18 Nov 2015 20:38:44 +0100

In modo che la prima parte risultante del file appaia così (la riga inserita in rosso):

jailkit (2.19-1) UNRELEASED; urgency=medium
* somehow a bug URL was pasted into the ini file location in the sourcecode for jk_chrootsh in the 2.18 release. Fixed.
-- Olivier  Wed, 18 Nov 2015 20:38:44 +0100
jailkit (2.18-1) UNRELEASED; urgency=medium
* maintenance release, fix uid_t printing for very high uid numbers  
* minor improvements to jk_init.ini  
* add possibility to force --login in jk_chrootsh
-- Olivier  Wed, 18 Nov 2015 20:38:44 +0100

Quindi costruisci il pacchetto jailkit eseguendo questo comando:

./debian/rules binary

Ora puoi 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 di ISPConfig cerca di mostrare il log:

apt-get -y 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

Quindi 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 successivamente:

service fail2ban restart

Se ricevi questo errore:

root@server1:/tmp# service fail2ban restart  
Job for fail2ban.service failed because the control process exited with error code.  
See "systemctl status fail2ban.service" and "journalctl -xe" for details.

Allora il tuo sistema è probabilmente colpito da questo problema di Ubuntu: https://bugs.launchpad.net/ubuntu/+source/postfix/+bug/1687368 che causa il fatto che postfix non è in grado di creare il suo file di log. Per risolvere questo problema, esegui:

chmod 775 /var/log  
service postfix restart  
service fail2ban restart

Per installare il firewall UFW, esegui questo comando apt:

apt-get install ufw
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.