75 lines
2.9 KiB
Bash
75 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PROD_HOST="${PROD_HOST:-player@shineup.me}"
|
|
TARGET_HOST="${TARGET_HOST:-player@193.8.215.70}"
|
|
TARGET_DOMAIN="${TARGET_DOMAIN:-test2.shineup.me}"
|
|
REMOTE_BASE="${REMOTE_BASE:-/home/player/SHiNE}"
|
|
REMOTE_SERVER_DIR="${REMOTE_SERVER_DIR:-$REMOTE_BASE/shine-server}"
|
|
REMOTE_DATA_DIR="${REMOTE_DATA_DIR:-$REMOTE_SERVER_DIR/data}"
|
|
REMOTE_LOGS_DIR="${REMOTE_LOGS_DIR:-$REMOTE_SERVER_DIR/logs}"
|
|
REMOTE_UI_DIR="${REMOTE_UI_DIR:-$REMOTE_BASE/shine-ui}"
|
|
REMOTE_SERVICE_NAME="${REMOTE_SERVICE_NAME:-shine-server}"
|
|
LOCAL_JAR="${LOCAL_JAR:-SHiNE-server/build/libs/shine-server.jar}"
|
|
PROD_DATA_DIR="${PROD_DATA_DIR:-/home/player/SHiNE/shine-server/data}"
|
|
PROD_APP_PROPS="${PROD_APP_PROPS:-/home/player/SHiNE/shine-server/application.properties}"
|
|
|
|
TMP_DIR="$(mktemp -d)"
|
|
cleanup() {
|
|
rm -rf "$TMP_DIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
if [[ ! -f "$LOCAL_JAR" ]]; then
|
|
echo "ERROR: локальный jar не найден: $LOCAL_JAR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
ssh -o BatchMode=yes -o ConnectTimeout=20 "$PROD_HOST" "echo SSH OK" >/dev/null
|
|
ssh -o BatchMode=yes -o ConnectTimeout=20 "$TARGET_HOST" "echo SSH OK" >/dev/null
|
|
ssh "$TARGET_HOST" "sudo -n true"
|
|
ssh "$TARGET_HOST" "java -version >/dev/null 2>&1"
|
|
|
|
mkdir -p "$TMP_DIR/data"
|
|
rsync -az --delete "$PROD_HOST:$PROD_DATA_DIR/" "$TMP_DIR/data/"
|
|
rsync -az "$PROD_HOST:$PROD_APP_PROPS" "$TMP_DIR/application.properties"
|
|
perl -0pi -e 's@^server\.ui\.indexPath=.*$@server.ui.indexPath=/home/player/SHiNE/shine-ui/index.html@m' "$TMP_DIR/application.properties"
|
|
|
|
cat >"$TMP_DIR/shine-server.service" <<EOF
|
|
[Unit]
|
|
Description=SHiNE Server
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=player
|
|
Group=player
|
|
WorkingDirectory=$REMOTE_SERVER_DIR
|
|
ExecStart=/usr/bin/java -Dserver.port=7070 -jar $REMOTE_SERVER_DIR/shine-server.jar
|
|
Restart=always
|
|
RestartSec=3
|
|
StandardOutput=append:$REMOTE_LOGS_DIR/app.log
|
|
StandardError=append:$REMOTE_LOGS_DIR/app.log
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
TARGET_HOST="$TARGET_HOST" TARGET_DOMAIN="$TARGET_DOMAIN" REMOTE_UI_DIR="$REMOTE_UI_DIR" \
|
|
bash "$(dirname "$0")/scripts/install_test2_caddyfile.sh"
|
|
|
|
ssh "$TARGET_HOST" "mkdir -p '$REMOTE_SERVER_DIR' '$REMOTE_DATA_DIR' '$REMOTE_LOGS_DIR' '$REMOTE_UI_DIR'"
|
|
rsync -az --delete "$TMP_DIR/data/" "$TARGET_HOST:$REMOTE_DATA_DIR/"
|
|
rsync -az --timeout=120 "$LOCAL_JAR" "$TARGET_HOST:$REMOTE_SERVER_DIR/shine-server.jar"
|
|
rsync -az "$TMP_DIR/application.properties" "$TARGET_HOST:$REMOTE_SERVER_DIR/application.properties"
|
|
rsync -az "$TMP_DIR/shine-server.service" "$TARGET_HOST:/tmp/shine-server.service"
|
|
|
|
ssh "$TARGET_HOST" "set -euo pipefail; \
|
|
sudo mv -f /tmp/shine-server.service /etc/systemd/system/shine-server.service; \
|
|
sudo chown root:root /etc/systemd/system/shine-server.service; \
|
|
sudo chown -R player:player '$REMOTE_SERVER_DIR'; \
|
|
touch '$REMOTE_LOGS_DIR/app.log'; \
|
|
sudo systemctl daemon-reload; \
|
|
sudo systemctl enable '$REMOTE_SERVICE_NAME'; \
|
|
sudo systemctl restart '$REMOTE_SERVICE_NAME'"
|