Server Setup · 7 min read · Sep 11, 2025

Il Server Perfetto CentOS 7.6 con Apache, PHP 7.2, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3.1

Questo tutorial mostra l’installazione di ISPConfig 3.1 su un server CentOS 7.6 (64Bit). ISPConfig è un pannello di controllo per l’hosting web che consente di configurare i seguenti servizi tramite un browser web: server web Apache, PHP 7.2, server di posta Postfix, MySQL, server di nomi BIND, PureFTPd, SpamAssassin, ClamAV, Mailman e molti altri.

1 Requisiti

Per installare un sistema del genere avrai bisogno dei seguenti:

  • Un sistema server CentOS 7.6 minimale. Questo può essere un server installato da zero come descritto nel nostro tutorial sul server minimale CentOS 7 o un server virtuale o root-server di una compagnia di hosting che ha un’installazione minima di CentOS 7.6.
  • Una connessione Internet veloce.

2 Nota Preliminare

In questo tutorial, utilizzo il nome host server1.example.com con l’indirizzo IP 192.168.0.100 e il gateway 192.168.0.1. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato.

3 Preparare il server

Imposta il layout della tastiera

Nel caso in cui il layout della tastiera del server non corrisponda alla tua tastiera, puoi passare al giusto layout della tastiera (nel mio caso “de” per un layout di tastiera tedesco) con il comando localectl:

localectl set-keymap de

Per ottenere un elenco di tutte le mappature di tasti disponibili, esegui:

localectl list-keymaps

Voglio installare ISPConfig alla fine di questo tutorial, ISPConfig viene fornito con lo script del firewall Bastille che utilizzerò come firewall, quindi disabilito ora il firewall predefinito di CentOS. Naturalmente, sei libero di lasciare attivo il firewall di CentOS e configurarlo secondo le tue esigenze (ma in tal caso non dovresti utilizzare alcun altro firewall in seguito poiché interferirà probabilmente con il firewall di CentOS).

Esegui…

yum -y install net-tools  
systemctl stop firewalld.service  
systemctl disable firewalld.service

per fermare e disabilitare il firewall di CentOS. Va bene se ricevi errori qui, questo indica solo che il firewall non era installato.

Dovresti quindi controllare che il firewall sia stato realmente disabilitato. Per farlo, esegui il comando:

iptables -L

L’output dovrebbe apparire così:

[root@server1 ~]# iptables -L  
Chain INPUT (policy ACCEPT)  
target prot opt source destination
Chain FORWARD (policy ACCEPT)  
target prot opt source destination
Chain OUTPUT (policy ACCEPT)  
target prot opt source destination

Oppure usa il comando firewall-cmd:

firewall-cmd --state
[root@server1 ~]# firewall-cmd --state  
not running  
[root@server1 ~]#

Ora installerò l’editor di configurazione di rete e l’editor basato su shell “nano” che utilizzerò nei passaggi successivi per modificare i file di configurazione:

yum -y install nano wget NetworkManager-tui yum-utils

Se non hai configurato la tua scheda di rete durante l’installazione, puoi farlo ora. Esegui…

nmtui

… e vai su Modifica una connessione:

Modifica connessione di rete

Seleziona la tua interfaccia di rete:

Seleziona interfaccia di rete

Quindi compila i dettagli della tua rete - disabilita DHCP e compila un indirizzo IP statico, una netmask, il tuo gateway e uno o due server DNS, quindi premi Ok:

Imposta netmask

Successivamente seleziona OK per confermare le modifiche apportate nelle impostazioni di rete

e Esci per chiudere lo strumento di configurazione di rete nmtui.

Esci da nmtui

Dovresti eseguire

ifconfig

ora per controllare se l’installatore ha ottenuto correttamente il tuo indirizzo IP:

[root@localhost ~]# ifconfig  
ens33: flags=4163 mtu 1500  
 inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255  
 inet6 fe80::20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x20  
 inet6 2003:c2:9731:a445:20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x0  
 ether 00:0c:29:e5:5b:47 txqueuelen 1000 (Ethernet)  
 RX packets 227784 bytes 317714901 (302.9 MiB)  
 RX errors 0 dropped 0 overruns 0 frame 0  
 TX packets 205574 bytes 23608521 (22.5 MiB)  
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0  
  
lo: flags=73 mtu 65536  
 inet 127.0.0.1 netmask 255.0.0.0  
 inet6 ::1 prefixlen 128 scopeid 0x10  
 loop txqueuelen 1 (Local Loopback)  
 RX packets 0 bytes 0 (0.0 B)  
 RX errors 0 dropped 0 overruns 0 frame 0  
 TX packets 0 bytes 0 (0.0 B)  
 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0  
  
[root@localhost ~]#

Se la tua scheda di rete non appare lì, allora non è abilitata all’avvio. In questo caso, apri il file /etc/sysconfig/network-scripts/ifcfg-eth0

nano /etc/sysconfig/network-scripts/ifcfg-ens33

e imposta ONBOOT su yes:

[...]  
ONBOOT=yes  
[...] 

e riavvia il server.

Controlla il tuo /etc/resolv.conf se elenca tutti i server DNS che hai precedentemente configurato:

cat /etc/resolv.conf

Se mancano server DNS, esegui

nmtui

e aggiungi nuovamente i server DNS mancanti.

Ora, passiamo alla configurazione…

Regolazione di /etc/hosts e /etc/hostname

