88 lines
2.6 KiB
Bash
Executable File
88 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# PointCab Webexport Server - Deployment Script
|
|
|
|
set -e
|
|
|
|
# Farben
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
SERVER_DIR="/var/www/pointcab_webexport_server"
|
|
NODEJS_DIR="$SERVER_DIR/nodejs_space"
|
|
BACKUP_DIR="$SERVER_DIR/backups"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN}PointCab Webexport - Deployment${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo ""
|
|
|
|
# Root-Check
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo -e "${RED}Bitte als Root ausführen: sudo ./deploy.sh${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Verzeichnis prüfen
|
|
if [ ! -d "$NODEJS_DIR" ]; then
|
|
echo -e "${RED}Fehler: Server-Verzeichnis nicht gefunden!${NC}"
|
|
echo "Erwartet: $NODEJS_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${YELLOW}[1/5] Backup erstellen...${NC}"
|
|
mkdir -p "$BACKUP_DIR/$TIMESTAMP"
|
|
cp -r "$NODEJS_DIR/src" "$BACKUP_DIR/$TIMESTAMP/"
|
|
cp -r "$NODEJS_DIR/dist" "$BACKUP_DIR/$TIMESTAMP/" 2>/dev/null || true
|
|
echo -e "${GREEN}✓ Backup erstellt: $BACKUP_DIR/$TIMESTAMP${NC}"
|
|
|
|
# Rollback-Script erstellen
|
|
cat > "$BACKUP_DIR/$TIMESTAMP/rollback.sh" << EOF
|
|
#!/bin/bash
|
|
echo "Rollback zu $TIMESTAMP..."
|
|
cp -r $BACKUP_DIR/$TIMESTAMP/src $NODEJS_DIR/
|
|
cp -r $BACKUP_DIR/$TIMESTAMP/dist $NODEJS_DIR/
|
|
pm2 restart pointcab-server
|
|
echo "Rollback abgeschlossen."
|
|
EOF
|
|
chmod +x "$BACKUP_DIR/$TIMESTAMP/rollback.sh"
|
|
|
|
echo -e "\n${YELLOW}[2/5] Neue Dateien kopieren...${NC}"
|
|
# Hier würde git pull oder scp stattfinden
|
|
if [ -d "./nodejs_space" ]; then
|
|
cp -r ./nodejs_space/src/* "$NODEJS_DIR/src/"
|
|
echo -e "${GREEN}✓ Dateien kopiert${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ Keine neuen Dateien gefunden, verwende Git...${NC}"
|
|
cd "$NODEJS_DIR"
|
|
git pull origin main 2>/dev/null || echo "Git nicht konfiguriert"
|
|
fi
|
|
|
|
echo -e "\n${YELLOW}[3/5] Abhängigkeiten aktualisieren...${NC}"
|
|
cd "$NODEJS_DIR"
|
|
npm install
|
|
echo -e "${GREEN}✓ Abhängigkeiten aktualisiert${NC}"
|
|
|
|
echo -e "\n${YELLOW}[4/5] TypeScript kompilieren...${NC}"
|
|
npm run build
|
|
echo -e "${GREEN}✓ Kompilierung abgeschlossen${NC}"
|
|
|
|
echo -e "\n${YELLOW}[5/5] PM2 neustarten...${NC}"
|
|
pm2 restart pointcab-server
|
|
echo -e "${GREEN}✓ Server neugestartet${NC}"
|
|
|
|
echo ""
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN}Deployment abgeschlossen!${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo ""
|
|
|
|
# Status anzeigen
|
|
pm2 status
|
|
|
|
echo ""
|
|
echo -e "Health-Check: ${YELLOW}curl http://localhost:3000/health${NC}"
|
|
echo -e "Logs: ${YELLOW}pm2 logs pointcab-server${NC}"
|
|
echo -e "Rollback: ${YELLOW}$BACKUP_DIR/$TIMESTAMP/rollback.sh${NC}" |