Add deployment script and documentation for production data safety

This commit is contained in:
Torsten Schulz (local)
2025-10-21 16:32:19 +02:00
parent fd135495e5
commit 2b4db04ea1
3 changed files with 201 additions and 0 deletions

4
.gitignore vendored
View File

@@ -88,6 +88,10 @@ out
.nuxt
dist
# Build output (but keep production data!)
.output
!.output/.gitkeep
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js

125
DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,125 @@
# Deployment-Anleitung für Harheimer TC Website
## Wichtig: Produktivdaten schützen!
Die folgenden Dateien enthalten **Produktivdaten** und dürfen beim Deployment **NICHT überschrieben** werden:
### Server-Daten (authentifizierungskritisch):
- `server/data/users.json` - Benutzerkonten & Passwörter
- `server/data/sessions.json` - Aktive Sessions
- `server/data/members.json` - Manuelle Mitgliederliste
- `server/data/news.json` - Interne & öffentliche News
### Public-Daten (CSV):
- `public/data/termine.csv` - Vereinstermine
- `public/data/mannschaften.csv` - Team-Informationen
- `public/data/spielsysteme.csv` - Spielsysteme
- `public/data/vereinsmeisterschaften.csv` - Meisterschaftsergebnisse
---
## Deployment-Methode 1: Automatisches Script (Empfohlen)
```bash
cd /var/www/harheimertc
./deploy-production.sh
```
Das Script:
1. ✅ Pullt neuesten Code
2.**Sichert alle Produktivdaten**
3. ✅ Installiert Dependencies
4. ✅ Löscht `.output/` (Build-Artefakte)
5. ✅ Baut neu
6.**Stellt Produktivdaten wieder her**
7. ✅ Startet PM2 neu
---
## Deployment-Methode 2: Manuell
```bash
cd /var/www/harheimertc
# 1. Backup erstellen
mkdir -p .backup
cp -r server/data .backup/
cp public/data/*.csv .backup/
# 2. Code aktualisieren
git pull
# 3. Dependencies installieren
npm install
# 4. Alten Build entfernen
rm -rf .output
# 5. Neu bauen
npm run build
# 6. Produktivdaten wiederherstellen
cp -r .backup/data/* server/data/
cp .backup/*.csv public/data/
# 7. Cleanup
rm -rf .backup
# 8. PM2 neu starten
pm2 restart harheimertc
```
---
## Bei Git-Merge-Konflikten in `.output/`
Falls Git meldet, dass `.output/` Dateien überschrieben würden:
```bash
# Einfach löschen und neu bauen
rm -rf .output
git pull
npm run build
pm2 restart harheimertc
```
**Wichtig:** Vorher Produktivdaten sichern (siehe oben)!
---
## Erste Einrichtung auf neuem Server
```bash
# 1. Repository klonen
git clone git@tsschulz.de:/home/git/harheimertc.git
cd harheimertc
# 2. Dependencies installieren
npm install
# 3. Produktivdaten erstellen (nur beim ersten Mal!)
mkdir -p server/data
echo '[]' > server/data/users.json
echo '[]' > server/data/sessions.json
echo '[]' > server/data/members.json
echo '[]' > server/data/news.json
# 4. Admin-Benutzer erstellen (siehe README.md)
# 5. Bauen
npm run build
# 6. PM2 einrichten
pm2 start harheimertc.config.cjs
pm2 save
```
---
## Notizen
- **`.output/` ist NICHT im Git** (steht in `.gitignore`)
- **Produktivdaten SIND im Git** (werden versioniert)
- **Bei Deployment:** Immer Backup → Build → Restore
- **Bei Problemen:** Script verwenden oder manuell Daten sichern

72
deploy-production.sh Executable file
View File

@@ -0,0 +1,72 @@
#!/bin/bash
# Deployment Script für Harheimer TC Website
# Sichert Produktivdaten vor dem Build und stellt sie danach wieder her
echo "=== Harheimer TC Deployment ==="
echo ""
# 1. Git Pull
echo "1. Pulling latest changes from git..."
git pull
if [ $? -ne 0 ]; then
echo "ERROR: Git pull failed!"
exit 1
fi
# 2. Backup Production Data
echo ""
echo "2. Backing up production data..."
mkdir -p .backup
cp -r server/data .backup/data_backup 2>/dev/null || echo "No server/data to backup"
cp public/data/termine.csv .backup/termine.csv 2>/dev/null || echo "No termine.csv to backup"
cp public/data/mannschaften.csv .backup/mannschaften.csv 2>/dev/null || echo "No mannschaften.csv to backup"
cp public/data/spielsysteme.csv .backup/spielsysteme.csv 2>/dev/null || echo "No spielsysteme.csv to backup"
cp public/data/vereinsmeisterschaften.csv .backup/vereinsmeisterschaften.csv 2>/dev/null || echo "No vereinsmeisterschaften.csv to backup"
# 3. Install dependencies
echo ""
echo "3. Installing dependencies..."
npm install
if [ $? -ne 0 ]; then
echo "ERROR: npm install failed!"
exit 1
fi
# 4. Remove old build (but keep data!)
echo ""
echo "4. Removing old build output..."
rm -rf .output
# 5. Build
echo ""
echo "5. Building application..."
npm run build
if [ $? -ne 0 ]; then
echo "ERROR: Build failed!"
exit 1
fi
# 6. Restore Production Data
echo ""
echo "6. Restoring production data..."
cp -r .backup/data_backup/* server/data/ 2>/dev/null || echo "No data to restore"
cp .backup/termine.csv public/data/termine.csv 2>/dev/null || echo "No termine.csv to restore"
cp .backup/mannschaften.csv public/data/mannschaften.csv 2>/dev/null || echo "No mannschaften.csv to restore"
cp .backup/spielsysteme.csv public/data/spielsysteme.csv 2>/dev/null || echo "No spielsysteme.csv to restore"
cp .backup/vereinsmeisterschaften.csv public/data/vereinsmeisterschaften.csv 2>/dev/null || echo "No vereinsmeisterschaften.csv to restore"
# 7. Cleanup backup
echo ""
echo "7. Cleaning up backup..."
rm -rf .backup
# 8. Restart PM2
echo ""
echo "8. Restarting PM2..."
pm2 restart harheimertc
echo ""
echo "=== Deployment completed successfully! ==="
echo "The application is now running with the latest code and your production data preserved."