Der perfekte Server CentOS 7.4 mit Apache, Postfix, Dovecot, Pure-FTPD, BIND und ISPConfig 3.1
Dieses Tutorial zeigt die Installation von ISPConfig 3.1 auf einem CentOS 7.4 (64Bit) Server. ISPConfig ist ein Webhosting-Control Panel, mit dem Sie die folgenden Dienste über einen Webbrowser konfigurieren können: Apache Webserver, 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 Centos 7.4 minimales Serversystem. Dies kann ein neu installierter Server sein, wie in unserem Centos 7 Minimal-Server-Tutorial beschrieben, oder ein Virtual-Server oder Root-Server eines Hosting-Unternehmens, das ein minimales Centos 7.4-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 für Sie unterschiedlich sein, so dass Sie sie gegebenenfalls ersetzen müssen.
Bitte beachten Sie, dass HHVM und XMPP in ISPConfig für die CentOS-Plattform noch nicht unterstützt werden. Wenn Sie einen XMPP-Chatserver von ISPConfig aus verwalten oder HHVM (Hip Hop Virtual Machine) auf einer ISPConfig-Website verwenden möchten, dann verwenden Sie bitte Debian oder Ubuntu 16.04 als Server-Betriebssystem anstelle von CentOS 7.4.
3 Bereiten Sie den Server vor
Einstellen des Tastaturlayouts
Falls das Tastaturlayout des Servers nicht zu Ihrer Tastatur passt, können Sie mit dem Befehl localectl auf die rechte Tastatur wechseln (in meinem Fall „de“ für ein deutsches Tastaturlayout):
localectl set-keymap de
Um eine Liste aller verfügbaren Keymaps zu erhalten, führen Sie:
localectl list-keymaps
Ich möchte ISPConfig am Ende dieses Tutorials installieren, ISPConfig wird mit dem Bastille Firewall-Skript ausgeliefert, das ich als Firewall verwenden werde, deshalb deaktiviere ich jetzt die Standard-CentOS-Firewall. Natürlich können Sie die CentOS-Firewall eingeschaltet lassen und nach Ihren Bedürfnissen konfigurieren (aber Sie sollten später keine andere Firewall verwenden, da sie höchstwahrscheinlich die CentOS-Firewall stören wird).
Lauf……
yum -y install net-tools systemctl stop firewalld.service systemctl disable firewalld.service
um die CentOS-Firewall zu stoppen und zu deaktivieren. Es ist in Ordnung, wenn Sie hier Fehler erhalten, dies bedeutet nur, dass die Firewall nicht installiert wurde.
Dann sollten Sie überprüfen, ob die Firewall wirklich deaktiviert ist. Um dies zu tun, führen Sie den Befehl aus:
iptables -L
Die Ausgabe sollte so 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 not running [root@server1 ~]#
Nun werde ich den Netzwerkkonfigurationseditor und den Shell-basierten Editor „nano“ installieren, den ich in den nächsten Schritten zum Bearbeiten der Konfigurationsdateien verwenden werde:
yum -y install nano wget NetworkManager-tui
Wenn Sie Ihre Netzwerkkarte während der Installation nicht konfiguriert haben, können Sie dies jetzt tun. Lauf……
nmtui
…. und gehen Sie zu Eine Verbindung bearbeiten:
Wählen Sie Ihre Netzwerkschnittstelle aus:
Geben Sie dann Ihre Netzwerkdaten ein – deaktivieren Sie DHCP und geben Sie eine statische IP-Adresse, eine Netzmaske, Ihr Gateway und ein oder zwei Nameserver ein, und klicken Sie dann auf Ok:
Wählen Sie anschließend OK, um die Änderungen zu bestätigen, die Sie in den Netzwerkeinstellungen vorgenommen haben.
und Quit, um das nmtui Netzwerkkonfigurationstool zu schließen.
Du solltest laufen
ifconfig
jetzt, um zu überprüfen, ob das Installationsprogramm Ihre IP-Adresse richtig eingegeben hat:
[root@localhost ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::20c:29ff:fe1a:3d8e prefixlen 64 scopeid 0x20<link> ether 00:0c:29:1a:3d:8e txqueuelen 1000 (Ethernet) RX packets 184972 bytes 256696909 (244.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 62983 bytes 7236189 (6.9 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
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 erscheint, dann wird sie 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 stellen Sie ONBOOT auf yes:
[...] ONBOOT=yes [...]
und starten Sie den Server neu.
Überprüfen Sie Ihre /etc/resolv.conf, ob sie alle Nameserver auflistet, die Sie zuvor konfiguriert haben:
cat /etc/resolv.conf
Wenn Nameserver fehlen, führen Sie Folgendes aus
nmtui
und fügen Sie die fehlenden Nameserver wieder hinzu.
Nun zur Konfiguration……
Anpassen von /etc/hosts und /etc/hostname
Als nächstes werden wir /etc/hosts bearbeiten. Lass es so aussehen:
nano /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.1.100 server1.example.com server1
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
Setzt den Hostnamen in der Datei /etc/hostname. Die Datei muss den voll 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 setze den Hostnamen in der Datei.
server1.example.com
Speichern Sie die Datei und beenden Sie nano.
SELinux deaktivieren
SELinux ist eine Sicherheitserweiterung von CentOS, die erweiterte Sicherheit bieten soll. Meiner Meinung nach brauchen Sie es nicht, um ein sicheres System zu konfigurieren, und es verursacht normalerweise mehr Probleme als Vorteile (denken Sie daran, nachdem Sie eine Woche lang Fehlersuche durchgeführt haben, weil einige Dienste nicht wie erwartet funktionierten, und dann stellen Sie fest, dass alles in Ordnung war, nur SELinux verursachte das Problem). Deshalb deaktiviere ich es (dies ist ein Muss, wenn Sie ISPConfig später installieren wollen).
Bearbeiten Sie /etc/selinux/config und setzen Sie SELINUX=deaktiviert:
nano /etc/selinux/config
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. 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 Laufe dieses Tutorials installieren werden, nicht im offiziellen CentOS 7-Repository verfügbar sind:
yum -y install epel-release
yum -y install yum-priorities
Bearbeiten Sie /etc/yum.repos.d/epel.repo…..
nano /etc/yum.repos.d/epel.repo
…. und fügen Sie die Zeilenpriorität=10 zum Abschnitt[epel] hinzu:
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [...]
Dann aktualisieren wir unsere bestehenden Pakete auf dem System:
yum -y update
Jetzt installieren wir einige Softwarepakete, die später benötigt werden:
yum -y groupinstall 'Development Tools'
5 Quote
(Wenn Sie ein anderes Partitionierungsschema gewählt haben als ich, müssen Sie dieses Kapitel so anpassen, dass die Quote für die Partitionen gilt, wo Sie sie benötigen.)
Um Quota zu installieren, führen wir diesen Befehl aus:
yum -y install quota
Nun prüfen wir, ob für das Dateisystem, in dem die Website (/var/www) und die Maildir-Daten (var/vmail) gespeichert sind, bereits Quota aktiviert ist. 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 du eine separate /var-Partition hast, dann verwende:
mount | grep ' /var '
stattdessen. Wenn die Zeile das Wort „noquota“ enthält, fahren Sie mit den folgenden Schritten fort, um die Quote zu aktivieren.
Aktivieren von Quoten auf der Partition / (root)
Normalerweise würden Sie Quota in der Datei /etc/fstab aktivieren, aber wenn das Dateisystem das Root-Dateisystem „/“ ist, dann muss Quota durch einen Bootparameter des Linux-Kernels aktiviert werden.
Bearbeiten Sie die Grub-Konfigurationsdatei:
nano /etc/default/grub
search fole die Zeile, die mit GRUB_CMDLINE_LINUX beginnt und fügt rootflags=uquota,gquota zu den Kommandozeilenparametern hinzu, so dass die resultierende Zeile so aussieht:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet rootflags=uquota,gquota"
und übernehmen Sie die Änderungen, 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 die 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 Aktivierungsoptionen.
Aktivieren von Quoten auf einer separaten /var-Partition
Wenn du eine separate /var-Partition hast, dann bearbeite /etc/fstab und füge ,uquota,gquota zur /-Partition hinzu (/dev/mapper/centos-var):
nano /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Sep 21 16:33:45 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/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
mount -o remount /var
quotacheck -avugm quotaon -avug
um die Quote zu aktivieren. Wenn Sie einen Fehler erhalten, dass es keine Partition mit aktivierter Quota gibt, starten Sie den Server neu, bevor Sie fortfahren.
6 Apache, MySQL, phpMyAdmin installieren
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 durch die HTTPOXY-Schwachstelle angegriffen werden kann, werden wir den HTTP_PROXY-Header im Apache global deaktivieren.
Fügen Sie die Apache-Headerregel am Ende der Datei httpd.conf hinzu:
echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf
Und starten Sie httpd neu, um die Konfigurationsänderung anzuwenden.
service httpd restart