Successivamente, modificheremo /etc/hosts. Fai in modo che appaia così:

nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
192.168.0.100   server1.example.com     server1  
  
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Imposta il nome host nel file /etc/hostname. Il file deve contenere il nome di dominio completamente qualificato (ad es. server1.example.com nel mio caso) e non solo il nome breve come “server1”. Apri il file con l’editor nano:

nano /etc/hostname

E imposta il nome host nel file.

server1.example.com

Salva il file ed esci da nano.

Imposta SELinux su permissivo

SELinux è un’estensione di sicurezza di CentOS che dovrebbe fornire una sicurezza avanzata. ISPConfig non viene fornito con un set di regole SELinux, quindi lo impostiamo su permissivo (questo è un must se desideri installare ISPConfig in seguito).

Modifica /etc/selinux/config e imposta SELINUX=permissive:

nano /etc/selinux/config
# Questo file controlla lo stato di SELinux sul sistema.  
# SELINUX= può assumere uno di questi tre valori:  
#     enforcing - La politica di sicurezza SELinux è applicata.  
#     permissive - SELinux stampa avvisi invece di applicare.  
#     disabled - Nessuna politica SELinux è caricata.  
SELINUX=permissive  
# SELINUXTYPE= può assumere uno di questi due valori:  
#     targeted - I processi mirati sono protetti,  
#     mls - Protezione Multi Level Security.  
SELINUXTYPE=targeted

Dopo, dobbiamo riavviare il sistema:

reboot

4 Abilitare Repository Aggiuntivi e Installare Alcuni Software

Per prima cosa, importiamo le chiavi GPG per i pacchetti software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Poi abilitiamo il repository EPEL sul nostro sistema CentOS poiché molti dei pacchetti che installeremo nel corso di questo tutorial non sono disponibili nel repository ufficiale di CentOS 7:

yum -y install epel-release

Poi aggiorniamo i nostri pacchetti esistenti sul sistema:

yum -y update

Ora installiamo alcuni pacchetti software necessari in seguito:

yum -y groupinstall 'Development Tools'

5 Quota

(Se hai scelto uno schema di partizionamento diverso dal mio, devi adattare questo capitolo affinché la quota si applichi alle partizioni di cui hai bisogno.)

Per installare la quota, eseguiamo questo comando:

yum -y install quota

Ora controlliamo se la quota è già abilitata per il file system in cui sono memorizzati i dati del sito web (/var/www) e della maildir (var/vmail). In questo esempio, ho una grande partizione root, quindi cerco ‘ / ‘:

mount | grep ' / '
[root@server1 ~]# mount | grep ' / '  
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)  
[root@server1 ~]#

Se hai una partizione /var separata, utilizza:

mount | grep ' /var '

invece. Se la riga contiene la parola “ noquota “, procedi con i seguenti passaggi per abilitare la quota.

Abilitare la quota sulla partizione / (root)

Normalmente abiliteresti la quota nel file /etc/fstab, ma se il file system è il file system root “/“, allora la quota deve essere abilitata tramite un parametro di avvio del kernel Linux.

Modifica il file di configurazione grub:

nano /etc/default/grub

cerca la riga che inizia con GRUB_CMDLINE_LINUX e aggiungi rootflags=uquota,gquota ai parametri della riga di comando in modo che la riga risultante appaia così:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet rootflags=uquota,gquota"

e applica le modifiche eseguendo il seguente comando.

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak  
grub2-mkconfig -o /boot/grub2/grub.cfg

e riavvia il server.

reboot

Ora controlla se la quota è abilitata:

mount | grep ' / '
[root@server1 ~]# mount | grep ' / '  
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)  
[root@server1 ~]#

Quando la quota è attiva, possiamo vedere “ usrquota,grpquota “ nell’elenco delle opzioni di montaggio.

Abilitare la quota su una partizione /var separata

Se hai una partizione /var separata, modifica /etc/fstab e aggiungi,uquota,gquota alla partizione / ( /dev/mapper/centos-var):

nano /etc/fstab
  
#  
# /etc/fstab  
# Creato da anaconda domenica 21 settembre 2014 16:33:45  
#  
# I file system accessibili, per riferimento, sono mantenuti sotto '/dev/disk'  
# Vedi le pagine man fstab(5), findfs(8), mount(8) e/o blkid(8) per ulteriori informazioni  
#  
/dev/mapper/centos-root /                       xfs     defaults        1 1  
/dev/mapper/centos-var /var                     xfs     defaults,uquota,gquota        1 2  
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot                   xfs     defaults        1 3  
/dev/mapper/centos-swap swap                    swap    defaults        0 0

Quindi esegui

mount -o remount /var
quotacheck -avugm  
quotaon -avug

per abilitare la quota. Se ricevi un errore che non c’è una partizione con quota abilitata, riavvia il server prima di procedere.

6 Installare Apache, PHP, MySQL e phpMyAdmin

Abilita il repository Remi per ottenere versioni PHP più recenti:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm  
yum-config-manager --enable remi-php72

Possiamo installare i pacchetti necessari con un solo comando:

yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin

Per garantire che il server non possa essere attaccato attraverso la vulnerabilità HTTPOXY, disabiliteremo l’intestazione HTTP_PROXY in apache globalmente.

Aggiungi la regola dell’intestazione apache alla fine del file httpd.conf:

echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf

E riavvia httpd per applicare la modifica della configurazione.

service httpd restart
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.