260 lines
5.2 KiB
Markdown
260 lines
5.2 KiB
Markdown
# Deployment - PointCab Webexport Server
|
|
|
|
Diese Anleitung beschreibt den Deployment-Prozess für Updates und neue Versionen.
|
|
|
|
## 📋 Voraussetzungen
|
|
|
|
- Server bereits installiert (siehe [INSTALLATION.md](INSTALLATION.md))
|
|
- SSH-Zugang zum Server
|
|
- PM2 läuft
|
|
|
|
## 🚀 Standard-Deployment
|
|
|
|
### Methode 1: Automatisches Deployment (empfohlen)
|
|
|
|
```bash
|
|
# Auf dem Server
|
|
cd /var/www/pointcab_webexport_server
|
|
|
|
# Deployment-Script ausführen
|
|
sudo ./scripts/deploy.sh
|
|
```
|
|
|
|
### Methode 2: Manuelles Deployment
|
|
|
|
```bash
|
|
# 1. Zum Projekt wechseln
|
|
cd /var/www/pointcab_webexport_server/nodejs_space
|
|
|
|
# 2. Aktuelle Version sichern
|
|
BACKUP_DIR="/var/www/pointcab_webexport_server/backups/$(date +%Y%m%d_%H%M%S)"
|
|
mkdir -p "$BACKUP_DIR"
|
|
cp -r src/ "$BACKUP_DIR/"
|
|
cp -r dist/ "$BACKUP_DIR/"
|
|
|
|
# 3. Neue Dateien kopieren (via Git oder SCP)
|
|
git pull origin main
|
|
# ODER
|
|
# scp -r neue_dateien/* user@server:/var/www/pointcab_webexport_server/nodejs_space/
|
|
|
|
# 4. Abhängigkeiten aktualisieren
|
|
npm install
|
|
|
|
# 5. TypeScript kompilieren
|
|
npm run build
|
|
|
|
# 6. PM2 neustarten
|
|
pm2 restart pointcab-server
|
|
|
|
# 7. Status prüfen
|
|
pm2 status
|
|
curl http://localhost:3000/health
|
|
```
|
|
|
|
## ⚙️ Umgebungsvariablen
|
|
|
|
### Erforderliche Variablen
|
|
|
|
| Variable | Beschreibung | Beispiel |
|
|
|----------|--------------|----------|
|
|
| `PORT` | Server-Port | `3000` |
|
|
| `NODE_ENV` | Umgebung | `production` |
|
|
| `DATABASE_URL` | PostgreSQL-Verbindung | `postgresql://user:pass@localhost:5432/db` |
|
|
| `UPLOAD_DIR` | Upload-Verzeichnis | `/var/www/.../uploads` |
|
|
| `SESSION_SECRET` | Session-Verschlüsselung | `mindestens-32-zeichen` |
|
|
| `ADMIN_PASSWORD` | Admin-Zugang | `sicheres-passwort` |
|
|
|
|
### .env-Beispiel
|
|
|
|
```env
|
|
PORT=3000
|
|
NODE_ENV=production
|
|
DATABASE_URL="postgresql://pointcab_user:password@localhost:5432/pointcab_db"
|
|
UPLOAD_DIR=/var/www/pointcab_webexport_server/nodejs_space/uploads
|
|
SESSION_SECRET=ihr-geheimer-session-schluessel-mindestens-32-zeichen
|
|
ADMIN_PASSWORD=IhrAdminPasswort
|
|
```
|
|
|
|
## 🗄️ Datenbank-Migration
|
|
|
|
### Bei Schema-Änderungen
|
|
|
|
```bash
|
|
cd /var/www/pointcab_webexport_server/nodejs_space
|
|
|
|
# Prisma-Client neu generieren
|
|
npx prisma generate
|
|
|
|
# Schema anwenden (ohne Datenverlust)
|
|
npx prisma db push
|
|
|
|
# ODER: Migration erstellen und anwenden
|
|
npx prisma migrate deploy
|
|
```
|
|
|
|
### Datenbank-Schema prüfen
|
|
|
|
```bash
|
|
# Aktuelles Schema anzeigen
|
|
npx prisma studio
|
|
|
|
# Oder via SQL
|
|
sudo -u postgres psql -d pointcab_db -c "\d project"
|
|
```
|
|
|
|
## 🔄 PM2-Konfiguration
|
|
|
|
### ecosystem.config.js erstellen (Optional)
|
|
|
|
```bash
|
|
cat > /var/www/pointcab_webexport_server/nodejs_space/ecosystem.config.js << 'EOF'
|
|
module.exports = {
|
|
apps: [{
|
|
name: 'pointcab-server',
|
|
script: './dist/main.js',
|
|
instances: 1,
|
|
exec_mode: 'fork',
|
|
autorestart: true,
|
|
watch: false,
|
|
max_memory_restart: '1G',
|
|
env_production: {
|
|
NODE_ENV: 'production',
|
|
PORT: 3000
|
|
}
|
|
}]
|
|
};
|
|
EOF
|
|
```
|
|
|
|
### PM2-Befehle
|
|
|
|
```bash
|
|
# Mit ecosystem.config.js starten
|
|
pm2 start ecosystem.config.js --env production
|
|
|
|
# Status
|
|
pm2 status
|
|
|
|
# Logs
|
|
pm2 logs pointcab-server
|
|
|
|
# Neustart
|
|
pm2 restart pointcab-server
|
|
|
|
# Stop
|
|
pm2 stop pointcab-server
|
|
|
|
# Löschen
|
|
pm2 delete pointcab-server
|
|
|
|
# Autostart speichern
|
|
pm2 save
|
|
```
|
|
|
|
## 🌐 Nginx Proxy Manager Setup
|
|
|
|
### Proxy Host Konfiguration
|
|
|
|
1. **Nginx Proxy Manager öffnen:** `http://server-ip:81`
|
|
|
|
2. **Neuen Proxy Host hinzufügen:**
|
|
- Domain Names: `pointcab-webexport.ihre-domain.de`
|
|
- Scheme: `http`
|
|
- Forward Hostname/IP: `localhost`
|
|
- Forward Port: `3000`
|
|
- Websockets Support: ☑️ aktivieren
|
|
|
|
3. **SSL konfigurieren:**
|
|
- SSL Tab öffnen
|
|
- Request a new SSL Certificate
|
|
- Force SSL: ☑️ aktivieren
|
|
- HTTP/2 Support: ☑️ aktivieren
|
|
|
|
### Custom Nginx Konfiguration (Optional)
|
|
|
|
```nginx
|
|
# Größere Uploads erlauben
|
|
client_max_body_size 500M;
|
|
|
|
# Timeout erhöhen
|
|
proxy_read_timeout 300;
|
|
proxy_connect_timeout 300;
|
|
proxy_send_timeout 300;
|
|
```
|
|
|
|
## ✅ Deployment-Checkliste
|
|
|
|
### Vor dem Deployment
|
|
|
|
- [ ] Backup erstellt
|
|
- [ ] Änderungen getestet
|
|
- [ ] .env-Datei aktuell
|
|
|
|
### Nach dem Deployment
|
|
|
|
- [ ] PM2 läuft (`pm2 status`)
|
|
- [ ] Health-Check erfolgreich (`curl localhost:3000/health`)
|
|
- [ ] Admin-Dashboard erreichbar
|
|
- [ ] Upload-Funktion getestet
|
|
- [ ] Logs geprüft (`pm2 logs`)
|
|
|
|
## 🔙 Rollback
|
|
|
|
### Bei Problemen
|
|
|
|
```bash
|
|
# Letztes Backup finden
|
|
ls -la /var/www/pointcab_webexport_server/backups/
|
|
|
|
# Backup wiederherstellen
|
|
BACKUP="/var/www/pointcab_webexport_server/backups/YYYYMMDD_HHMMSS"
|
|
cp -r "$BACKUP/src/" /var/www/pointcab_webexport_server/nodejs_space/
|
|
cp -r "$BACKUP/dist/" /var/www/pointcab_webexport_server/nodejs_space/
|
|
|
|
# Server neustarten
|
|
pm2 restart pointcab-server
|
|
```
|
|
|
|
## 📊 Monitoring
|
|
|
|
### Logs überwachen
|
|
|
|
```bash
|
|
# Echtzeit-Logs
|
|
pm2 logs pointcab-server
|
|
|
|
# Letzte 100 Zeilen
|
|
pm2 logs pointcab-server --lines 100
|
|
|
|
# Fehler-Logs
|
|
pm2 logs pointcab-server --err
|
|
```
|
|
|
|
### System-Ressourcen
|
|
|
|
```bash
|
|
# PM2 Monitoring
|
|
pm2 monit
|
|
|
|
# Speicherverbrauch
|
|
pm2 info pointcab-server
|
|
```
|
|
|
|
## 🔒 Sicherheit beim Deployment
|
|
|
|
1. **Keine Secrets im Repository:**
|
|
- `.env` ist in `.gitignore`
|
|
- Passwörter niemals committen
|
|
|
|
2. **Backups vor Updates:**
|
|
- Immer Backup erstellen
|
|
- Backup-Pfad dokumentieren
|
|
|
|
3. **Test vor Produktion:**
|
|
- Änderungen lokal testen
|
|
- Staging-Umgebung nutzen (wenn vorhanden)
|
|
|
|
---
|
|
|
|
**Siehe auch:** [MAINTENANCE.md](MAINTENANCE.md) für Wartungsaufgaben
|