Use user-level deployment by default
This commit is contained in:
+12
-12
@@ -3,13 +3,14 @@ set -euo pipefail
|
||||
|
||||
# Ubuntu 一键部署/更新脚本。
|
||||
# - 首次执行会交互式生成 .env.deploy,本机保存,不提交 git。
|
||||
# - 后续执行会拉取代码、更新依赖、构建前端、安装/重启 systemd 服务。
|
||||
# - 后续执行会拉取代码、更新依赖、构建前端、安装/重启用户级 systemd 服务。
|
||||
|
||||
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"
|
||||
USER_SYSTEMD_DIR="${HOME}/.config/systemd/user"
|
||||
BRANCH=""
|
||||
FORCE=0
|
||||
SKIP_GIT=0
|
||||
@@ -210,31 +211,30 @@ build_frontend() {
|
||||
install_systemd_service() {
|
||||
local service_name="$1"
|
||||
local template_path="$2"
|
||||
local target_path="/etc/systemd/system/${service_name}.service"
|
||||
local target_path="${USER_SYSTEMD_DIR}/${service_name}.service"
|
||||
local tmp_path
|
||||
tmp_path="$(mktemp)"
|
||||
mkdir -p "${USER_SYSTEMD_DIR}"
|
||||
sed \
|
||||
-e "s#__PROJECT_ROOT__#${ROOT_DIR}#g" \
|
||||
-e "s#__USER__#$(id -un)#g" \
|
||||
"${template_path}" >"${tmp_path}"
|
||||
sudo install -m 0644 "${tmp_path}" "${target_path}"
|
||||
install -m 0644 "${tmp_path}" "${target_path}"
|
||||
rm -f "${tmp_path}"
|
||||
}
|
||||
|
||||
install_services() {
|
||||
require_command systemctl "当前系统不支持 systemd,无法安装服务。"
|
||||
require_command sudo "安装 systemd 服务需要 sudo。"
|
||||
log "安装/更新 systemd 服务"
|
||||
log "安装/更新用户级 systemd 服务"
|
||||
install_systemd_service "${BACKEND_SERVICE}" "${ROOT_DIR}/deploy/systemd/${BACKEND_SERVICE}.service.template"
|
||||
install_systemd_service "${FRONTEND_SERVICE}" "${ROOT_DIR}/deploy/systemd/${FRONTEND_SERVICE}.service.template"
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable "${BACKEND_SERVICE}" "${FRONTEND_SERVICE}"
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable "${BACKEND_SERVICE}" "${FRONTEND_SERVICE}"
|
||||
}
|
||||
|
||||
restart_services() {
|
||||
log "重启服务"
|
||||
sudo systemctl restart "${BACKEND_SERVICE}"
|
||||
sudo systemctl restart "${FRONTEND_SERVICE}"
|
||||
systemctl --user restart "${BACKEND_SERVICE}"
|
||||
systemctl --user restart "${FRONTEND_SERVICE}"
|
||||
}
|
||||
|
||||
health_check() {
|
||||
@@ -253,8 +253,8 @@ health_check() {
|
||||
sleep 0.5
|
||||
done
|
||||
warn "健康检查失败,输出最近日志。"
|
||||
sudo journalctl -u "${BACKEND_SERVICE}" -n 80 --no-pager || true
|
||||
sudo journalctl -u "${FRONTEND_SERVICE}" -n 80 --no-pager || true
|
||||
journalctl --user -u "${BACKEND_SERVICE}" -n 80 --no-pager || true
|
||||
journalctl --user -u "${FRONTEND_SERVICE}" -n 80 --no-pager || true
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# 适合 README 中 curl | bash 的安装入口。
|
||||
# 它只负责 clone/pull 仓库,然后调用仓库内 scripts/deploy-ubuntu.sh。
|
||||
# 从 git 拉取/更新仓库,然后调用仓库内 scripts/deploy-ubuntu.sh。
|
||||
|
||||
REPO="${REPO:-git@git.n.xiaomi.com:wuyang6/zk-data-agent.git}"
|
||||
BRANCH="${BRANCH:-main}"
|
||||
APP_DIR="${APP_DIR:-/opt/zk-data-agent}"
|
||||
APP_DIR="${APP_DIR:-${HOME}/zk-data-agent}"
|
||||
FORCE=0
|
||||
|
||||
usage() {
|
||||
|
||||
Reference in New Issue
Block a user