#!/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}"