Implement environment variable setup for frontend; create .env.production and .env.development files if they don't exist, and update API URLs in frontend components to use dynamic API_BASE_URL for improved configuration management.
This commit is contained in:
210
DEPLOYMENT_CHECKLIST.md
Normal file
210
DEPLOYMENT_CHECKLIST.md
Normal file
@@ -0,0 +1,210 @@
|
||||
# TimeClock v3 - Deployment Checkliste
|
||||
|
||||
Diese Checkliste stellt sicher, dass alle Schritte für ein erfolgreiches Deployment durchgeführt wurden.
|
||||
|
||||
## Pre-Deployment (Lokal)
|
||||
|
||||
- [ ] **Git Status prüfen**: `git status` - Alle Änderungen committed?
|
||||
- [ ] **Tests durchführen**: Lokal testen mit `npm run dev`
|
||||
- [ ] **Dependencies aktuell**: `npm install` in backend/ und frontend/
|
||||
- [ ] **Frontend-Build testen**: `cd frontend && npm run build`
|
||||
- [ ] **Keine hardcodierten URLs**: `grep -r "localhost:3010" frontend/src/`
|
||||
|
||||
## Git Push
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Deployment vX.X.X"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
## Server-Vorbereitung
|
||||
|
||||
- [ ] **SSH-Zugang**: `ssh tsschulz@tsschulz.de`
|
||||
- [ ] **Projekt-Verzeichnis**: `cd /var/www/timeclock`
|
||||
- [ ] **Git Pull**: `git pull origin main`
|
||||
|
||||
## Deployment Durchführen
|
||||
|
||||
### Option 1: Automatisches Deployment (Empfohlen)
|
||||
|
||||
```bash
|
||||
cd /var/www/timeclock
|
||||
./deploy.sh update
|
||||
```
|
||||
|
||||
Das Script führt automatisch aus:
|
||||
- ✅ Datenbank-Backup
|
||||
- ✅ Backend Dependencies installieren
|
||||
- ✅ Frontend .env.production erstellen
|
||||
- ✅ Frontend neu bauen (mit korrekter API-URL)
|
||||
- ✅ Backend neu starten
|
||||
- ✅ Apache neu laden
|
||||
|
||||
### Option 2: Manuelles Deployment
|
||||
|
||||
```bash
|
||||
# 1. Backup
|
||||
./deploy.sh backup
|
||||
|
||||
# 2. Backend
|
||||
cd /var/www/timeclock/backend
|
||||
npm install --production
|
||||
pm2 restart timeclock-backend
|
||||
|
||||
# 3. Frontend
|
||||
cd /var/www/timeclock/frontend
|
||||
|
||||
# .env.production prüfen/erstellen
|
||||
cat > .env.production << 'EOF'
|
||||
VITE_API_URL=/api
|
||||
EOF
|
||||
|
||||
npm install
|
||||
rm -rf dist/
|
||||
npm run build
|
||||
|
||||
# 4. Apache neu laden
|
||||
sudo systemctl reload apache2
|
||||
```
|
||||
|
||||
## Post-Deployment Tests
|
||||
|
||||
- [ ] **Backend Health-Check**:
|
||||
```bash
|
||||
curl https://stechuhr3.tsschulz.de/api/health
|
||||
# Erwartung: {"status":"ok","message":"TimeClock API v3.0.0",...}
|
||||
```
|
||||
|
||||
- [ ] **Frontend lädt**:
|
||||
```bash
|
||||
curl -I https://stechuhr3.tsschulz.de
|
||||
# Erwartung: HTTP/2 200
|
||||
```
|
||||
|
||||
- [ ] **Keine localhost URLs**:
|
||||
```bash
|
||||
grep -r "localhost:3010" /var/www/timeclock/frontend/dist/
|
||||
# Erwartung: Keine Treffer (oder nur Kommentare)
|
||||
```
|
||||
|
||||
- [ ] **PM2 Status**:
|
||||
```bash
|
||||
pm2 status
|
||||
# Erwartung: timeclock-backend | online
|
||||
```
|
||||
|
||||
- [ ] **Browser-Tests**:
|
||||
- [ ] https://stechuhr3.tsschulz.de lädt
|
||||
- [ ] Login funktioniert
|
||||
- [ ] API-Calls gehen an `/api` (nicht `localhost:3010`)
|
||||
- [ ] Keine Console-Errors (F12)
|
||||
|
||||
## Rollback bei Problemen
|
||||
|
||||
```bash
|
||||
cd /var/www/timeclock
|
||||
./deploy.sh rollback
|
||||
```
|
||||
|
||||
## Monitoring
|
||||
|
||||
```bash
|
||||
# Backend-Logs live
|
||||
pm2 logs timeclock-backend
|
||||
|
||||
# Apache-Logs
|
||||
sudo tail -f /var/log/apache2/stechuhr3-error.log
|
||||
|
||||
# Backend-Status
|
||||
./deploy.sh status
|
||||
|
||||
# Alle Logs
|
||||
./deploy.sh logs
|
||||
```
|
||||
|
||||
## Häufige Probleme
|
||||
|
||||
### Problem: Frontend zeigt "localhost:3010" Fehler
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
cd /var/www/timeclock/frontend
|
||||
cat .env.production # Sollte VITE_API_URL=/api enthalten
|
||||
rm -rf dist/
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Problem: API 502 Bad Gateway
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
pm2 restart timeclock-backend
|
||||
pm2 logs timeclock-backend --lines 50
|
||||
```
|
||||
|
||||
### Problem: Apache zeigt Default-Page
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
sudo apache2ctl -S | grep stechuhr3 # Prüfe VirtualHost
|
||||
sudo systemctl reload apache2
|
||||
```
|
||||
|
||||
### Problem: Browser-Cache
|
||||
|
||||
**Lösung:**
|
||||
- **Strg + Shift + R** (Hard Reload)
|
||||
- Oder Private/Incognito Window
|
||||
|
||||
## Deployment-Frequenz
|
||||
|
||||
- **Bugfixes**: Sofort
|
||||
- **Features**: Nach Testing auf Dev
|
||||
- **Breaking Changes**: Mit Ankündigung
|
||||
|
||||
## Backup-Strategie
|
||||
|
||||
- **Automatisch**: Täglich um 2 Uhr (via Cronjob)
|
||||
- **Manuell**: Vor jedem Deployment
|
||||
- **Retention**: 30 Tage
|
||||
- **Location**: `/var/backups/timeclock/`
|
||||
|
||||
## Secrets & Credentials
|
||||
|
||||
Niemals committen:
|
||||
- ❌ `.env` Dateien
|
||||
- ❌ SSL-Zertifikate
|
||||
- ❌ Datenbank-Passwörter
|
||||
- ❌ API-Keys
|
||||
|
||||
Verwende `.gitignore`:
|
||||
```
|
||||
.env
|
||||
.env.local
|
||||
.env.production.local
|
||||
*.key
|
||||
*.pem
|
||||
```
|
||||
|
||||
## Deployment-Log
|
||||
|
||||
Dokumentiere jedes Deployment:
|
||||
|
||||
```
|
||||
Datum: 2025-10-18
|
||||
Version: v3.0.1
|
||||
Änderungen:
|
||||
- API-URLs von hardcoded auf .env umgestellt
|
||||
- Apache2-Konfiguration korrigiert
|
||||
- SSL-Zertifikat eingerichtet
|
||||
Status: ✅ Erfolgreich
|
||||
Probleme: Keine
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Viel Erfolg beim Deployment! 🚀**
|
||||
|
||||
Bei Fragen: Siehe `DEPLOYMENT.md`, `APACHE2_DEPLOYMENT.md` oder `CHECK_SERVICES.md`
|
||||
|
||||
Reference in New Issue
Block a user