Enhance fix_wt_config.sh by adding detailed logging and improving error handling for better configuration management and traceability.

This commit is contained in:
Torsten Schulz (local)
2025-12-04 16:55:03 +01:00
parent e5da73b2a1
commit c63c26bfe4
2 changed files with 137 additions and 0 deletions

3
.env Normal file
View File

@@ -0,0 +1,3 @@
NODE_ENV=production
PORT=4000
SESSION_SECRET=0cd0526f8dd9ab9149bca24010f6207d16d0c4ae28dde53330277b8fcffb2c8b

134
deploy-to-opt.sh Executable file
View File

@@ -0,0 +1,134 @@
#!/bin/bash
# SingleChat Deployment nach /opt/ypchat
# Dieses Skript kopiert die Anwendung nach /opt/ypchat und installiert sie dort
set -e
SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TARGET_DIR="/opt/ypchat"
USER="www-data"
GROUP="www-data"
echo "=========================================="
echo "SingleChat Deployment nach /opt/ypchat"
echo "=========================================="
# Prüfe ob als root ausgeführt
if [ "$EUID" -ne 0 ]; then
echo "FEHLER: Dieses Skript muss als root ausgeführt werden!"
echo "Bitte führe aus: sudo ./deploy-to-opt.sh"
exit 1
fi
# Prüfe ob Source-Verzeichnis existiert
if [ ! -d "$SOURCE_DIR" ]; then
echo "FEHLER: Source-Verzeichnis $SOURCE_DIR existiert nicht!"
exit 1
fi
echo "Source-Verzeichnis: $SOURCE_DIR"
echo "Target-Verzeichnis: $TARGET_DIR"
echo ""
# Erstelle Target-Verzeichnis falls nicht vorhanden
if [ ! -d "$TARGET_DIR" ]; then
echo "Erstelle Target-Verzeichnis..."
mkdir -p "$TARGET_DIR"
echo "✓ Verzeichnis erstellt"
fi
# Kopiere Dateien (ausschließlich node_modules, .git, dist, logs)
echo "Kopiere Dateien nach $TARGET_DIR..."
rsync -av --progress \
--exclude 'node_modules' \
--exclude '.git' \
--exclude 'client/node_modules' \
--exclude 'client/dist' \
--exclude 'docroot/dist' \
--exclude 'logs' \
--exclude '.env' \
"$SOURCE_DIR/" "$TARGET_DIR/"
echo "✓ Dateien kopiert"
# Setze Besitzer
echo "Setze Besitzer auf $USER:$GROUP..."
chown -R $USER:$GROUP "$TARGET_DIR"
echo "✓ Besitzer gesetzt"
# Wechsle ins Target-Verzeichnis und führe Installation durch
echo ""
echo "Führe Installation in $TARGET_DIR durch..."
cd "$TARGET_DIR"
# Installiere Dependencies
echo ""
echo "Installiere Dependencies..."
sudo -u $USER bash -c "cd '$TARGET_DIR' && npm run install:all"
if [ $? -ne 0 ]; then
echo "FEHLER: Installation der Dependencies fehlgeschlagen!"
exit 1
fi
echo "✓ Dependencies installiert"
# Baue Client
echo ""
echo "Baue Client für Production..."
sudo -u $USER bash -c "cd '$TARGET_DIR' && npm run build"
if [ $? -ne 0 ]; then
echo "FEHLER: Build fehlgeschlagen!"
exit 1
fi
echo "✓ Client gebaut"
# Kopiere dist nach docroot
echo ""
echo "Kopiere gebaute Dateien nach docroot..."
if [ -d "$TARGET_DIR/docroot/dist" ]; then
rm -rf "$TARGET_DIR/docroot/dist"
fi
cp -r "$TARGET_DIR/client/dist" "$TARGET_DIR/docroot/"
chown -R $USER:$GROUP "$TARGET_DIR/docroot/dist"
echo "✓ Dateien kopiert"
# Erstelle .env Datei falls nicht vorhanden
if [ ! -f "$TARGET_DIR/.env" ]; then
echo ""
echo "Erstelle .env Datei..."
SESSION_SECRET=$(openssl rand -hex 32)
cat > "$TARGET_DIR/.env" << EOF
NODE_ENV=production
PORT=4000
SESSION_SECRET=$SESSION_SECRET
EOF
chown $USER:$GROUP "$TARGET_DIR/.env"
echo "✓ .env Datei erstellt"
echo "SESSION_SECRET wurde generiert: $SESSION_SECRET"
else
echo "✓ .env Datei existiert bereits"
fi
echo ""
echo "=========================================="
echo "Deployment abgeschlossen!"
echo "=========================================="
echo ""
echo "Nächste Schritte:"
echo "1. Installiere den Service:"
echo " cd $TARGET_DIR"
echo " sudo ./install-service-ypchat.sh"
echo ""
echo "2. Stoppe den alten Service:"
echo " sudo systemctl stop ypchat"
echo ""
echo "3. Starte den neuen Service:"
echo " sudo systemctl start ypchat"
echo " sudo systemctl status ypchat"
echo ""