15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
30.10.2024
1 +1

Sites-Enabled und Sites-Available: Vollständiger Leitfaden für NGINX und Apache

NGINX und Apache bleiben die zwei dominantesten Webserver im Internet — und das aus gutem Grund. Beide sind kampferprobt, hochgradig konfigurierbar und in der Lage, komplexe, hochfrequentierte Websites mit Leichtigkeit zu bedienen. Eines der wichtigsten Konzepte für jeden Systemadministrator, der einen Linux-basierten Server verwaltet, ist das Verständnis dafür, wie diese Webserver die Website-Konfiguration durch die sites-available und sites-enabled Verzeichnisstruktur handhaben.

Egal, ob Sie eine einzelne Website betreiben oder Dutzende von Virtual Hosts auf einem VPS Hosting Plan verwalten, die Beherrschung dieses Konfigurationsmodells gibt Ihnen präzise Kontrolle darüber, welche Sites aktiv sind, welche sich in der Staging-Phase befinden und wie Ihre Server-Ressourcen zugewiesen werden.

Dieser Leitfaden bietet eine umfassende, schrittweise Anleitung zum Aktivieren, Deaktivieren und Verwalten von Websites mit NGINX und Apache auf Linux-Systemen.

Verständnis von sites-available und sites-enabled

Sowohl NGINX als auch Apache verwenden ein Zwei-Verzeichnis-Modell, um die Site-Konfiguration von der Site-Aktivierung zu trennen. Dieses Architekturmuster ist in seiner Einfachheit elegant und in der Praxis äußerst leistungsfähig.

sites-available

Das /etc/nginx/sites-available/ oder /etc/apache2/sites-available/ Verzeichnis fungiert als Bibliothek aller möglichen Site-Konfigurationen. Jede Website, die Sie auf dem Server hosten möchten, erhält ihre eigene Konfigurationsdatei, die hier gespeichert ist. Entscheidend ist, dass Dateien in diesem Verzeichnis nicht aktiv sind — sie definieren die Konfiguration, dienen aber keinen Traffic, bis sie explizit aktiviert werden.

sites-enabled

Das /etc/nginx/sites-enabled/ oder /etc/apache2/sites-enabled/ Verzeichnis enthält symbolische Links, die auf Konfigurationsdateien in sites-available verweisen. Nur Sites mit einem aktiven Symlink in diesem Verzeichnis werden vom Webserver geladen und Besuchern bereitgestellt.

Diese Trennung bietet mehrere wichtige Vorteile:

  • Nicht-destruktives Deaktivieren: Sie können eine Site deaktivieren, ohne ihre Konfiguration zu löschen.
  • Schnelle Bereitstellung: Das Staging einer neuen Site ist so einfach wie das Erstellen eines Symlinks.
  • Saubere Organisation: Alle Konfigurationen existieren an einem Ort, unabhängig davon, ob sie aktiv sind.

Verwalten von Websites mit Apache

1. Apache Virtual Hosts Konfiguration

Apache verwendet Virtual Hosts, um mehrere Websites von einer einzelnen Server-Instanz aus zu bedienen. Jede Website erhält ihre eigene Konfigurationsdatei, die Apache mitteilt, wie eingehende Anfragen für diese Domain zu handhaben sind — einschließlich des Document Root, der Logging-Pfade, der Server-Aliase und mehr.

Konfigurationsdateien für Apache Virtual Hosts werden gespeichert in:

/etc/apache2/sites-available/

#### Erstellen einer Virtual Host Konfigurationsdatei

Um eine Konfigurationsdatei für eine Site namens test.oo.md zu erstellen, führen Sie aus:

sudo nano /etc/apache2/sites-available/test.oo.md.conf

Definieren Sie in der Datei Ihren Virtual Host Block:

<VirtualHost *:80>
    ServerAdmin admin@test.oo.md
    ServerName your_domain_or_IP
    ServerAlias www.test.oo.md
    DocumentRoot /var/www/test.oo.md

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

> Hinweis: Ersetzen Sie your_domain_or_IP durch Ihren tatsächlichen Domainnamen oder Ihre Server-IP-Adresse. Die ServerAlias Direktive ermöglicht es Apache, auch auf die www Subdomain zu reagieren.

Speichern und beenden Sie die Datei, wenn Sie fertig sind.

2. Aktivieren Sie die Site mit a2ensite

