Support multiple server deploy instances

This commit is contained in:
wuyang6
2026-05-11 15:58:21 +08:00
parent f22de8a40b
commit 7ad0e8b268
3 changed files with 33 additions and 5 deletions
@@ -1,6 +1,6 @@
[Unit] [Unit]
Description=ZK Data Agent frontend 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 Wants=network-online.target
[Service] [Service]
+16 -2
View File
@@ -8,8 +8,9 @@ set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_FILE="${ROOT_DIR}/.env.deploy" ENV_FILE="${ROOT_DIR}/.env.deploy"
PYTHON_VERSION="${PYTHON_VERSION:-3.10.14}" PYTHON_VERSION="${PYTHON_VERSION:-3.10.14}"
BACKEND_SERVICE="zk-data-agent-backend" DEPLOY_INSTANCE="${CLAW_DEPLOY_INSTANCE:-zk-data-agent}"
FRONTEND_SERVICE="zk-data-agent-frontend" BACKEND_SERVICE="${CLAW_BACKEND_SERVICE:-${DEPLOY_INSTANCE}-backend}"
FRONTEND_SERVICE="${CLAW_FRONTEND_SERVICE:-${DEPLOY_INSTANCE}-frontend}"
USER_SYSTEMD_DIR="${HOME}/.config/systemd/user" USER_SYSTEMD_DIR="${HOME}/.config/systemd/user"
BRANCH="" BRANCH=""
FORCE=0 FORCE=0
@@ -72,6 +73,12 @@ fail() {
exit 1 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() { require_command() {
local name="$1" local name="$1"
local hint="$2" 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_BASE_URL=$(printf "%q" "${base_url}")
export OPENAI_MODEL=$(printf "%q" "${model}") 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_HOST=$(printf "%q" "${backend_host}")
export CLAW_BACKEND_PORT=$(printf "%q" "${backend_port}") export CLAW_BACKEND_PORT=$(printf "%q" "${backend_port}")
export CLAW_FRONTEND_HOST=$(printf "%q" "${frontend_host}") export CLAW_FRONTEND_HOST=$(printf "%q" "${frontend_host}")
@@ -168,10 +176,12 @@ ensure_env_file() {
if [[ -f "${ENV_FILE}" ]]; then if [[ -f "${ENV_FILE}" ]]; then
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "${ENV_FILE}" source "${ENV_FILE}"
configure_instance_names
if [[ -z "${OPENAI_API_KEY:-}" ]]; then if [[ -z "${OPENAI_API_KEY:-}" ]]; then
fail "${ENV_FILE} 缺少 OPENAI_API_KEY,请编辑该文件补齐。" fail "${ENV_FILE} 缺少 OPENAI_API_KEY,请编辑该文件补齐。"
fi fi
log "使用本机部署配置:${ENV_FILE}" log "使用本机部署配置:${ENV_FILE}"
echo "CLAW_DEPLOY_INSTANCE=${DEPLOY_INSTANCE}"
echo "OPENAI_BASE_URL=${OPENAI_BASE_URL:-}" echo "OPENAI_BASE_URL=${OPENAI_BASE_URL:-}"
echo "OPENAI_MODEL=${OPENAI_MODEL:-}" echo "OPENAI_MODEL=${OPENAI_MODEL:-}"
echo "OPENAI_API_KEY=已配置" echo "OPENAI_API_KEY=已配置"
@@ -190,6 +200,7 @@ ensure_env_file() {
[[ -n "${api_key}" ]] || fail "OPENAI_API_KEY 不能为空。" [[ -n "${api_key}" ]] || fail "OPENAI_API_KEY 不能为空。"
prompt_value base_url "请输入 OPENAI_BASE_URL" "http://model.mify.ai.srv/v1" prompt_value base_url "请输入 OPENAI_BASE_URL" "http://model.mify.ai.srv/v1"
prompt_value model "请输入 OPENAI_MODEL" "xiaomi/mimo-v2-flash" prompt_value model "请输入 OPENAI_MODEL" "xiaomi/mimo-v2-flash"
configure_instance_names
prompt_value backend_host "请输入后端监听地址" "127.0.0.1" prompt_value backend_host "请输入后端监听地址" "127.0.0.1"
prompt_value backend_port "请输入后端端口" "8765" prompt_value backend_port "请输入后端端口" "8765"
prompt_value frontend_host "请输入前端监听地址" "0.0.0.0" prompt_value frontend_host "请输入前端监听地址" "0.0.0.0"
@@ -283,6 +294,8 @@ install_systemd_service() {
mkdir -p "${USER_SYSTEMD_DIR}" mkdir -p "${USER_SYSTEMD_DIR}"
sed \ sed \
-e "s#__PROJECT_ROOT__#${ROOT_DIR}#g" \ -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}" "${template_path}" >"${tmp_path}"
install -m 0644 "${tmp_path}" "${target_path}" install -m 0644 "${tmp_path}" "${target_path}"
rm -f "${tmp_path}" rm -f "${tmp_path}"
@@ -329,6 +342,7 @@ main() {
bootstrap_system_packages bootstrap_system_packages
update_git update_git
ensure_env_file ensure_env_file
configure_instance_names
ensure_python ensure_python
build_frontend build_frontend
remember_node_runtime remember_node_runtime
+16 -2
View File
@@ -7,8 +7,9 @@ set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_FILE="${ROOT_DIR}/.env.deploy" ENV_FILE="${ROOT_DIR}/.env.deploy"
BACKEND_SERVICE="zk-data-agent-backend" DEPLOY_INSTANCE="${CLAW_DEPLOY_INSTANCE:-zk-data-agent}"
FRONTEND_SERVICE="zk-data-agent-frontend" BACKEND_SERVICE="${CLAW_BACKEND_SERVICE:-${DEPLOY_INSTANCE}-backend}"
FRONTEND_SERVICE="${CLAW_FRONTEND_SERVICE:-${DEPLOY_INSTANCE}-frontend}"
BRANCH="${1:-}" BRANCH="${1:-}"
log() { log() {
@@ -20,10 +21,17 @@ fail() {
exit 1 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() { resolve_npm_bin() {
if [[ -f "${ENV_FILE}" ]]; then if [[ -f "${ENV_FILE}" ]]; then
# shellcheck disable=SC1090 # shellcheck disable=SC1090
source "${ENV_FILE}" source "${ENV_FILE}"
configure_instance_names
fi fi
if [[ -n "${CLAW_NODE_BIN_DIR:-}" ]]; then if [[ -n "${CLAW_NODE_BIN_DIR:-}" ]]; then
export PATH="${CLAW_NODE_BIN_DIR}:${PATH}" export PATH="${CLAW_NODE_BIN_DIR}:${PATH}"
@@ -44,6 +52,12 @@ resolve_npm_bin() {
cd "${ROOT_DIR}" cd "${ROOT_DIR}"
[[ -d .git ]] || fail "${ROOT_DIR} 不是 git 仓库。" [[ -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 if [[ -z "${BRANCH}" ]]; then
BRANCH="$(git branch --show-current)" BRANCH="$(git branch --show-current)"
fi fi