Server Setup · 7 min read · Sep 11, 2025

Der perfekte Server CentOS 7.6 mit Apache, PHP 7.2, Postfix, Dovecot, Pure-FTPD, BIND und ISPConfig 3.1

Dieses Tutorial zeigt die Installation von ISPConfig 3.1 auf einem CentOS 7.6 (64Bit) Server. ISPConfig ist ein Webhosting-Kontrollpanel, das es Ihnen ermöglicht, die folgenden Dienste über einen Webbrowser zu konfigurieren: Apache-Webserver, PHP 7.2, Postfix-Mailserver, MySQL, BIND-Nameserver, PureFTPd, SpamAssassin, ClamAV, Mailman und viele mehr.

1 Anforderungen

Um ein solches System zu installieren, benötigen Sie Folgendes:

  • Ein minimal installiertes CentOS 7.6-Server-System. Dies kann ein Server sein, der von Grund auf neu installiert wurde, wie in unserem Tutorial zum minimalen CentOS 7-Server beschrieben, oder ein virtueller Server oder Root-Server von einem Hosting-Unternehmen, das ein minimales CentOS 7.6-Setup installiert hat.
  • Eine schnelle Internetverbindung.

2 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100 und dem Gateway 192.168.0.1. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen.

3 Server vorbereiten

Tastaturlayout einstellen

Falls das Tastaturlayout des Servers nicht mit Ihrer Tastatur übereinstimmt, können Sie mit dem localectl-Befehl auf das richtige Layout umschalten (in meinem Fall “de” für ein deutsches Tastaturlayout):

localectl set-keymap de

Um eine Liste aller verfügbaren Tastaturlayouts zu erhalten, führen Sie aus:

localectl list-keymaps

Ich möchte ISPConfig am Ende dieses Tutorials installieren. ISPConfig wird mit dem Bastille-Firewall-Skript geliefert, das ich als Firewall verwenden werde, daher deaktiviere ich jetzt die Standard-CentOS-Firewall. Natürlich können Sie die CentOS-Firewall aktiviert lassen und nach Ihren Bedürfnissen konfigurieren (aber dann sollten Sie später keine andere Firewall verwenden, da sie höchstwahrscheinlich mit der CentOS-Firewall in Konflikt gerät).

Führen Sie…

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

aus, um die CentOS-Firewall zu stoppen und zu deaktivieren. Es ist in Ordnung, wenn Sie hier Fehler erhalten, dies zeigt nur an, dass die Firewall nicht installiert war.

Dann sollten Sie überprüfen, ob die Firewall wirklich deaktiviert wurde. Führen Sie dazu den Befehl aus:

iptables -L

Die Ausgabe sollte wie folgt aussehen:

