Bereitstellung eines Webservers mit virtuellen Hosts und SSL
1. Vorbereitung der Umgebung
Jetzt ist es an der Zeit, alles zusammenzubringen. Heute stellen wir einen Server mit mehreren virtuellen Hosts bereit und fügen HTTPS hinzu. Wir werden testen, debuggen und final konfigurieren.
Unsere Aufgabe
In diesem Projekt werden wir zwei Websites auf einem Webserver bereitstellen:
- example.com
- test.com
Für jede Website konfigurieren wir einen virtuellen Host, fügen HTTPS hinzu und zeigen die Schritte zur Fehlerbehebung und Prüfung. Bereit? Lass uns loslegen!
Vorbereitung
Bevor wir anfangen, stellen wir sicher, dass alles richtig eingestellt ist:
Du hast bereits einen installierten Webserver (Nginx oder Apache).
Falls du Nginx verwendest:
sudo apt-get update sudo apt-get install nginx
Oder Apache:
sudo apt-get update sudo apt-get install apache2
Das Certbot-Paket zur Arbeit mit SSL ist installiert.
Für Nginx:
sudo apt-get install certbot python3-certbot-nginx
Für Apache:
sudo apt-get install certbot python3-certbot-apache
Du hast Zugriff auf einen Server, auf dem die DNS für die Domains example.com und test.com eingerichtet sind, oder du kannst
/etc/hosts
für Tests verwenden.
2. Verzeichnisse für jede Website konfigurieren
Fangen wir mit dem Erstellen von Verzeichnissen und Dateien für unsere Websites an.
Schritt 1: Ordner für die Websites erstellen
sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com
Schritt 2: Test-HTML-Dateien erstellen
Erstellen wir eine einfache HTML-Datei für jede Website:
example.com
sudo nano /var/www/example.com/index.html
Inhalt:
<!DOCTYPE html>
<html>
<head>
<title>Willkommen auf example.com</title>
</head>
<body>
<h1>Das ist example.com</h1>
<p>Willkommen auf example.com! Die Seite läuft und ist sicher mit SSL!</p>
</body>
</html>
test.com
sudo nano /var/www/test.com/index.html
Inhalt:
<!DOCTYPE html>
<html>
<head>
<title>Willkommen auf test.com</title>
</head>
<body>
<h1>Das ist test.com</h1>
<p>Willkommen auf test.com! Die Seite läuft und ist sicher mit SSL!</p>
</body>
</html>
3. Konfiguration der virtuellen Hosts
Wir erstellen eine separate Konfigurationsdatei für jede Website.
Schritt 1: Konfiguration für Nginx
example.com
sudo nano /etc/nginx/sites-available/example.com
Inhalt:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
test.com
sudo nano /etc/nginx/sites-available/test.com
Inhalt:
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Wir aktivieren die Konfiguration:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Server neustarten:
sudo nginx -t
sudo systemctl reload nginx
Schritt 2: Konfiguration für Apache
example.com
sudo nano /etc/apache2/sites-available/example.com.conf
Inhalt:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
test.com
sudo nano /etc/apache2/sites-available/test.com.conf
Inhalt:
<VirtualHost *:80>
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com
<Directory /var/www/test.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Wir aktivieren die Konfigurationen:
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2
4. Konfiguration von HTTPS für Websites
Jetzt verbinden wir SSL für beide Websites mit Let’s Encrypt.
sudo certbot --nginx
# oder für Apache:
sudo certbot --apache
Während des Prozesses wird vorgeschlagen, auszuwählen, für welche Websites Zertifikate ausgestellt werden sollen. Wähle example.com
und test.com
. Certbot aktualisiert automatisch die Konfiguration der Server.
5. Überprüfung der Webseitenfunktionalität
Nach Abschluss der Konfiguration besuche deine Webseiten:
Du solltest die erstellten HTML-Seiten sehen. Stelle sicher, dass der Browser "Sicher" (Secure) in der Adressleiste anzeigt.
6. Debugging und Überprüfung
Falls etwas schiefgelaufen ist, überprüfe die Logs:
Für Nginx:
sudo tail -f /var/log/nginx/error.log
Für Apache:
sudo tail -f /var/log/apache2/error.log
Oder überprüfe die Erreichbarkeit mit curl
:
curl -I http://example.com
curl -I https://example.com
7. Verlängerung von Zertifikaten
Certbot erneuert Zertifikate automatisch mithilfe von cron
des Systems. Um es zu überprüfen, kannst du es manuell starten:
sudo certbot renew --dry-run
So, Schritt für Schritt haben wir einen Webserver mit Unterstützung für mehrere Websites und HTTPS eingerichtet. Du bist gerade den ganzen Weg vom leeren Server bis hin zu einem funktionierenden Server mit virtuellen Hosts und SSL gegangen. Jetzt ist dein Server bereit, der Welt deine Websites zu zeigen. Ist das nicht genial?
GO TO FULL VERSION