Mithilfe der nachfolgenden Anleitung installierst du Apache2 als Webserver, MariaDB als Datenbank-System und PHPmyAdmin als Verwaltungs-UI für MariaDB. Danach wird der Webserver mit einem SSL Zertifikat von Lets Encrypt ausgestattet, welches sich selbstständig täglich erneuert. Um die neue Webseite abzusichern, wird die Firewall des Servers mit UFW abgesichert.

Voraussetzung für diese Anleitung ist ein Ubuntu oder Debian System. Die Befehle anderer Linux Distributionen unterscheiden sich von den in der Anleitung genannten.

Apache2 installieren:

Öffne eine Terminal-Sitzung und führe folgenden Befehl aus, um Apache2 zu installieren:

sudo apt-get update
sudo apt-get install apache2

Der Befehl apt-get update aktualisiert die Liste der verfügbaren Pakete und deren Versionen. Der Befehl apt-get install apache2 installiert das Apache2-Paket.

Nach der Installation kannst du überprüfen, ob Apache2 ordnungsgemäß installiert wurde, indem du im Browser die IP-Adresse oder den Hostnamen des Servers eingibst. Wenn die Installation erfolgreich war, sollte die Apache2-Willkommensseite angezeigt werden.

Apache2 Willkommensseite
Apache2 Standard-Willkommensseite

MariaDB installieren:

MariaDB ist eine der bekanntesten Datenbanksysteme der Welt.
MariaDB ist eine der bekanntesten Datenbanksysteme der Welt.

Führe den folgenden Befehl aus, um MariaDB zu installieren:

sudo apt-get install mariadb-server

Während der Installation wirst du aufgefordert, ein Passwort für den MySQL-Root-Benutzer festzulegen. Gib das Passwort ein und bestätige es. Stelle sicher, dass du das Passwort sicher aufbewahrst, da es später für den Zugriff auf die MariaDB-Datenbank benötigt wird.

Nach der Installation kannst du überprüfen, ob MariaDB ordnungsgemäß installiert wurde, indem du den folgenden Befehl ausführst:

sudo mysql -u root -p

Du wirst aufgefordert, das Passwort für den MySQL-Root-Benutzer einzugeben. Gib das Passwort ein und drücke die Eingabetaste. Wenn die Anmeldung erfolgreich war, wirst du in die MySQL-Kommandozeile eingeloggt.

PHPMyAdmin installieren:

Führe den folgenden Befehl aus, um PHPMyAdmin zu installieren:

sudo apt-get install phpmyadmin

Während der Installation wirst du aufgefordert, ein Passwort für den MySQL-Root-Benutzer festzulegen. Gib das Passwort ein und bestätige es. Du wirst auch aufgefordert, das Passwort für den PHPMyAdmin-Benutzer festzulegen. Gib auch dieses Passwort ein und bestätige es.

Nach der Installation kannst du PHPMyAdmin über die URL http://server_ip/phpmyadmin im Browser aufrufen. Du wirst aufgefordert, dich mit dem PHPMyAdmin-Benutzernamen und -Passwort anzumelden. Gib die Anmeldeinformationen ein und klicke auf „Anmelden“, um auf die PHPMyAdmin-Oberfläche zuzugreifen.

PHPMyAdmin Webinterface
PHPMyAdmin Webinterface

SSL-Zertifikat

SSL-Zertifikat von Lets Encrypt mit Certbot einrichten:

Logo der kostenlosen Zertifikatstelle "Lets Encrypt"
Logo der kostenlosen Zertifikatstelle „Lets Encrypt“

Um SSL-Zertifikate von Lets Encrypt mit Certbot zu erhalten, führe die folgenden Schritte aus:

a) Certbot installieren:

Führe den folgenden Befehl aus, um Certbot zu installieren:

sudo apt-get install certbot

b) SSL-Zertifikat anfordern:

Führe den folgenden Befehl aus, um ein SSL-Zertifikat anzufordern:

sudo certbot --apache

Du wirst aufgefordert, deine E-Mail-Adresse einzugeben und zu bestätigen, dass du die Bedingungen von Lets Encrypt akzeptierst. Wähle dann das Domain-Zertifikat aus, für das du ein SSL-Zertifikat anfordern möchtest, und folge den Anweisungen auf dem Bildschirm.

Wenn das SSL-Zertifikat erfolgreich angefordert wurde, wird es automatisch in Apache2 konfiguriert. Du kannst überprüfen, ob das SSL-Zertifikat ordnungsgemäß installiert wurde, indem du die URL https://server_ip im Browser aufrufst. Du solltest die Apache2-Willkommensseite über eine sichere Verbindung sehen.

Automatische Erneuerung des SSL-Zertifikats einstellen:

Um die automatische Erneuerung des SSL-Zertifikats einzustellen, führe den folgenden Befehl aus:

sudo certbot renew --dry-run

Dieser Befehl simuliert die Erneuerung des Zertifikats und gibt an, ob das Zertifikat erfolgreich erneuert werden kann. Wenn der Befehl erfolgreich ausgeführt wurde, kannst du den Cron-Job einrichten, der das Zertifikat automatisch erneuert.

Führe den folgenden Befehl aus, um den Cron-Job einzurichten:

sudo crontab -e

Füge die folgende Zeile am Ende der Datei hinzu:

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

Dieser Cron-Job führt das SSL-Zertifikat jeden Tag um Mitternacht und um 12 Uhr mittags erneuern.

Cronjob Bild

Firewall

Firewall konfigurieren:

Um sicherzustellen, dass nur die TCP-Ports 80, 443 und 22 eingehend zugelassen werden, kannst du die Firewall konfigurieren.

a) UFW (Uncomplicated Firewall) installieren:

UFW Firewall macht die Verwaltung von Firewall-Regeln einfacher
UFW Firewall macht die Verwaltung von Firewall-Regeln einfacher

Führe den folgenden Befehl aus, um UFW zu installieren:

sudo apt-get install ufw

b) Firewall-Regeln festlegen:

Führe die folgenden Befehle aus, um die Firewall-Regeln festzulegen:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Der Befehl ufw default deny incoming lehnt alle eingehenden Verbindungen ab, es sei denn, sie werden explizit erlaubt. Der Befehl ufw default allow outgoing erlaubt alle ausgehenden Verbindungen. Der Befehl ufw allow ssh erlaubt den SSH-Zugriff (TCP-Port 22). Der Befehl ufw allow http erlaubt den HTTP-Zugriff (TCP-Port 80). Der Befehl ufw allow https erlaubt den HTTPS-Zugriff (TCP-Port 443).

c) Firewall aktivieren:

Führe den folgenden Befehl aus, um die Firewall zu aktivieren:

sudo ufw enable

Du wirst aufgefordert, die Aktivierung der Firewall zu bestätigen. Gib y ein und drücke die Eingabetaste, um die Firewall zu aktivieren.

d) Firewall-Status überprüfen:

Führe den folgenden Befehl aus, um den Status der Firewall zu überprüfen:

sudo ufw status

Der Befehl zeigt den aktuellen Status der Firewall und die festgelegten Regeln an. Wenn die Firewall ordnungsgemäß konfiguriert wurde, sollte der Status wie folgt aussehen:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Apache2 konfigurieren (Optional):

a) Virtual Hosts einrichten:

Um mehrere Websites auf demselben Server zu hosten, kannst du Virtual Hosts einrichten.

Erstelle eine neue Konfigurationsdatei für den Virtual Host mit dem folgenden Befehl:

sudo nano /etc/apache2/sites-available/example.com.conf

Füge folgenden Inhalt in die Datei ein und ersetze example.com durch die tatsächliche Domain:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Erstelle das Verzeichnis für die Website mit dem folgenden Befehl:

sudo mkdir -p /var/www/example.com/public_html

Füge eine Beispieldatei hinzu, um zu überprüfen, ob der Virtual Host ordnungsgemäß konfiguriert ist:

echo "Hello World" | sudo tee /var/www/example.com/public_html/index.html

Aktiviere den Virtual Host mit dem folgenden Befehl:

sudo a2ensite example.com.conf

b) .htaccess-Datei erstellen:

Um bestimmte Einstellungen für eine Website zu konfigurieren, kannst du eine .htaccess-Datei erstellen.

Erstelle eine neue .htaccess-Datei im Verzeichnis der Website mit dem folgenden Befehl:

sudo nano /var/www/example.com/public_html/.htaccess

Füge folgenden Inhalt in die Datei ein und ersetze example.com durch die tatsächliche Domain:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Dieser Code sorgt dafür, dass alle Anfragen an die Domain ohne www automatisch an die Domain mit www umgeleitet werden.

c) Apache2 neu starten:

Führe den folgenden Befehl aus, um Apache2 neu zu starten:

sudo systemctl restart apache2

Damit sind die Installation und Konfiguration von Apache2, MariaDB und PHPMyAdmin auf dem Ubuntu-Server abgeschlossen!

Wenn du noch ein Gerät brauchst, auf dem du den Webserver installieren kannst, oder generell Basteln kannst schau mal hier: Raspberry Pi oder Stromsparender Mini-PC

Ein weiteres Tutorial findest du hier: Aufbau eines hochverfügbaren Apache Cluster