Sobald die Konfigurationsdatei vorhanden ist, aktivieren Sie die Site mit dem a2ensite Befehl (Apache 2 Enable Site):

sudo a2ensite test.oo.md.conf

Dieser Befehl erstellt automatisch einen symbolischen Link von sites-available zu sites-enabled:

/etc/apache2/sites-enabled/test.oo.md.conf -> /etc/apache2/sites-available/test.oo.md.conf

Die Site ist nun bereit, bedient zu werden, aber Änderungen werden erst wirksam, wenn Apache neu geladen wird.

3. Testen Sie die Apache-Konfiguration

Bevor Sie Apache neu laden, validieren Sie immer Ihre Konfigurationssyntax, um Fehler zu erkennen:

sudo apachectl configtest

Eine erfolgreiche Ausgabe zeigt:

Syntax OK

Wenn Fehler vorhanden sind, beschreibt Apache das Problem und die Zeilennummer — beheben Sie diese, bevor Sie fortfahren.

4. Laden Sie Apache neu, um Änderungen anzuwenden

sudo systemctl reload apache2

Die Verwendung von reload anstelle von restart wird in Produktionsumgebungen bevorzugt, da die neue Konfiguration angewendet wird, ohne aktive Verbindungen zu unterbrechen.

5. Deaktivieren Sie eine Site mit a2dissite

Um eine Site offline zu nehmen, ohne ihre Konfiguration zu löschen, verwenden Sie den a2dissite Befehl:

sudo a2dissite test.oo.md.conf

Dies entfernt den symbolischen Link aus sites-enabled. Die Konfigurationsdatei in sites-available bleibt unverändert. Laden Sie Apache neu, um die Änderung anzuwenden:

sudo systemctl reload apache2

Verwalten von Websites mit NGINX

1. NGINX Server Block Konfiguration

NGINX verwendet Server Blocks — das funktionale Äquivalent zu Apaches Virtual Hosts. Server Block Konfigurationsdateien werden gespeichert in:

/etc/nginx/sites-available/

#### Erstellen einer Server Block Konfigurationsdatei

Um eine Konfigurationsdatei für test.oo.md zu erstellen, führen Sie aus:

sudo nano /etc/nginx/sites-available/test.oo.md

Definieren Sie Ihren Server Block in der Datei:

