#!/bin/bash set -e APP_DIR="$(cd "$(dirname "$0")" && pwd)" DEPLOY_DIR="$APP_DIR/deploy" SERVICE_DIR="/etc/systemd/system" LOG_DIR="$APP_DIR/logs" SERVICES="server cli scheduler" if [ "$(id -u)" -ne 0 ]; then echo "请使用 root 权限运行: sudo bash install.sh" exit 1 fi mkdir -p "$LOG_DIR" echo "=== 安装 systemd 服务 ===" for svc in $SERVICES; do src="$DEPLOY_DIR/${svc}.service" if [ ! -f "$src" ]; then echo "[${svc}] service 文件不存在: $src" continue fi sed "s|WorkingDirectory=/root|WorkingDirectory=$APP_DIR|g; \ s|ExecStart=/root/|ExecStart=$APP_DIR/|g; \ s|EnvironmentFile=-/root/.env|EnvironmentFile=-$APP_DIR/.env|g; \ s|/root/logs/|$LOG_DIR/|g" \ "$src" > "$SERVICE_DIR/${svc}.service" echo "[${svc}] 已安装到 $SERVICE_DIR/${svc}.service" done systemctl daemon-reload for svc in $SERVICES; do systemctl enable "$svc" echo "[${svc}] 已设置开机自启" done echo "" echo "=== 安装完成 ===" echo "使用方式:" echo " bash start.sh # 启动全部" echo " bash stop.sh # 停止全部" echo " bash restart.sh # 重启全部" echo " systemctl status server # 查看主服务状态" echo " systemctl status scheduler # 查看调度器状态" echo " journalctl -u scheduler -f # 查看调度器实时日志"