Grafik 2 spaltig auch bein iFrame
Übertragen nach sternwarte funktioniert
This commit is contained in:
155
DEPLOY.md
Normal file
155
DEPLOY.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# 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
|
||||
|
||||
1. **SSH-Zugang** zum Webserver (passwortlos mit SSH-Key empfohlen)
|
||||
2. **rsync** installiert (auf macOS bereits vorhanden)
|
||||
3. **Python 3** mit venv
|
||||
4. **API läuft lokal** (localhost:8000)
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Python-Abhängigkeiten installieren
|
||||
|
||||
```bash
|
||||
source .venv/bin/activate
|
||||
pip install requests
|
||||
```
|
||||
|
||||
### 2. Konfiguration anpassen
|
||||
|
||||
Bearbeiten Sie `generate-static.py`:
|
||||
|
||||
```python
|
||||
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:
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# App.jsx durch statische Version ersetzen
|
||||
cp frontend/src/App-static.jsx frontend/src/App.jsx
|
||||
```
|
||||
|
||||
### 5. Manueller Test
|
||||
|
||||
```bash
|
||||
python generate-static.py
|
||||
```
|
||||
|
||||
Dies sollte:
|
||||
- Wetterdaten laden ✓
|
||||
- Frontend bauen ✓
|
||||
- Daten einbetten ✓
|
||||
- Dateien hochladen ✓
|
||||
|
||||
### 6. Cronjob installieren
|
||||
|
||||
```bash
|
||||
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:
|
||||
```cron
|
||||
1,6,11,16,21,26,31,36,41,46,51,56 * * * * /pfad/zum/script
|
||||
```
|
||||
|
||||
## Logs überwachen
|
||||
|
||||
```bash
|
||||
# Live-Logs anzeigen
|
||||
tail -f upload.log
|
||||
|
||||
# Letzte Uploads anzeigen
|
||||
tail -20 upload.log
|
||||
```
|
||||
|
||||
## iframe in bestehende Webseite einbauen
|
||||
|
||||
```html
|
||||
<iframe
|
||||
src="https://ihre-domain.de/wetterstation/"
|
||||
width="100%"
|
||||
height="1200"
|
||||
frameborder="0"
|
||||
style="border: none;">
|
||||
</iframe>
|
||||
```
|
||||
|
||||
## Fehlerbehebung
|
||||
|
||||
### Upload schlägt fehl
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# API-Status prüfen
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
### Cronjob läuft nicht
|
||||
```bash
|
||||
# Cronjob-Log prüfen
|
||||
tail -f upload.log
|
||||
|
||||
# Cronjobs anzeigen
|
||||
crontab -l
|
||||
|
||||
# Script manuell ausführen
|
||||
python generate-static.py
|
||||
```
|
||||
|
||||
## Cronjob entfernen
|
||||
|
||||
```bash
|
||||
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
|
||||
└── ...
|
||||
```
|
||||
Reference in New Issue
Block a user