server {
    listen 80;
    server_name test.oo.md www.test.oo.md;

    root /var/www/test.oo.md;
    index index.html index.htm;

    access_log /var/log/nginx/test.oo.md_access.log;
    error_log  /var/log/nginx/test.oo.md_error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

> Wichtige Direktiven erklärt:

> – listen 80 — Weist NGINX an, auf HTTP-Traffic auf Port 80 zu lauschen.

> – server_name — Definiert, auf welche Domainnamen dieser Block reagiert.

> – root — Legt das Document Root Verzeichnis für die Dateien der Site fest.

> – try_files — Versucht, die angeforderte Datei oder das Verzeichnis bereitzustellen; gibt einen 404 zurück, wenn nicht gefunden.

Im Gegensatz zu Apache bietet NGINX keinen integrierten Befehl wie a2ensite. Stattdessen erstellen Sie den symbolischen Link manuell:

sudo ln -s /etc/nginx/sites-available/test.oo.md /etc/nginx/sites-enabled/

Dies verlinkt die Konfigurationsdatei in das sites-enabled Verzeichnis und macht sie berechtigt, von NGINX geladen zu werden.

3. Testen Sie die NGINX-Konfiguration

Testen Sie immer Ihre NGINX-Konfiguration, bevor Sie neu laden:

sudo nginx -t

Ein erfolgreicher Test gibt zurück:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn Fehler gemeldet werden, überprüfen Sie die angegebenen Zeilen in Ihrer Konfigurationsdatei und korrigieren Sie sie, bevor Sie fortfahren.

4. Laden Sie NGINX neu, um Änderungen anzuwenden

sudo systemctl reload nginx

Wie bei Apache wendet reload Konfigurationsänderungen elegant an, ohne aktive Verbindungen zu unterbrechen — immer vorzuziehen gegenüber einem vollständigen restart in Live-Umgebungen.

5. Deaktivieren Sie eine Site in NGINX

Um eine Site zu deaktivieren, entfernen Sie ihren symbolischen Link aus dem sites-enabled Verzeichnis:

sudo rm /etc/nginx/sites-enabled/test.oo.md

Laden Sie dann NGINX neu, um die Änderung anzuwenden:

sudo systemctl reload nginx

Die Konfigurationsdatei in sites-available wird beibehalten und kann jederzeit erneut aktiviert werden.

Kurzreferenz: Apache vs. NGINX Site-Verwaltung

AufgabeApache BefehlNGINX Befehl
Konfigurationsdatei erstellennano /etc/apache2/sites-available/site.confnano /etc/nginx/sites-available/site
Site aktivierensudo a2ensite site.confsudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
Konfiguration testensudo apachectl configtestsudo nginx -t
Webserver neu ladensudo systemctl reload apache2sudo systemctl reload nginx
Site deaktivierensudo a2dissite site.confsudo rm /etc/nginx/sites-enabled/site

Best Practices für die Verwaltung von Sites mit NGINX und Apache

1. Eine Konfigurationsdatei pro Site

Erstellen Sie immer eine dedizierte Konfigurationsdatei für jede Domain oder Subdomain im sites-available Verzeichnis. Das Mischen mehrerer Sites in einer einzigen Datei führt zu Wartungsproblemen und macht die Fehlerbehebung erheblich schwieriger.

2. Testen Sie immer vor dem Neu laden

Machen Sie es sich zur unverrückbaren Gewohnheit, apachectl configtest oder nginx -t vor jedem Neu laden auszuführen. Ein Syntaxfehler in einer Konfigurationsdatei kann alle Sites auf dem Server zum Absturz bringen — nicht nur die, die Sie bearbeiten.

3. Verwenden Sie Versionskontrolle für Konfigurationsdateien

Für Server, die mehrere Sites oder komplexe Konfigurationen hosten, verfolgen Sie Ihre Konfigurationsdateien mit Git:

cd /etc/nginx/sites-available/
git init
git add .
git commit -m "Initial configuration snapshot"

Dies gibt Ihnen eine vollständige Änderungshistorie und die Möglichkeit, sofort zu einem bekannt guten Zustand zurückzukehren.

4. Erzwingen Sie immer HTTPS mit SSL-Zertifikaten

Das Bedienen von Sites über einfaches HTTP ist nicht mehr akzeptabel. Konfigurieren Sie SSL-Zertifikate für jede Site, die Sie verwalten. Let’s Encrypt bietet kostenlose, automatisch erneuernde Zertifikate und integriert sich nahtlos mit Apache (über mod_ssl und Certbot) und NGINX.

Nachdem Sie ein Zertifikat erhalten haben, aktualisieren Sie Ihren Server Block oder Virtual Host, um auf Port 443 zu lauschen und den gesamten HTTP-Traffic zu HTTPS umzuleiten.

5. Konfigurieren Sie umfassendes Logging

Definieren Sie immer sowohl access_log als auch error_log Direktiven für jede Site. Logs sind Ihre erste Verteidigungslinie bei der Diagnose von Problemen, der Untersuchung von Sicherheitsvorfällen oder der Analyse von Traffic-Mustern. Speichern Sie Logs in Site-spezifischen Dateien, anstatt sich auf das Standard-globale Log zu verlassen.

6. Verwenden Sie aussagekräftige, konsistente Dateinamen

Benennen Sie Ihre Konfigurationsdateien nach der Domain, die sie bedienen (z. B. example.com.conf für Apache, example.com für NGINX). Dies macht sofort deutlich, welche Datei welcher Site entspricht, wenn Sie einen Server mit vielen Virtual Hosts verwalten.

Wählen Sie die richtige Hosting-Umgebung

Die in diesem Leitfaden behandelten Konfigurationstechniken gelten unabhängig von Ihrem Hosting-Setup, aber Ihre Wahl der Server-Umgebung hat einen großen Einfluss auf Leistung und Flexibilität.

  • Shared Web Hosting — Ideal für Anfänger oder kleine Sites, bei denen die Server-Konfiguration für Sie verwaltet wird. NGINX oder Apache ist vorkonfiguriert, und Sie interagieren mit Sites über ein Kontrollpanel.
  • VPS Hosting — Der ideale Punkt für Entwickler und Systemadministratoren, die vollständigen Root-Zugriff benötigen, um NGINX oder Apache genau wie in diesem Leitfaden beschrieben zu konfigurieren. Sie haben vollständige Kontrol
15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen