227 lines
4.5 KiB
Markdown
227 lines
4.5 KiB
Markdown
# MathQuest Deployment Anleitung
|
|
|
|
Diese Anleitung erklärt, wie du MathQuest auf deinem Server deployst.
|
|
|
|
## Voraussetzungen
|
|
|
|
- Server mit Ubuntu/Debian
|
|
- Node.js installiert (Version 14 oder höher)
|
|
- Nginx installiert
|
|
- SSL-Zertifikat für lydix.de (Let's Encrypt)
|
|
- Root-Zugriff oder sudo-Rechte
|
|
|
|
## Schritt 1: Dateien auf den Server kopieren
|
|
|
|
### Option A: Mit SCP (vom lokalen Rechner)
|
|
|
|
```bash
|
|
# Vom lokalen Rechner aus:
|
|
scp -r /home/lukas/nerd/mathquest/* user@dein-server:/var/www/mathquest/
|
|
```
|
|
|
|
### Option B: Mit Git (wenn du ein Repository hast)
|
|
|
|
```bash
|
|
# Auf dem Server:
|
|
cd /var/www
|
|
git clone dein-repo-url mathquest
|
|
cd mathquest
|
|
```
|
|
|
|
## Schritt 2: Dependencies installieren
|
|
|
|
```bash
|
|
cd /var/www/mathquest
|
|
npm install --production
|
|
```
|
|
|
|
## Schritt 3: Berechtigungen setzen
|
|
|
|
```bash
|
|
chown -R www-data:www-data /var/www/mathquest
|
|
chmod +x /var/www/mathquest/server.js
|
|
```
|
|
|
|
## Schritt 4: systemd Service installieren
|
|
|
|
```bash
|
|
# Service-Datei kopieren
|
|
sudo cp /var/www/mathquest/mathquest.service /etc/systemd/system/
|
|
|
|
# Service aktivieren und starten
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable mathquest
|
|
sudo systemctl start mathquest
|
|
|
|
# Status prüfen
|
|
sudo systemctl status mathquest
|
|
```
|
|
|
|
## Schritt 5: Nginx konfigurieren
|
|
|
|
### SSL-Zertifikat prüfen
|
|
|
|
Da du einen Wildcard DNS Eintrag hast, sollte ein Wildcard-Zertifikat für `*.lydix.de` existieren.
|
|
|
|
Prüfe deine Zertifikate:
|
|
```bash
|
|
sudo certbot certificates
|
|
```
|
|
|
|
Finde den korrekten Pfad (oft `/etc/letsencrypt/live/lydix.de/` oder `/etc/letsencrypt/live/lydix.de-0001/`):
|
|
```bash
|
|
ls -la /etc/letsencrypt/live/
|
|
```
|
|
|
|
Falls der Pfad anders ist, passe die SSL-Zertifikat-Pfade in `nginx-mathquest.conf` an.
|
|
|
|
### Nginx-Konfiguration installieren
|
|
|
|
```bash
|
|
# Konfiguration kopieren
|
|
sudo cp /var/www/mathquest/nginx-mathquest.conf /etc/nginx/sites-available/mathquest.conf
|
|
|
|
# Symlink erstellen
|
|
sudo ln -s /etc/nginx/sites-available/mathquest.conf /etc/nginx/sites-enabled/
|
|
|
|
# Konfiguration testen
|
|
sudo nginx -t
|
|
|
|
# Nginx neu laden
|
|
sudo systemctl reload nginx
|
|
```
|
|
|
|
## Schritt 6: DNS konfigurieren
|
|
|
|
Da du einen Wildcard DNS Eintrag hast (`*.lydix.de`), ist kein separater A-Record für `mathquest.lydix.de` nötig. Die Subdomain sollte automatisch funktionieren.
|
|
|
|
Falls der Wildcard-Eintrag noch nicht existiert, erstelle einen:
|
|
```
|
|
*.lydix.de A deine-server-ip
|
|
```
|
|
|
|
## Schritt 7: Firewall prüfen
|
|
|
|
Stelle sicher, dass Port 80 und 443 offen sind:
|
|
|
|
```bash
|
|
# UFW
|
|
sudo ufw allow 80/tcp
|
|
sudo ufw allow 443/tcp
|
|
|
|
# Oder iptables
|
|
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
|
|
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
|
|
```
|
|
|
|
## Automatisches Deployment
|
|
|
|
Du kannst auch das bereitgestellte Deployment-Script verwenden:
|
|
|
|
```bash
|
|
cd /var/www/mathquest
|
|
chmod +x deploy.sh
|
|
sudo ./deploy.sh
|
|
```
|
|
|
|
## Nützliche Befehle
|
|
|
|
### Service verwalten
|
|
|
|
```bash
|
|
# Status prüfen
|
|
sudo systemctl status mathquest
|
|
|
|
# Logs ansehen
|
|
sudo journalctl -u mathquest -f
|
|
|
|
# Service neustarten
|
|
sudo systemctl restart mathquest
|
|
|
|
# Service stoppen
|
|
sudo systemctl stop mathquest
|
|
|
|
# Service starten
|
|
sudo systemctl start mathquest
|
|
```
|
|
|
|
### Nginx verwalten
|
|
|
|
```bash
|
|
# Konfiguration testen
|
|
sudo nginx -t
|
|
|
|
# Nginx neu laden
|
|
sudo systemctl reload nginx
|
|
|
|
# Nginx neustarten
|
|
sudo systemctl restart nginx
|
|
|
|
# Logs ansehen
|
|
sudo tail -f /var/log/nginx/mathquest-access.log
|
|
sudo tail -f /var/log/nginx/mathquest-error.log
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Service startet nicht
|
|
|
|
```bash
|
|
# Prüfe die Logs
|
|
sudo journalctl -u mathquest -n 50
|
|
|
|
# Prüfe ob Port 3000 belegt ist
|
|
sudo netstat -tulpn | grep 3000
|
|
|
|
# Prüfe die Berechtigungen
|
|
ls -la /var/www/mathquest
|
|
```
|
|
|
|
### Nginx gibt 502 Bad Gateway
|
|
|
|
```bash
|
|
# Prüfe ob der Service läuft
|
|
sudo systemctl status mathquest
|
|
|
|
# Prüfe die Nginx-Logs
|
|
sudo tail -f /var/log/nginx/mathquest-error.log
|
|
|
|
# Prüfe ob Node.js auf Port 3000 lauscht
|
|
sudo netstat -tulpn | grep 3000
|
|
```
|
|
|
|
### SSL-Zertifikat Probleme
|
|
|
|
```bash
|
|
# Prüfe Zertifikat
|
|
sudo certbot certificates
|
|
|
|
# Erneuere Zertifikat falls nötig
|
|
sudo certbot renew
|
|
|
|
# Prüfe Zertifikat-Pfade in Nginx-Konfiguration
|
|
sudo cat /etc/nginx/sites-available/mathquest.conf | grep ssl_certificate
|
|
```
|
|
|
|
## Updates durchführen
|
|
|
|
1. Dateien auf dem Server aktualisieren
|
|
2. Dependencies aktualisieren (falls nötig):
|
|
```bash
|
|
cd /var/www/mathquest
|
|
npm install --production
|
|
```
|
|
3. Service neustarten:
|
|
```bash
|
|
sudo systemctl restart mathquest
|
|
```
|
|
|
|
## Backup
|
|
|
|
Wichtig: Backupe regelmäßig die `tasks.json` Datei, da dort alle Antworten gespeichert werden:
|
|
|
|
```bash
|
|
# Backup erstellen
|
|
cp /var/www/mathquest/tasks.json /var/www/mathquest/tasks.json.backup
|
|
```
|