- Updated the script to securely back up .env files before deleting the old backend, ensuring no loss of environment configurations. - Enhanced the restoration process of .env files with clearer logging for success and warnings when no files are found. - Simplified the logic for copying the new backend while excluding .env files, improving clarity and maintainability of the script.
108 lines
3.3 KiB
Bash
Executable File
108 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Optionaler Parameter für STAGE (Standard: production)
|
|
STAGE=${1:-production}
|
|
|
|
echo "Updating YourPart Backend..."
|
|
echo "Using STAGE: $STAGE"
|
|
echo "NOTE: .env files will NOT be overwritten"
|
|
|
|
# Zum Backend-Verzeichnis wechseln
|
|
cd backend
|
|
|
|
# Alle generierten Verzeichnisse löschen
|
|
echo "Lösche alle generierten Verzeichnisse..."
|
|
rm -rf node_modules/.cache/
|
|
rm -rf logs/
|
|
rm -rf tmp/
|
|
|
|
# Dependencies installieren
|
|
echo "Installing dependencies..."
|
|
npm ci --production
|
|
|
|
# Sichere .env-Dateien aus /opt/yourpart/backend temporär
|
|
TEMP_ENV_DIR="/tmp/yourpart-env-backup-$$"
|
|
echo "Sichere .env-Dateien aus /opt/yourpart/backend..."
|
|
sudo mkdir -p "$TEMP_ENV_DIR"
|
|
if [ -d /opt/yourpart/backend ]; then
|
|
sudo find /opt/yourpart/backend -maxdepth 1 -name '.env*' -type f -exec cp {} "$TEMP_ENV_DIR/" \; 2>/dev/null || true
|
|
if [ "$(ls -A $TEMP_ENV_DIR 2>/dev/null)" ]; then
|
|
echo "✓ .env-Dateien gesichert: $(ls $TEMP_ENV_DIR)"
|
|
else
|
|
echo "⚠ Keine .env-Dateien in /opt/yourpart/backend gefunden"
|
|
fi
|
|
fi
|
|
|
|
# Altes Backend löschen
|
|
echo "Lösche altes Backend..."
|
|
sudo rm -rf /opt/yourpart/backend
|
|
|
|
# Erstelle Backend-Verzeichnis
|
|
echo "Erstelle Backend-Verzeichnis..."
|
|
sudo mkdir -p /opt/yourpart/backend
|
|
|
|
# Kopiere neues Backend (ohne .env-Dateien aus dem Quellverzeichnis)
|
|
echo "Kopiere neues Backend..."
|
|
if command -v rsync &> /dev/null; then
|
|
sudo rsync -av --exclude='.env*' --exclude='node_modules' . /opt/yourpart/backend/ 2>/dev/null
|
|
if [ -d node_modules ]; then
|
|
sudo rsync -av --exclude='.env*' node_modules/ /opt/yourpart/backend/node_modules/ 2>/dev/null || \
|
|
sudo cp -r node_modules /opt/yourpart/backend/ 2>/dev/null
|
|
fi
|
|
else
|
|
# Fallback: Kopiere alles außer .env
|
|
sudo cp -r * /opt/yourpart/backend/ 2>/dev/null
|
|
fi
|
|
|
|
# Stelle .env-Dateien wieder her
|
|
echo "Stelle .env-Dateien wieder her..."
|
|
if [ -d "$TEMP_ENV_DIR" ] && [ "$(ls -A $TEMP_ENV_DIR 2>/dev/null)" ]; then
|
|
sudo cp "$TEMP_ENV_DIR"/.env* /opt/yourpart/backend/ 2>/dev/null || true
|
|
echo "✓ .env-Dateien wiederhergestellt"
|
|
else
|
|
echo "⚠ Keine .env-Dateien zum Wiederherstellen vorhanden"
|
|
fi
|
|
sudo rm -rf "$TEMP_ENV_DIR"
|
|
|
|
# Prüfe ob .env vorhanden ist
|
|
if [ -f /opt/yourpart/backend/.env ]; then
|
|
echo "✓ .env-Datei ist vorhanden"
|
|
else
|
|
echo "⚠ WARNUNG: Keine .env-Datei in /opt/yourpart/backend gefunden!"
|
|
echo " Bitte manuell erstellen: sudo nano /opt/yourpart/backend/.env"
|
|
fi
|
|
|
|
# Berechtigungen setzen
|
|
echo "Setting permissions..."
|
|
sudo chown -R yourpart:yourpart /opt/yourpart/backend
|
|
sudo chmod -R 755 /opt/yourpart/backend
|
|
# Stelle sicher, dass .env-Dateien die richtigen Berechtigungen haben
|
|
if [ -f /opt/yourpart/backend/.env ]; then
|
|
sudo chmod 600 /opt/yourpart/backend/.env
|
|
fi
|
|
|
|
# Systemd-Service aktualisieren und neu laden
|
|
echo "Updating systemd service..."
|
|
sudo cp yourpart.service /etc/systemd/system/
|
|
sudo systemctl daemon-reload
|
|
|
|
# Datenbank-Synchronisation durchführen
|
|
echo "Running database synchronization..."
|
|
cd /opt/yourpart/backend
|
|
|
|
# STAGE für Schema-Updates verwenden
|
|
echo "Running database sync with STAGE=$STAGE..."
|
|
export STAGE=$STAGE && npm run sync-db
|
|
|
|
# Service neu starten
|
|
echo "Restarting yourpart service..."
|
|
sudo systemctl restart yourpart
|
|
|
|
# Kurz warten und Status prüfen
|
|
sleep 2
|
|
echo "Checking service status..."
|
|
sudo systemctl status yourpart --no-pager
|
|
|
|
echo "Backend update completed!"
|
|
|