Webserver
Wohin mit einer statischen Seite
Abschnitt betitelt „Wohin mit einer statischen Seite“Eine statische Seite läuft überall, wo ein Webserver Dateien ausliefert: auf einem Shared-Hosting-Paket, auf GitLab Pages, auf einem Objektspeicher mit CDN, auf einer eigenen VM. Diese Plattform liegt auf einem Shared-Apache-Host, weil der vorhanden war und nichts weiter braucht als SSH-Zugang. Im Kurs nimmst du deine Server-VM, das Prinzip ist dasselbe.
Apache installieren
Abschnitt betitelt „Apache installieren“Auf der Server-VM:
- Apache installieren und die Module für Kompression, Caching und Header aktivieren:
Server-VM sudo apt install -y apache2sudo a2enmod deflate expires headers .htaccess-Dateien im Document Root erlauben. In/etc/apache2/apache2.confden Block für/var/www/anpassen:/etc/apache2/apache2.conf <Directory /var/www/>Options Indexes FollowSymLinksAllowOverride AllRequire all granted</Directory>- Das Document Root deinem Benutzer geben, damit rsync ohne
sudoschreiben darf:Server-VM sudo chown -R "$USER":www-data /var/www/htmlsudo systemctl reload apache2 - Im Browser
http://IP-der-VM/öffnen: die Apache-Standardseite.
AllowOverride All ist der Schritt, den man am ehesten vergisst. Ohne ihn ignoriert Apache die .htaccess stillschweigend.
.htaccess
Abschnitt betitelt „.htaccess“Astro kopiert alles aus public/ unverändert nach dist/. Liegt dort eine .htaccess, landet sie im Document Root und Apache liest sie bei jedem Aufruf. Die Datei dieser Plattform regelt vier Dinge:
# Eigene 404-Seite von StarlightErrorDocument 404 /404.html
# Verzeichnis-URLs wie /linux/03-terminal/ liefern index.html ausDirectoryIndex index.htmlOptions -Indexes
# Kompression<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/css application/javascript image/svg+xml</IfModule>
# Caching: Assets unter /_astro/ tragen einen Hash im Namen und dürfen lange gecacht werden,# HTML und der Suchindex sollen bei jedem Deploy frisch geladen werden.<IfModule mod_headers.c> <FilesMatch "\.html$"> Header set Cache-Control "no-cache" </FilesMatch> <If "%{REQUEST_URI} =~ m#^/_astro/#"> Header set Cache-Control "public, max-age=31536000, immutable" </If></IfModule>| Abschnitt | Warum |
|---|---|
ErrorDocument 404 |
Starlight baut eine eigene 404-Seite. Ohne die Zeile zeigt Apache seine graue Standardmeldung. |
Options -Indexes |
Kein Verzeichnislisting, falls einmal eine index.html fehlt. |
| Kompression | HTML, CSS und JS werden gezippt übertragen, oft ein Fünftel der Grösse. |
| Caching | Astro hängt an CSS- und JS-Dateien einen Hash an (/_astro/index.a1b2c3.css). Ändert sich der Inhalt, ändert sich der Name. Darum dürfen Browser sie ein Jahr behalten. HTML dagegen muss bei jedem Deploy frisch kommen. |
Die <IfModule>-Blöcke sorgen dafür, dass die Datei auch auf einem Server ohne das jeweilige Modul keinen Fehler 500 auslöst.
Hands-on: Lege public/.htaccess in deinem Projekt an, baue und schau in dist/, ob sie da ist. Dann weiter zur nächsten Seite, wo sie auf den Server kommt.
Lösung anzeigen
echo '<h1>Test</h1>' > /var/www/html/test.htmlcurl -I http://localhost/test.htmlcurl -I http://localhost/gibtsnicht/curl -I zeigt nur die Antwort-Header, die erste Zeile enthält den Statuscode 200 oder 404.
Selbstcheck · 3 Fragen