diff --git a/deploy/systemd/zk-data-agent-frontend.service.template b/deploy/systemd/zk-data-agent-frontend.service.template index f156047..15e8976 100644 --- a/deploy/systemd/zk-data-agent-frontend.service.template +++ b/deploy/systemd/zk-data-agent-frontend.service.template @@ -1,6 +1,6 @@ [Unit] Description=ZK Data Agent frontend -After=network-online.target zk-data-agent-backend.service +After=network-online.target __BACKEND_SERVICE__.service Wants=network-online.target [Service] diff --git a/scripts/deploy-ubuntu.sh b/scripts/deploy-ubuntu.sh index cebccba..160d9d5 100755 --- a/scripts/deploy-ubuntu.sh +++ b/scripts/deploy-ubuntu.sh @@ -8,8 +8,9 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ENV_FILE="${ROOT_DIR}/.env.deploy" PYTHON_VERSION="${PYTHON_VERSION:-3.10.14}" -BACKEND_SERVICE="zk-data-agent-backend" -FRONTEND_SERVICE="zk-data-agent-frontend" +DEPLOY_INSTANCE="${CLAW_DEPLOY_INSTANCE:-zk-data-agent}" +BACKEND_SERVICE="${CLAW_BACKEND_SERVICE:-${DEPLOY_INSTANCE}-backend}" +FRONTEND_SERVICE="${CLAW_FRONTEND_SERVICE:-${DEPLOY_INSTANCE}-frontend}" USER_SYSTEMD_DIR="${HOME}/.config/systemd/user" BRANCH="" FORCE=0 @@ -72,6 +73,12 @@ fail() { exit 1 } +configure_instance_names() { + DEPLOY_INSTANCE="${CLAW_DEPLOY_INSTANCE:-${DEPLOY_INSTANCE:-zk-data-agent}}" + BACKEND_SERVICE="${CLAW_BACKEND_SERVICE:-${DEPLOY_INSTANCE}-backend}" + FRONTEND_SERVICE="${CLAW_FRONTEND_SERVICE:-${DEPLOY_INSTANCE}-frontend}" +} + require_command() { local name="$1" local hint="$2" @@ -155,6 +162,7 @@ export OPENAI_API_KEY=$(printf "%q" "${api_key}") export OPENAI_BASE_URL=$(printf "%q" "${base_url}") export OPENAI_MODEL=$(printf "%q" "${model}") +export CLAW_DEPLOY_INSTANCE=$(printf "%q" "${DEPLOY_INSTANCE}") export CLAW_BACKEND_HOST=$(printf "%q" "${backend_host}") export CLAW_BACKEND_PORT=$(printf "%q" "${backend_port}") export CLAW_FRONTEND_HOST=$(printf "%q" "${frontend_host}") @@ -168,10 +176,12 @@ ensure_env_file() { if [[ -f "${ENV_FILE}" ]]; then # shellcheck disable=SC1090 source "${ENV_FILE}" + configure_instance_names if [[ -z "${OPENAI_API_KEY:-}" ]]; then fail "${ENV_FILE} 缺少 OPENAI_API_KEY,请编辑该文件补齐。" fi log "使用本机部署配置:${ENV_FILE}" + echo "CLAW_DEPLOY_INSTANCE=${DEPLOY_INSTANCE}" echo "OPENAI_BASE_URL=${OPENAI_BASE_URL:-}" echo "OPENAI_MODEL=${OPENAI_MODEL:-}" echo "OPENAI_API_KEY=已配置" @@ -190,6 +200,7 @@ ensure_env_file() { [[ -n "${api_key}" ]] || fail "OPENAI_API_KEY 不能为空。" prompt_value base_url "请输入 OPENAI_BASE_URL" "http://model.mify.ai.srv/v1" prompt_value model "请输入 OPENAI_MODEL" "xiaomi/mimo-v2-flash" + configure_instance_names prompt_value backend_host "请输入后端监听地址" "127.0.0.1" prompt_value backend_port "请输入后端端口" "8765" prompt_value frontend_host "请输入前端监听地址" "0.0.0.0" @@ -283,6 +294,8 @@ install_systemd_service() { mkdir -p "${USER_SYSTEMD_DIR}" sed \ -e "s#__PROJECT_ROOT__#${ROOT_DIR}#g" \ + -e "s#__BACKEND_SERVICE__#${BACKEND_SERVICE}#g" \ + -e "s#__FRONTEND_SERVICE__#${FRONTEND_SERVICE}#g" \ "${template_path}" >"${tmp_path}" install -m 0644 "${tmp_path}" "${target_path}" rm -f "${tmp_path}" @@ -329,6 +342,7 @@ main() { bootstrap_system_packages update_git ensure_env_file + configure_instance_names ensure_python build_frontend remember_node_runtime diff --git a/scripts/update-server-fast.sh b/scripts/update-server-fast.sh index f9ef656..419992b 100755 --- a/scripts/update-server-fast.sh +++ b/scripts/update-server-fast.sh @@ -7,8 +7,9 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ENV_FILE="${ROOT_DIR}/.env.deploy" -BACKEND_SERVICE="zk-data-agent-backend" -FRONTEND_SERVICE="zk-data-agent-frontend" +DEPLOY_INSTANCE="${CLAW_DEPLOY_INSTANCE:-zk-data-agent}" +BACKEND_SERVICE="${CLAW_BACKEND_SERVICE:-${DEPLOY_INSTANCE}-backend}" +FRONTEND_SERVICE="${CLAW_FRONTEND_SERVICE:-${DEPLOY_INSTANCE}-frontend}" BRANCH="${1:-}" log() { @@ -20,10 +21,17 @@ fail() { exit 1 } +configure_instance_names() { + DEPLOY_INSTANCE="${CLAW_DEPLOY_INSTANCE:-${DEPLOY_INSTANCE:-zk-data-agent}}" + BACKEND_SERVICE="${CLAW_BACKEND_SERVICE:-${DEPLOY_INSTANCE}-backend}" + FRONTEND_SERVICE="${CLAW_FRONTEND_SERVICE:-${DEPLOY_INSTANCE}-frontend}" +} + resolve_npm_bin() { if [[ -f "${ENV_FILE}" ]]; then # shellcheck disable=SC1090 source "${ENV_FILE}" + configure_instance_names fi if [[ -n "${CLAW_NODE_BIN_DIR:-}" ]]; then export PATH="${CLAW_NODE_BIN_DIR}:${PATH}" @@ -44,6 +52,12 @@ resolve_npm_bin() { cd "${ROOT_DIR}" [[ -d .git ]] || fail "${ROOT_DIR} 不是 git 仓库。" +if [[ -f "${ENV_FILE}" ]]; then + # shellcheck disable=SC1090 + source "${ENV_FILE}" +fi +configure_instance_names + if [[ -z "${BRANCH}" ]]; then BRANCH="$(git branch --show-current)" fi