2.8 KiB
2.8 KiB
Deployment auf externen Webserver
Übersicht
Das System generiert alle 4 Minuten statische HTML-Dateien mit aktuellen Wetterdaten und lädt sie auf einen externen Webserver hoch.
Voraussetzungen
- SSH-Zugang zum Webserver (passwortlos mit SSH-Key empfohlen)
- rsync installiert (auf macOS bereits vorhanden)
- Python 3 mit venv
- API läuft lokal (localhost:8000)
Setup
1. Python-Abhängigkeiten installieren
source .venv/bin/activate
pip install requests
2. Konfiguration anpassen
Bearbeiten Sie generate-static.py:
REMOTE_SERVER = "user@ihr-server.de" # Ihr SSH-Zugang
REMOTE_PATH = "/var/www/html/wetterstation" # Pfad auf dem Server
3. SSH-Key Setup (einmalig)
Für automatisches Upload ohne Passwort-Eingabe:
# SSH-Key generieren (falls noch nicht vorhanden)
ssh-keygen -t ed25519
# Public Key auf Server kopieren
ssh-copy-id user@ihr-server.de
# Test
ssh user@ihr-server.de "echo 'Verbindung OK'"
4. Frontend für statische Nutzung vorbereiten
# App.jsx durch statische Version ersetzen
cp frontend/src/App-static.jsx frontend/src/App.jsx
5. Manueller Test
python generate-static.py
Dies sollte:
- Wetterdaten laden ✓
- Frontend bauen ✓
- Daten einbetten ✓
- Dateien hochladen ✓
6. Cronjob installieren
chmod +x setup-cronjob.sh
./setup-cronjob.sh
Der Cronjob läuft dann automatisch alle 4 Minuten.
Zeitplan
Der Cronjob läuft zu folgenden Zeiten:
- 00:00, 00:04, 00:08, 00:12, ...
- 01:00, 01:04, 01:08, 01:12, ...
- etc.
Um ihn z.B. immer 1 Minute nach dem 5-Minuten-Schritt zu starten:
1,6,11,16,21,26,31,36,41,46,51,56 * * * * /pfad/zum/script
Logs überwachen
# Live-Logs anzeigen
tail -f upload.log
# Letzte Uploads anzeigen
tail -20 upload.log
iframe in bestehende Webseite einbauen
<iframe
src="https://ihre-domain.de/wetterstation/"
width="100%"
height="1200"
frameborder="0"
style="border: none;">
</iframe>
Fehlerbehebung
Upload schlägt fehl
# SSH-Verbindung testen
ssh user@ihr-server.de
# rsync manuell testen
rsync -avz frontend/dist/ user@ihr-server.de:/var/www/html/wetterstation/
API nicht erreichbar
# API-Status prüfen
curl http://localhost:8000/health
Cronjob läuft nicht
# Cronjob-Log prüfen
tail -f upload.log
# Cronjobs anzeigen
crontab -l
# Script manuell ausführen
python generate-static.py
Cronjob entfernen
crontab -e
# Zeile mit generate-static.py löschen
Verzeichnisstruktur auf dem Server
Nach dem Upload sollte der Server folgende Struktur haben:
/var/www/html/wetterstation/
├── index.html (mit eingebetteten Daten)
├── assets/
│ ├── index-xxx.js
│ └── index-xxx.css
└── ...