diff --git a/scripts/start-azeroth-servers.sh b/scripts/start-azeroth-servers.sh new file mode 100755 index 0000000..6cb2a0a --- /dev/null +++ b/scripts/start-azeroth-servers.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +# Start AzerothCore authserver + worldserver detached from the SSH session (nohup + disown). +# Stops any already-running authserver/worldserver processes first. +# +# Usage: +# sudo bash scripts/start-azeroth-servers.sh +# AZEROTH_BIN=/path/to/azeroth-server/bin bash scripts/start-azeroth-servers.sh +# +# Environment: +# AZEROTH_BIN — directory with authserver and worldserver (default: /root/azeroth-server/bin) +# AZEROTH_LOG_DIR — log directory (default: /logs) + +set -euo pipefail + +BIN_DIR="${AZEROTH_BIN:-/root/azeroth-server/bin}" +LOG_DIR="${AZEROTH_LOG_DIR:-$(cd "$(dirname "$BIN_DIR")" && pwd)/logs}" + +AUTH_BIN="${BIN_DIR}/authserver" +WORLD_BIN="${BIN_DIR}/worldserver" + +if [[ ! -x "$AUTH_BIN" ]]; then + echo "error: not found or not executable: $AUTH_BIN" >&2 + exit 1 +fi +if [[ ! -x "$WORLD_BIN" ]]; then + echo "error: not found or not executable: $WORLD_BIN" >&2 + exit 1 +fi + +pkill -x authserver 2>/dev/null || true +pkill -x worldserver 2>/dev/null || true +sleep 1 + +mkdir -p "$LOG_DIR" + +cd "$BIN_DIR" + +nohup "$AUTH_BIN" >>"$LOG_DIR/authserver.log" 2>&1 & +disown || true + +sleep 2 + +nohup "$WORLD_BIN" >>"$LOG_DIR/worldserver.log" 2>&1 & +disown || true + +echo "Started authserver and worldserver (survives SSH disconnect)." +echo "Bin: $BIN_DIR" +echo "Logs: $LOG_DIR/authserver.log" +echo " $LOG_DIR/worldserver.log"