发布 v1.1.0:加密双向同步、从机日志TTL与一键部署
This commit is contained in:
59
linux/slave-package/bin/install-slave.sh
Executable file
59
linux/slave-package/bin/install-slave.sh
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if [[ "${EUID}" -ne 0 ]]; then
|
||||
echo "Please run as root: sudo ./bin/install-slave.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PACKAGE_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
INSTALL_DIR="${1:-/opt/redis-clip-sync}"
|
||||
SERVICE_NAME="${SERVICE_NAME:-redis-clip-sync}"
|
||||
RUN_USER="${RUN_USER:-${SUDO_USER:-root}}"
|
||||
RUN_GROUP="${RUN_GROUP:-$RUN_USER}"
|
||||
TEMPLATE_PATH="$PACKAGE_ROOT/systemd/redis-clip-sync.service.tpl"
|
||||
TARGET_SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||
|
||||
if [[ ! -f "$TEMPLATE_PATH" ]]; then
|
||||
echo "Template not found: $TEMPLATE_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Installing to: $INSTALL_DIR"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
|
||||
if [[ -f "$INSTALL_DIR/conf/config.properties" ]]; then
|
||||
cp "$INSTALL_DIR/conf/config.properties" "$INSTALL_DIR/conf/config.properties.bak.$(date +%Y%m%d%H%M%S)"
|
||||
echo "Existing config backed up in $INSTALL_DIR/conf"
|
||||
fi
|
||||
|
||||
cp -a "$PACKAGE_ROOT/bin" "$INSTALL_DIR/"
|
||||
cp -a "$PACKAGE_ROOT/lib" "$INSTALL_DIR/"
|
||||
cp -a "$PACKAGE_ROOT/conf" "$INSTALL_DIR/"
|
||||
cp -a "$PACKAGE_ROOT/systemd" "$INSTALL_DIR/"
|
||||
mkdir -p "$INSTALL_DIR/logs" "$INSTALL_DIR/run"
|
||||
|
||||
chown -R "$RUN_USER:$RUN_GROUP" "$INSTALL_DIR"
|
||||
chmod +x "$INSTALL_DIR/bin/start.sh" "$INSTALL_DIR/bin/stop.sh" "$INSTALL_DIR/bin/status.sh" "$INSTALL_DIR/bin/logs.sh"
|
||||
|
||||
SERVICE_CONTENT="$(<"$TEMPLATE_PATH")"
|
||||
SERVICE_CONTENT="${SERVICE_CONTENT//__INSTALL_DIR__/$INSTALL_DIR}"
|
||||
SERVICE_CONTENT="${SERVICE_CONTENT//__RUN_USER__/$RUN_USER}"
|
||||
SERVICE_CONTENT="${SERVICE_CONTENT//__RUN_GROUP__/$RUN_GROUP}"
|
||||
|
||||
printf '%s\n' "$SERVICE_CONTENT" > "$TARGET_SERVICE_FILE"
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now "$SERVICE_NAME"
|
||||
|
||||
echo
|
||||
echo "Install completed"
|
||||
echo "Service name: $SERVICE_NAME"
|
||||
echo "Install dir: $INSTALL_DIR"
|
||||
echo
|
||||
echo "Useful commands:"
|
||||
echo " systemctl status $SERVICE_NAME"
|
||||
echo " journalctl -u $SERVICE_NAME -f"
|
||||
echo " systemctl restart $SERVICE_NAME"
|
||||
18
linux/slave-package/bin/logs.sh
Executable file
18
linux/slave-package/bin/logs.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SERVICE_NAME="${SERVICE_NAME:-redis-clip-sync}"
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
APP_HOME="$(dirname "$SCRIPT_DIR")"
|
||||
LOG_FILE="$APP_HOME/logs/app.log"
|
||||
|
||||
if command -v systemctl >/dev/null 2>&1 && systemctl cat "$SERVICE_NAME" >/dev/null 2>&1; then
|
||||
exec journalctl -u "$SERVICE_NAME" -f
|
||||
fi
|
||||
|
||||
if [[ ! -f "$LOG_FILE" ]]; then
|
||||
echo "Log file not found: $LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec tail -f "$LOG_FILE"
|
||||
44
linux/slave-package/bin/start.sh
Executable file
44
linux/slave-package/bin/start.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
APP_HOME="$(dirname "$SCRIPT_DIR")"
|
||||
JAR_PATH="$APP_HOME/lib/redis-clip-sync.jar"
|
||||
LOG_FILE="$APP_HOME/logs/app.log"
|
||||
PID_FILE="$APP_HOME/run/app.pid"
|
||||
|
||||
FOREGROUND="false"
|
||||
CONFIG_PATH="$APP_HOME/conf/config.properties"
|
||||
|
||||
for arg in "$@"; do
|
||||
if [[ "$arg" == "--foreground" ]]; then
|
||||
FOREGROUND="true"
|
||||
elif [[ "$arg" == *.properties ]]; then
|
||||
CONFIG_PATH="$arg"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ! -f "$JAR_PATH" ]]; then
|
||||
echo "Jar not found: $JAR_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$CONFIG_PATH" ]]; then
|
||||
echo "Config not found: $CONFIG_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$APP_HOME/logs" "$APP_HOME/run"
|
||||
|
||||
if [[ "$FOREGROUND" == "true" ]]; then
|
||||
exec java -jar "$JAR_PATH" "$CONFIG_PATH"
|
||||
fi
|
||||
|
||||
if [[ -f "$PID_FILE" ]] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
|
||||
echo "RedisClipSync already running (pid=$(cat "$PID_FILE"))."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
nohup java -jar "$JAR_PATH" "$CONFIG_PATH" >> "$LOG_FILE" 2>&1 &
|
||||
echo $! > "$PID_FILE"
|
||||
echo "RedisClipSync started (pid=$(cat "$PID_FILE"))."
|
||||
18
linux/slave-package/bin/status.sh
Executable file
18
linux/slave-package/bin/status.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SERVICE_NAME="${SERVICE_NAME:-redis-clip-sync}"
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
APP_HOME="$(dirname "$SCRIPT_DIR")"
|
||||
PID_FILE="$APP_HOME/run/app.pid"
|
||||
|
||||
if command -v systemctl >/dev/null 2>&1 && systemctl cat "$SERVICE_NAME" >/dev/null 2>&1; then
|
||||
systemctl status "$SERVICE_NAME" --no-pager
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ -f "$PID_FILE" ]] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
|
||||
echo "RedisClipSync running (pid=$(cat "$PID_FILE"))."
|
||||
else
|
||||
echo "RedisClipSync not running."
|
||||
fi
|
||||
25
linux/slave-package/bin/stop.sh
Executable file
25
linux/slave-package/bin/stop.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
APP_HOME="$(dirname "$SCRIPT_DIR")"
|
||||
PID_FILE="$APP_HOME/run/app.pid"
|
||||
|
||||
if [[ ! -f "$PID_FILE" ]]; then
|
||||
echo "No pid file found, service may not be running."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
PID="$(cat "$PID_FILE")"
|
||||
if kill -0 "$PID" 2>/dev/null; then
|
||||
kill "$PID"
|
||||
sleep 1
|
||||
if kill -0 "$PID" 2>/dev/null; then
|
||||
kill -9 "$PID"
|
||||
fi
|
||||
echo "RedisClipSync stopped (pid=$PID)."
|
||||
else
|
||||
echo "Process already stopped (pid=$PID)."
|
||||
fi
|
||||
|
||||
rm -f "$PID_FILE"
|
||||
Reference in New Issue
Block a user