- Apache2 installieren
- MariaDB installieren
- PHPMyAdmin installieren
- SSL-Zertifikat einrichten
- Automatische Zertifikatserneuerung einrichten
- Firewall konfigurieren
- Apache konfigurieren
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.
MariaDB installieren:
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.
SSL-Zertifikat
SSL-Zertifikat von Lets Encrypt mit Certbot einrichten:
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.
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:
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