Support multiple server deploy instances
This commit is contained in:
@@ -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]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user