Apache Webserver auf Debian10

Der Apache Web Server ist, mit seinen ca. 35% Marktanteil, einer der am weitesten verbreiteten Webserver der Welt. Er bietet viele leistungsstarke Funktionen, einschließlich dynamisch ladbarer Module, robuster Medienunterstützung und umfassender Integration mit anderer gängiger Software. In dieser Anleitung zeige ich dir wie dieser Installiert und konfiguriert wird.

In diesem Totorial werde ich die IP-Adresse 218.250.146.166 und dem Server einen Severnamen server01.exemple.de verwenden. Diese Angaben mußt du entsprechend deinem Bedarf anpassen. Bevor wir aber weitermachen, muß zunächst einmal eine minimale Installation von Debian10 vorbereitet werden. Dies kann ein Debian-Minimal-Image von einem Hosting-Provider deiner wahl sein. Diese lässt sich bei den meisten Hosting-Providern per OneClick installation einrichten.

Was benötigen wir dazu?

Um einen perfekten Webserver mit Apache installieren zu können benötigen wir:

  • Einen Root-Server mit vollen Root-Rechten und bereits vorinstalliertem Debian10 minimal
  • Eine registrierte und bereits freigeschaltete Internetadresse in Form von >>beispieldomain.de<< welche auf deinen mit Debian10 vorbereiteten Server zeigt.

Welche Pakete werden wir installieren?

  • Apache als Webserver
  • Benötigte Module für Apache Webserver
  • PHP
  • Postfix
  • Devcot
  • MariaDB
  • rKhunter
  • Binutils
  • Amavisd und SpamAV
  • PureFTP
  • Let´s Encrypt
  • BIND als DNS-Server
  • Jailkid
  • Fail2Ban
  • PHPMyAdmin
  • RoundCube

1 Den Server vorbereiten

Alle folgenden Befehle werden als Root-Benutzer ausgeführt. Melden euch entweder direkt als Root-Benutzer an oder melden euch als normaler Benutzer an und verwendet dann den Befehl:

# su -

um Root-Benutzer auf eurem Server zu werden, bevor ihr fortfahren könnt. WICHTIG: Ihr müsst mit demBefehl ’su -‚ verwenden und nicht nur ’su‘, sonst wird Ihre PATH-Variable von Debian falsch gesetzt.

2 Installieren des SSH-Servers (optional)

Wenn der OpenSSH-Server während der Systeminstallation nicht installiert wurde, könnt ihr dies jetzt nachholen:

# apt-get install ssh openssh-server

Von nun an können ihr einen SSH-Client wie PuTTY verwenden und euch von eurer Workstation aus mit eurem Debian-10-Server verbinden um die restlichen Schritte aus diesem Tutorial zu befolgen.

3 Installiere einen Shell-Texteditor (optional)

Wir werden nano Texteditor in diesem Tutorial verwenden. Einige Benutzer bevorzugen den klassischen VI-Editor, daher werden wir hier beide Editoren installieren. Das voreingestellte vi-Programm hat ein seltsames Verhalten unter Debian und Ubuntu; um dies zu beheben, installieren wir vim-nox:

# apt-get install nano vim-nox

Wenn VI dein bevorzugter Editor ist, dann ersetze in den folgenden Befehlen zum Bearbeiten von Dateien nano durch vi.

4 Anpassen des Hostnamen

Der Hostname deines Servers sollte eine Subdomain wie „server01.example.de“ sein. Verwende keinen Domainnamen ohne Subdomain-Anteil wie „beispiel.com“ als Hostname, da dies später Probleme mit deiner E-Mail-Einrichtung verursachen wird. Zuerst solltest du den Hostnamen in /etc/hosts überprüfen und bei Bedarf ändern. Die Zeile sollte lauten: „IP-Adresse – Leerzeichen – vollständiger Hostname inkl. Domain – Leerzeichen – Subdomain-Teil“. Für unseren Hostnamen server01.example.de soll die Datei wie folgt aussehen:

# nano /etc/hosts
# 127.0.0.1       localhost.localdomain   localhost
# 218.250.146.166 server01.example.de     server01

# # The following lines are desirable for IPv6 capable hosts
# ::1     localhost ip6-localhost ip6-loopback
# ff02::1 ip6-allnodes
# ff02::2 ip6-allrouters

Bearbeite dann die Datei /etc/hostname:

# nano /etc/hostname

ie soll in unserem Fall nur den Subdomain-Teil enthalten:

# server01

Schließlich starten wir den Server neu, um die Änderung zu übernehmen:

# systemctl reboot

Melde dich erneut an und überprüfe jetzt mit diesen Befehlen, ob der Hostname korrekt ist:

