Add deployment script and documentation for production data safety
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -88,6 +88,10 @@ out
|
|||||||
.nuxt
|
.nuxt
|
||||||
dist
|
dist
|
||||||
|
|
||||||
|
# Build output (but keep production data!)
|
||||||
|
.output
|
||||||
|
!.output/.gitkeep
|
||||||
|
|
||||||
# Gatsby files
|
# Gatsby files
|
||||||
.cache/
|
.cache/
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||||
|
|||||||
125
DEPLOYMENT.md
Normal file
125
DEPLOYMENT.md
Normal 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
72
deploy-production.sh
Executable 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."
|
||||||
|
|
||||||
Reference in New Issue
Block a user