[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

Oder verwenden Sie den Befehl firewall-cmd:

firewall-cmd --state
[root@server1 ~]# firewall-cmd --state  
nicht aktiv  
[root@server1 ~]#

Jetzt werde ich den Netzwerk-Konfigurationseditor und den shell-basierten Editor “nano” installieren, den ich in den nächsten Schritten verwenden werde, um die Konfigurationsdateien zu bearbeiten:

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

Wenn Sie Ihre Netzwerkkarte während der Installation nicht konfiguriert haben, können Sie das jetzt tun. Führen Sie…

nmtui

… und gehen Sie zu Verbindung bearbeiten:

Netzwerkverbindung bearbeiten

Wählen Sie Ihre Netzwerkschnittstelle aus:

Netzwerkschnittstelle auswählen

Füllen Sie dann Ihre Netzwerkinformationen aus - deaktivieren Sie DHCP und geben Sie eine statische IP-Adresse, eine Netzmaske, Ihr Gateway und einen oder zwei Nameserver ein, und drücken Sie OK:

Netzmaske festlegen

Wählen Sie als Nächstes OK, um die Änderungen zu bestätigen, die Sie in den Netzwerkeinstellungen vorgenommen haben, und Beenden, um das nmtui-Netzwerkkonfigurationstool zu schließen.

nmtui beenden

Sie sollten jetzt

ifconfig

ausführen, um zu überprüfen, ob der Installer Ihre IP-Adresse richtig erkannt hat:

[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 ~]#

Wenn Ihre Netzwerkkarte dort nicht angezeigt wird, ist sie möglicherweise beim Booten nicht aktiviert. In diesem Fall öffnen Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0

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

und setzen Sie ONBOOT auf yes:

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

und starten Sie den Server neu.

Überprüfen Sie Ihre /etc/resolv.conf, ob alle Nameserver aufgelistet sind, die Sie zuvor konfiguriert haben:

cat /etc/resolv.conf

Wenn Nameserver fehlen, führen Sie

nmtui

aus und fügen Sie die fehlenden Nameserver erneut hinzu.

Jetzt zur Konfiguration…

Anpassen von /etc/hosts und /etc/hostname

Als Nächstes werden wir /etc/hosts bearbeiten. Lassen Sie es so aussehen:

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

Setzen Sie den Hostnamen in der Datei /etc/hostname. Die Datei sollte den vollständig qualifizierten Domainnamen (z.B. server1.example.com in meinem Fall) und nicht nur den Kurznamen wie “server1” enthalten. Öffnen Sie die Datei mit dem Nano-Editor:

nano /etc/hostname

Und setzen Sie den Hostnamen in der Datei.

server1.example.com

Speichern Sie die Datei und beenden Sie nano.

Setzen Sie SELinux auf permissive

SELinux ist eine Sicherheitserweiterung von CentOS, die erweiterte Sicherheit bieten soll. ISPConfig wird nicht mit einem SELinux-Regelsatz geliefert, daher setze ich es auf permissive (das ist ein Muss, wenn Sie ISPConfig später installieren möchten).

Bearbeiten Sie /etc/selinux/config und setzen Sie SELINUX=permissive:

nano /etc/selinux/config
# Diese Datei steuert den Status von SELinux im System.  
# SELINUX= kann einen dieser drei Werte annehmen:  
#     enforcing - SELinux-Sicherheitsrichtlinie wird durchgesetzt.  
#     permissive - SELinux gibt Warnungen aus, anstatt durchzusetzen.  
#     disabled - Keine SELinux-Richtlinie ist geladen.  
SELINUX=permissive  
# SELINUXTYPE= kann einen dieser beiden Werte annehmen:  
#     targeted - Zielprozesse sind geschützt,  
#     mls - Multi Level Security-Schutz.  
SELINUXTYPE=targeted

Danach müssen wir das System neu starten:

reboot

4 Zusätzliche Repositories aktivieren und einige Software installieren

Zuerst importieren wir die GPG-Schlüssel für Softwarepakete:

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

Dann aktivieren wir das EPEL-Repository auf unserem CentOS-System, da viele der Pakete, die wir im Verlauf dieses Tutorials installieren werden, im offiziellen CentOS 7-Repository nicht verfügbar sind:

yum -y install epel-release

Dann aktualisieren wir unsere vorhandenen Pakete auf dem System:

yum -y update

Jetzt installieren wir einige Softwarepakete, die später benötigt werden:

yum -y groupinstall 'Development Tools'

5 Quota

(Wenn Sie ein anderes Partitionierungsschema gewählt haben als ich, müssen Sie dieses Kapitel anpassen, damit Quota auf den Partitionen angewendet wird, wo Sie es benötigen.)

Um Quota zu installieren, führen wir diesen Befehl aus:

yum -y install quota

Jetzt überprüfen wir, ob Quota bereits für das Dateisystem aktiviert ist, in dem die Website (/var/www) und die Maildir-Daten (var/vmail) gespeichert sind. In diesem Beispiel-Setup habe ich eine große Root-Partition, also suche ich nach ‘ / ‘:

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

Wenn Sie eine separate /var-Partition haben, verwenden Sie stattdessen:

mount | grep ' /var '

Wenn die Zeile das Wort “ noquota “ enthält, fahren Sie mit den folgenden Schritten fort, um Quota zu aktivieren.

Aktivieren von Quota auf der / (Root-)Partition

Normalerweise würden Sie Quota in der Datei /etc/fstab aktivieren, aber wenn das Dateisystem das Root-Dateisystem “ / “ ist, muss Quota durch einen Bootparameter des Linux-Kernels aktiviert werden.

Bearbeiten Sie die Grub-Konfigurationsdatei:

nano /etc/default/grub

Suchen Sie nach der Zeile, die mit GRUB_CMDLINE_LINUX beginnt, und fügen Sie rootflags=uquota,gquota zu den Befehlszeilenparametern hinzu, sodass die resultierende Zeile wie folgt aussieht:

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

Und wenden Sie die Änderungen an, indem Sie den folgenden Befehl ausführen.

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

und starten Sie den Server neu.

reboot

Überprüfen Sie nun, ob Quota aktiviert ist:

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

Wenn Quota aktiv ist, sehen wir “ usrquota,grpquota “ in der Liste der Mount-Optionen.

Aktivieren von Quota auf einer separaten /var-Partition

Wenn Sie eine separate /var-Partition haben, bearbeiten Sie /etc/fstab und fügen Sie ,uquota,gquota zur /-Partition (/dev/mapper/centos-var) hinzu:

nano /etc/fstab
  
#  
# /etc/fstab  
# Erstellt von anaconda am So Sep 21 16:33:45 2014  
#  
# Zugängliche Dateisysteme werden unter '/dev/disk' verwaltet  
# Weitere Informationen finden Sie in den Man-Seiten fstab(5), findfs(8), mount(8) und/oder blkid(8)  
#  
/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

Führen Sie dann aus:

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

um Quota zu aktivieren. Wenn Sie einen Fehler erhalten, dass keine Partition mit aktivierten Quota vorhanden ist, starten Sie den Server neu, bevor Sie fortfahren.

6 Installieren von Apache, PHP, MySQL und phpMyAdmin

Aktivieren Sie das Remi-Repository, um neuere PHP-Versionen zu erhalten:

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

Wir können die benötigten Pakete mit einem einzigen Befehl installieren:

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

Um sicherzustellen, dass der Server nicht über die HTTPOXY-Sicherheitsanfälligkeit angegriffen werden kann, deaktivieren wir den HTTP_PROXY-Header in Apache global.

Fügen Sie die Apache-Headerregel am Ende der httpd.conf-Datei hinzu:

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

Und starten Sie httpd neu, um die Konfigurationsänderung anzuwenden.

service httpd restart
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.