# hostname
# hostname -f

Die Ausgabe soll wie folgt aussehen:

root@server01:/tmp# hostname
server01
root@server01:/tmp# hostname -f
server01.example.de

5 Aktualisieren deine Debian-Installation

Stelle zunächst sicher, dass deine /etc/apt/sources.list das Repository buster/updates enthält (dies stellt sicher, dass du immer die neuesten Sicherheitsaktualisierungen erhalten wirst) und dass die Repositorys contrib und non-free aktiviert sind, da einige benötigte Pakete nicht im Haupt-Repository vorhanden sind.

# nano /etc/apt/sources.list
# deb http://deb.debian.org/debian/ buster main contrib non-free
# deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

Laufen:

# apt-get update

So aktualisieren Sie die Datenbank der apt-Pakete

# apt-get upgrade

6 Ändern der Standard-Shell

Wenn du später ISPConfig als ACP (Admin Control Panel) verwenden möchtest, dann sollten wir den den Symlink von /sbin/dash nach /sbin/bash ändern. Dies machen wir wie folgt:

Dash als Standard-System-Shell verwenden (/bin/sh)? <– Nein
Wenn wir dies nicht ändern, wird die Installation von ISPConfig fehlschlagen.

# dpkg-reconfigure dash

7 Synchronisieren der Systemuhr

Es ist eine gute Idee, die Systemuhr mit einem NTP-Server (Network Time Protocol) über das Internet zu synchronisieren. Hierzu führen wir einfach folgenden Befehl aus:

# apt-get -y install ntp

8 Installieren von Postfix, Dovecot, MariaDB, rkhunter und Binutils

Wir können Postfix, Dovecot, MariaDB als MySQL-Alternative, rkhunter und Binutils mit einem einzigen Befehl installieren:

# apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo

Es werden Ihnen die folgenden Fragen gestellt:

Allgemeine Art der Mail-Konfiguration: <– Internet Site System Mail-Name: <– server01.example.de

Um die MariaDB-Installation zu sichern und die Test-Datenbank zu deaktivieren, führen wir diesen Befehl aus:

# mysql_secure_installation

Beantworten Sie die Fragen wie folgt:

Change the root password? [Y/n] <-- y
New password: <-- Enter a new MariaDB root password
Re-enter new password: <-- Repeat the MariaDB root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Als nächstes öffnen wir die TLS/SSL- und Submission-Ports in Postfix:

# nano /etc/postfix/master.cf

Entkommentiere die Abschnitte submission und smtps wie folgt und füge gegebenenfalls Zeilen hinzu, so dass dieser Abschnitt der Datei master.cf genau so aussieht wie der untenstehende. WICHTIG: Entferne die # vor den Zeilen, die mit smtps und submission beginnen, ebenfalls und nicht nur von den -o Zeilen nach diesen Zeilen!

[...]
submission inet n - - - - smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
 -o syslog_name=postfix/smtps
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]

Starte Postfix danach neu:

# systemctl restart postfix

Wir wollen, dass MySQL auf allen Schnittstellen lauscht, nicht nur auf localhost. Daher editieren wir /etc/mysql/mariadb.conf.d/50-server.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus, indem wir ein # davor setzen.

# nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address           = 127.0.0.1
[...]

Setze die Passwort-Authentifizierungsmethode in MariaDB auf nativ, damit wir später PHPMyAdmin verwenden können, um uns als Root-Benutzer zu verbinden:

# echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Bearbeite die Datei /etc/mysql/debian.cnf und setze das MYSQL / MariaDB-Root-Passwort dort zweimal in den Zeilen, die mit dem Wort password beginnen.

# nano /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = password
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = password
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

Um den Fehler ‚Fehler bei accept: Zu viele offene Dateien‚ werden wir jetzt höhere Grenzwerte für offene Dateien für MariaDB festlegen.

Öffne die Datei /etc/security/limits.conf mit einem Editor:

# nano /etc/security/limits.conf

und fügen diese Zeilen am Ende der Datei hinzu.

# mysql soft nofile 65535
# mysql hard nofile 65535

Als nächstes erstellen wir ein neues Verzeichnis /etc/systemd/system/mysql.service.d/ mit dem Befehl mkdir.

# mkdir -p /etc/systemd/system/mysql.service.d/

und füge eine neue Datei hinzu:

# nano /etc/systemd/system/mysql.service.d/limits.conf

füge die folgenden Zeilen in diese Datei ein:

# [Service]
# LimitNOFILE=infinity

Speicher die Datei und schließen Sie den Nano-Editor.

Dann laden wir systemd neu und starten MariaDB neu:

