Refactor fix_wt_config.sh to improve configuration management by enhancing error handling and adding logging for better traceability.
This commit is contained in:
106
install-service-ypchat.sh
Executable file
106
install-service-ypchat.sh
Executable file
@@ -0,0 +1,106 @@
|
||||
#!/bin/bash
|
||||
|
||||
# SingleChat Systemd Service Installation für ypchat.net
|
||||
# Erstellt einen systemd Service für SingleChat
|
||||
|
||||
set -e
|
||||
|
||||
SERVICE_NAME="ypchat"
|
||||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||
APP_DIR="/opt/ypchat"
|
||||
USER="www-data"
|
||||
GROUP="www-data"
|
||||
|
||||
echo "=========================================="
|
||||
echo "SingleChat Systemd Service Installation"
|
||||
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 ./install-service-ypchat.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prüfe ob App-Verzeichnis existiert
|
||||
if [ ! -d "$APP_DIR" ]; then
|
||||
echo "FEHLER: App-Verzeichnis $APP_DIR existiert nicht!"
|
||||
echo "Bitte kopiere die Anwendung nach $APP_DIR oder passe APP_DIR an."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prüfe ob .env Datei existiert
|
||||
if [ ! -f "$APP_DIR/.env" ]; then
|
||||
echo "WARNUNG: .env Datei nicht gefunden in $APP_DIR"
|
||||
echo "Erstelle .env Datei..."
|
||||
cat > "$APP_DIR/.env" << EOF
|
||||
NODE_ENV=production
|
||||
PORT=4000
|
||||
SESSION_SECRET=$(openssl rand -hex 32)
|
||||
EOF
|
||||
chown $USER:$GROUP "$APP_DIR/.env"
|
||||
echo "✓ .env Datei erstellt"
|
||||
fi
|
||||
|
||||
# Erstelle Service-Datei
|
||||
echo "Erstelle Service-Datei..."
|
||||
cat > "$SERVICE_FILE" << EOF
|
||||
[Unit]
|
||||
Description=SingleChat Node.js Application
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=$USER
|
||||
Group=$GROUP
|
||||
WorkingDirectory=$APP_DIR
|
||||
Environment="NODE_ENV=production"
|
||||
Environment="PORT=4000"
|
||||
EnvironmentFile=$APP_DIR/.env
|
||||
ExecStart=/usr/bin/node server/index.js
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
SyslogIdentifier=ypchat
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
echo "✓ Service-Datei erstellt: $SERVICE_FILE"
|
||||
|
||||
# Lade systemd neu
|
||||
echo "Lade systemd neu..."
|
||||
systemctl daemon-reload
|
||||
|
||||
echo "✓ systemd neu geladen"
|
||||
|
||||
# Stoppe alten Service falls vorhanden
|
||||
if systemctl is-active --quiet ypchat 2>/dev/null; then
|
||||
echo "Stoppe alten Service..."
|
||||
systemctl stop ypchat
|
||||
echo "✓ Alter Service gestoppt"
|
||||
fi
|
||||
|
||||
# Aktiviere Service
|
||||
echo "Aktiviere Service..."
|
||||
systemctl enable $SERVICE_NAME
|
||||
|
||||
echo "✓ Service aktiviert"
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Service-Installation abgeschlossen!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Verfügbare Befehle:"
|
||||
echo " Start: sudo systemctl start $SERVICE_NAME"
|
||||
echo " Stop: sudo systemctl stop $SERVICE_NAME"
|
||||
echo " Status: sudo systemctl status $SERVICE_NAME"
|
||||
echo " Logs: sudo journalctl -u $SERVICE_NAME -f"
|
||||
echo ""
|
||||
echo "WICHTIG: Starte den Service mit:"
|
||||
echo " sudo systemctl start $SERVICE_NAME"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user