Enhance fix_wt_config.sh by adding detailed logging and improving error handling for better configuration management and traceability.
This commit is contained in:
134
deploy-to-opt.sh
Executable file
134
deploy-to-opt.sh
Executable 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 ""
|
||||
|
||||
Reference in New Issue
Block a user