# systemctl daemon-reload
# systemctl restart mariadb

Überprüfe nun, ob das Netzwerk aktiviert ist. Führen folgendes aus.

# netstat -tap | grep mysql

Die Ausgabe sollte wie folgt aussehen:

# root@server1:/home/administrator# netstat -tap | grep mysql
# tcp6 0 0 [::]:mysql [::]:* LISTEN 16623/mysqld

9 Installieren von Amavisd-neu, SpamAssassin und ClamAV

Um amavisd-new, SpamAssassin und ClamAV zu installieren, führen wir folgenden Befehl aus:


# apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

Das ISPConfig 3-Setup verwendet amavisd, das die SpamAssassin-Filterbibliothek intern lädt, so dass wir SpamAssassin stoppen können, um etwas RAM freizugeben:

# systemctl stop spamassassin
# systemctl disable spamassassin

10 Apache-Webserver und PHP installieren

Apache2, PHP, FCGI, suExec, Pear und mcrypt können wie folgt installiert werden:

# apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt  imagemagick libruby libapache2-mod-python php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu libapache2-reload-perl

Führe dann den folgenden Befehl aus, um die Apache-Module suexec, rewrite, ssl, actions und include (plus dav, dav_fs und auth_digest, wenn du WebDAV verwenden möchtest) zu aktivieren:

# a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

Füge den folgenden Inhalt in die Datei ein:

# <IfModule mod_headers.c>
      RequestHeader unset Proxy early
# </IfModule>

Und aktiviere das Modul durch Ausführen:

# a2enconf httpoxy
# systemctl restart apache2

11 Let’s Encrypt installieren

ISPConfig 3.2 hat Unterstützung für die kostenlose SSL-Zertifizierungsstelle Let’s encrypt. Mit der Funktion „Let’s Encrypt“ kannst du aus ISPConfig heraus kostenlose SSL-Zertifikate für deine Website erstellen.

Nun werden wir Unterstützung für Let’s Encrypt hinzufügen.

# cd /usr/local/bin
# wget https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto
# ./certbot-auto --install-only

Es sind keine weiteren Schritte erforderlich als die Installation von LE. Die SSL-Zertifikate für die Website werden von ISPConfig erstellt, sobald du deine Websites hinzufügst.

12 PureFTPd und Quota installieren

PureFTPd und Quota können mit dem folgenden Befehl installiert werden:

# apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Erstelle die dhparam-Datei für pure-ftpd:

# openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

Bearbeite die Datei /etc/default/pure-ftpd-common…

# nano /etc/default/pure-ftpd-common

und stelle sicher, dass der Startmodus auf Standalone eingestellt ist und setzen Sie VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Nun konfigurieren wir PureFTPd, um FTP- und TLS-Sitzungen zuzulassen. FTP ist ein sehr unsicheres Protokoll, da alle Passwörter und alle Daten im Klartext übertragen werden. Durch die Verwendung von TLS kann die gesamte Kommunikation verschlüsselt werden, wodurch FTP wesentlich sicherer wird.

Wenn du FTP- und TLS-Sitzungen erlauben möchtest, führe folgende Schritte aus:

# echo 1 > /etc/pure-ftpd/conf/TLS

Um TLS verwenden zu können, müssen wir ein SSL-Zertifikat erstellen. Ich erstelle es in /etc/ssl/private/, deshalb lege ich zuerst dieses Verzeichnis an:

# mkdir -p /etc/ssl/private/

Danach können wir das SSL-Zertifikat wie folgt erzeugen:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Country Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "DE").
State or Province Name (full name) [Some-State]: <-- Enter your State or Province Name.
Locality Name (eg, city) []: <-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []: <-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, YOUR name) []: <-- Enter the Fully Qualified Domain Name of the system (e.g. "server1.example.com").
Email Address []: <-- Enter your Email Address.

Ändere die Berechtigungen des SSL-Zertifikats:

# chmod 600 /etc/ssl/private/pure-ftpd.pem

Starte anschließend PureFTPd neu:

# systemctl restart pure-ftpd-mysql

Bearbeite die /etc/fstab. Meine sieht wie folgt aus (ich habe ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 zur Partition mit dem Mount-Punkt / hinzugefügt):

# nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Um die Quota zu aktivieren, führe diese Befehle aus:

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

13 BIND DNS-Server installieren

BIND kann wie folgt installiert werden:

# apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl

Öffne anschließend /etc/cron.d/awstats…

# nano /etc/cron.d/awstats
#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

14 Jailkit installieren

Jailkit wird nur benötigt, wenn Sie SSH-Benutzer in das Chroot-System aufnehmen möchten. Es kann wie folgt installiert werden:

# apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5 > debian/compat
./debian/rules binary

Du kannst nun das Jailkit .deb-Paket wie folgt installieren:

# cd ..
# dpkg -i jailkit_2.20-1_*.deb
# rm -rf jailkit-2.20*

15 Fail2ban und UFW-Firewall installieren

Dies ist optional, wird aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:

# nano /etc/fail2ban/jail.local

Und füge die folgende Konfiguration hinzu.

[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled = true
port = smtp
filter = postfix[mode=auth]
logpath = /var/log/mail.log
maxretry = 3

Starte danach fail2ban neu:

systemctl restart fail2ban

Um die UFW-Firewall zu installieren, führe diesen apt-Befehl aus:

# apt-get install ufw

Der erste Schritt beim Einrichten einer Firewall besteht darin, Ihr Standardverhalten festzulegen. Es ist im Allgemeinen eine gute Idee, eingehende Anfragen standardmäßig zu verwerfen und ausgehenden Datenverkehr zuzulassen. Wenn du es vorziehen, alles zu blockieren, kannst du dies tun, aber sei bei der Einrichtung vorsichtig.

Festlegen der Standard Regeln:

# sudo ufw default deny incoming
# sudo ufw default allow outgoing

Freischalten der Ports:

# sudo ufw allow 22
# sudo ufw allow 80
# sudo ufw allow 443
# sudo ufw allow ftp
# sudo ufw deny 25
# udo ufw deny http

Nun musst du noch die UFW

# sudo ufw enable

Überprüfe deine Firewalleinstellungen:

# sudo ufw status

16 Installieren des Datenbank-Verwaltungswerkzeug PHPMyAdmin

Seit Debian 10 ist PHPMyAdmin nicht mehr als .deb-Paket verfügbar. Daher werden wir es aus den Quellen installieren.

Erstellen Sie Ordner für PHPMyAdmin:

# mkdir /usr/share/phpmyadmin
# mkdir /etc/phpmyadmin
# mkdir -p /var/lib/phpmyadmin/tmp
# chown -R www-data:www-data /var/lib/phpmyadmin
# touch /etc/phpmyadmin/htpasswd.setup

Gehen Sie in das Verzeichnis /tmp und laden Sie die PHPMyAdmin-Quellen herunter:

# cd /tmp
# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Entpacke die heruntergeladene Archivdatei und verschiebe die Dateien in den Ordner /usr/share/phpmyadmin und bereinigen Sie das Verzeichnis /tmp.

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languages

Erstellen eine neue Konfigurationsdatei für PHPMyaAdmin auf der Grundlage der mitgelieferten Beispieldatei:

# cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Öffnen Sie die Konfigurationsdatei mit dem nano-Editor:

nano /usr/share/phpmyadmin/config.inc.php

Setze ein sicheres Passwort (Blowfish-Geheimnis), das 32 Zeichen lang sein muss:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Verwende nicht mein Beispiel blowfish secret, sondern setzen Sie Ihr eigenes!

Füge dann eine Zeile hinzu, um das Verzeichnis festzulegen, das PHPMyAdmin zum Speichern temporärer Dateien verwenden soll:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Als nächstes erstellen wir die Apache-Konfigurationsdatei für PHPMyAdmin, indem wir eine neue Datei im nano-Editor öffnen:

# nano /etc/apache2/conf-available/phpmyadmin.conf

Füge die folgende Konfiguration in die Datei ein und speicher sie.

# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php

<IfModule mod_php7.c>
AddType application/x-httpd-php .php

php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName „phpMyAdmin Setup“
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>

# Disallow web access to directories that don’t need it
<Directory /usr/share/phpmyadmin/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Order Deny,Allow
Deny from All
</Directory>

Aktiviere die Konfiguration und starten Sie Apache neu.

# a2enconf phpmyadmin
# systemctl restart apache2

Im nächsten Schritt werden wir den phpMyadmin-Konfigurationsspeicher (Datenbank) konfigurieren.

Melden Sie sich bei MariaDB als Root-Benutzer an:

# mysql -u root -p

Erstelle in der MariaDB-Shell eine neue Datenbank für PHPMyAdmin:

# MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Erstelle dann einen neuen Benutzer:

# MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Ersetze in den Befehlen oben und unten das Wort mypassword durch ein sicheres Passwort deiner Wahl, verwende beide Male dasselbe Passwort. Gewähre dann dem Benutzer Zugriff auf diese Datenbank und lade die Datenbankberechtigungen neu.

# MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
# MariaDB [(none)]> FLUSH PRIVILEGES;
# MariaDB [(none)]> EXIT;

Lade schließlich die SQL-Tabellen in die Datenbank:

# mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Geben Sie auf Anfrage das MariaDB-Root-Passwort ein.

Jetzt müssen wir nur noch die phpmyadmin-Benutzerdetails in der Konfigurationsdatei festlegen. Öffnen Sie die Datei erneut im nano editor:

# nano /usr/share/phpmyadmin/config.inc.php

Scrolle nach unten, bis Sie die untenstehenden Zeilen sehen, und bearbeiten Sie sie:

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';
/* Storage database and tables */
$cfg[‚Servers‘][$i][‚pmadb‘] = ‚phpmyadmin‘;
$cfg[‚Servers‘][$i][‚bookmarktable‘] = ‚pma__bookmark‘;
$cfg[‚Servers‘][$i][‚relation‘] = ‚pma__relation‘;
$cfg[‚Servers‘][$i][‚table_info‘] = ‚pma__table_info‘;
$cfg[‚Servers‘][$i][‚table_coords‘] = ‚pma__table_coords‘;
$cfg[‚Servers‘][$i][‚pdf_pages‘] = ‚pma__pdf_pages‘;
$cfg[‚Servers‘][$i][‚column_info‘] = ‚pma__column_info‘;
$cfg[‚Servers‘][$i][‚history‘] = ‚pma__history‘;
$cfg[‚Servers‘][$i][‚table_uiprefs‘] = ‚pma__table_uiprefs‘;
$cfg[‚Servers‘][$i][‚tracking‘] = ‚pma__tracking‘;
$cfg[‚Servers‘][$i][‚userconfig‘] = ‚pma__userconfig‘;
$cfg[‚Servers‘][$i][‚recent‘] = ‚pma__recent‘;
$cfg[‚Servers‘][$i][‚favorite‘] = ‚pma__favorite‘;
$cfg[‚Servers‘][$i][‚users‘] = ‚pma__users‘;
$cfg[‚Servers‘][$i][‚usergroups‘] = ‚pma__usergroups‘;
$cfg[‚Servers‘][$i][’navigationhiding‘] = ‚pma__navigationhiding‘;
$cfg[‚Servers‘][$i][’savedsearches‘] = ‚pma__savedsearches‘;
$cfg[‚Servers‘][$i][‚central_columns‘] = ‚pma__central_columns‘;
$cfg[‚Servers‘][$i][‚designer_settings‘] = ‚pma__designer_settings‘;
$cfg[‚Servers‘][$i][‚export_templates‘] = ‚pma__export_templates‘;

Ich habe die Zeilen, die ich bearbeitet habe, fett markiert. Ersetze mypassword durch das Passwort, das du für den Benutzer phpmyadmin gewählt hast. Beachte, dass das // vor den Zeilen ebenfalls entfernt wurde!

17 RoundCube Webmail installieren (optional)

In diesem Kapitel werden wir den RoundCube Webmail-Client installieren. Zunächst müssen wir die Datenbank für Roundcube manuell erstellen, da es derzeit ein Problem im RoundCube-Debian-Installer gibt, das dazu führt, dass er die Datenbank nicht automatisch erstellt. Führe diesen Befehl aus, um die Datenbank zu erstellen:

echo "CREATE DATABASE roundcube;" | mysql --defaults-file=/etc/mysql/debian.cnf

Dann installiere RoundCube mit diesem Befehl:

# apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Der Installer wird die folgenden Fragen stellen:

# Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- press enter

Bearbeite dann die RoundCube-Datei /etc/roundcube/config.inc.php und passen Sie einige Einstellungen an:

nano /etc/roundcube/config.inc.php

Setze default_host und smtp_server auf localhost.

# $config['default_host'] = 'localhost';
# $config['smtp_server'] = 'localhost';

Bearbeiten dann die Apache-Roundcube-Konfigurationsdatei /etc/apache2/conf-enabled/roundcube.conf:

# nano /etc/apache2/conf-enabled/roundcube.conf

Und füge eine Alias-Zeile für den Apache /webmail-Alias und eine für /roundcube hinzu, Sie können die Zeile direkt am Anfang der Datei einfügen. HINWEIS: Verwende /mail nicht als Alias, sonst funktioniert das E-Mail-Modul ispconfig nicht mehr!

Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube

Laden Sie dann Apache neu:

systemctl reload apache2

Jetzt können Sie wie folgt auf RoundCube zugreifen:

https:// 218.250.146.166 /webmail

http://www.example.de/webmail http://server01.example.de:8080/webmail (nachdem du ISPConfig installiert hast, siehe nächstes Kapitel)