Installation und Konfiguration von Webservern (Nginx/Apache)
1. Was ist ein Web-Server?
Heute sprechen wir über Nginx und Apache, die zwei beliebtesten Web-Server. Am Ende der Vorlesung wird dein Server stolz nichts ahnende Benutzer im Internet begrüßen können.
Bevor wir uns auf die Befehle stürzen, lass uns erst verstehen, was wir eigentlich erreichen wollen. Ein Web-Server ist ein Programm, das HTTP-Anfragen entgegennimmt (zum Beispiel, wenn der Nutzer im Browser eine Website-Adresse eingibt), diese verarbeitet und mit passendem Inhalt antwortet (HTML-Seite, Datei oder auch der Fehler "404 Not Found"). Er fungiert als Bindeglied zwischen den Benutzern und deinem Inhalt.
Nginx vs Apache: Der Kampf der Web-Server
Wenn Nginx und Apache sich in einem Café treffen würden, dann:
- Nginx würde einen Lavendel-Latte bestellen und alle Aufgaben sofort asynchron erledigen: "Gib mir die Anfrage, und ich schicke dir die Datei in einer Minute zurück, keine Ablenkung!".
- Apache hingegen wäre traditioneller, würde für jede Aufgabe einen eigenen Thread erstellen und höflich, aber bei einer großen Anzahl von Anfragen langsamer antworten.
Kurz zusammengefasst:
Merkmal | Nginx | Apache |
---|---|---|
Architektur | Asynchron | Thread-basiert |
Leistung | Hoch bei großer Last | Eignet sich für dynamische Inhalte (PHP/Perl) |
Einfachheit | Einfache Konfiguration, aber mit Eigenheiten | Universeller, aber komplexer |
Wann sollte man was wählen?
- Wenn deine Website aus ein paar statischen Dateien besteht (z. B. Blog oder Landing Page), dann ist Nginx dein Freund.
- Wenn du mit dynamischen Web-Anwendungen arbeitest (z. B. PHP-Website), bietet Apache mehr Flexibilität.
2. Installation eines Webservers
Jetzt, wo du verstanden hast, warum das wichtig ist, ist es an der Zeit, mit der Installation zu beginnen. Wir werden uns die Installation sowohl von Nginx als auch von Apache ansehen. Wähle das aus, was dir besser gefällt, oder installiere direkt beide, um dich wie ein Profi zu fühlen.
Installation von Nginx
Paketliste aktualisieren:
sudo apt-get update
Nginx installieren:
sudo apt-get install nginx
Server-Status überprüfen:
sudo systemctl status nginx
Wenn alles in Ordnung ist, siehst du etwas wie:
active (running)
.Standardseite überprüfen: Öffne deinen Browser und gib
http://localhost
ein. Du solltest die Begrüßungsseite von Nginx sehen, die bestätigt, dass die Installation erfolgreich war.
Installation von Apache
Paketliste aktualisieren:
sudo apt-get update
Apache installieren:
sudo apt-get install apache2
Server-Status überprüfen:
sudo systemctl status apache2
Ähnlich wie bei Nginx sollte der Status „active (running)“ sein.
Standardseite überprüfen: Öffne im Browser
http://localhost
. Jetzt sollte die Standardseite von Apache angezeigt werden.
3. Grundlegende Konfiguration des Webservers
Wo sind die Einstellungen versteckt?
Bei Nginx befindet sich die Hauptkonfigurationsdatei unter:
/etc/nginx/nginx.conf
Bei Apache:
/etc/apache2/apache2.conf
Versuch, die Konfigurationsdateien mit deinem Lieblingseditor zu öffnen (zum Beispiel nano
):
sudo nano /etc/nginx/nginx.conf
Hier beginnt dein erstes Abenteuer: Vielleicht verstehst du jetzt gar nichts, weil die Konfigurationsdateien wie Zaubersprüche aus einem Rollenspiel aussehen. Aber keine Panik – wir klären das.
Starten, Stoppen und Neustarten von Servern
Wenn du weißt, wie man Dienste in Linux verwaltet, ist „die halbe Miete geschafft“. Hier sind die wichtigsten Befehle, um unsere Web-Generatoren zu steuern:
Für Nginx:
sudo systemctl start nginx # Start
sudo systemctl stop nginx # Stop
sudo systemctl restart nginx # Neustart
sudo systemctl reload nginx # Konfiguration neu laden
Für Apache:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
Konfiguration überprüfen
Bevor du den Server neustartest, überprüfe immer, ob du keine Fehler gemacht hast:
Für Nginx:
sudo nginx -t
Für Apache:
sudo apachectl configtest
Jeder Fehler in der Konfiguration wird angezeigt – du kannst den Server nicht versehentlich kaputt machen.
4. Demonstration: Wir starten unsere erste Website
Jetzt machen wir das, was Webentwickler wirklich lieben – wir erstellen eine Website mit dem unglaublich kreativen Namen „Hello Server“.
Für Nginx
Erstelle ein Verzeichnis für die Website:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Schreibe folgendes in die Datei (ja, alles Geniale ist einfach):
<h1>Hello, Nginx Server!</h1>
Konfiguration einstellen:
sudo nano /etc/nginx/sites-available/hello
Hier ein Beispiel für eine einfache Konfiguration:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
Aktiviere die Konfiguration:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Füge einen Eintrag in
/etc/hosts
hinzu, um den Domainnamenhello.local
auf der lokalen Maschine zu konfigurieren:127.0.0.1 hello.local
Überprüfe die Website im Browser: http://hello.local.
Die hosts-Datei enthält das Mapping von IP-Adressen zu Domainnamen. Das ist dein lokaler DNS-Server. Diese Datei existiert in jedem Betriebssystem. Auch unter Windows ist sie vorhanden, erreichbar unter C:\Windows\System32\drivers\etc\hosts
Für Apache
Erstelle ein Verzeichnis:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Befülle die Datei:
<h1>Hello, Apache Server!</h1>
Erstelle die virtuelle Host-Konfiguration:
sudo nano /etc/apache2/sites-available/hello.conf
Hier ein Beispiel für die Konfiguration:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Aktiviere die Konfiguration:
sudo a2ensite hello.conf sudo systemctl reload apache2
Füge einen Eintrag in
/etc/hosts
hinzu:127.0.0.1 hello.local
Teste die Funktionalität: http://hello.local.
Nach der heutigen Vorlesung seid ihr bereit, selbstständig einen grundlegenden Webserver zu installieren und zu konfigurieren. Noch ein paar weitere Schritte – und ihr könnt voll funktionsfähige Websites und Anwendungen bereitstellen, die nicht mehr wie Kinderzeichnungen aussehen. Irgendwo um die Ecke lauert HTTPS, aber darüber später.
GO TO FULL VERSION