feat(web): 移除 Docker 与反代部署,改为 Linux 业务服务并自带管理端托管
需求变更:Web 端只保留业务需求,反向代理交由另外的服务处理, 本项目仅提供 IIS / nginx 反代说明文档,不部署反代。 主要改动: - web-server: 新增管理端静态托管(ADMIN_DIR、SPA 深链接回退), 反代因此只需一条全匹配转发规则;新增 adminDir 配置项 - deploy/install.sh: 删除 nginx 安装与站点配置逻辑,改为原生 Linux 服务部署(systemd → OpenRC → SysVinit → 后台进程四级降级), 打印反代交接指引 - deploy/ctl.sh: 启停/状态/日志脚本 - deploy/proxy/: 新增反代说明文档(README.md、nginx.conf.example、 web.config.example),标注上传上限与超时必须同步调整 - 删除 deploy/nginx/、web-server/admin/nginx.conf、Dockerfile、 docker-compose.yml、.dockerignore - scripts/package-release.sh: 锚定排除规则 + 产物完整性校验 - 文档同步:README.txt、DSH.md、project.yaml、tasks/008、tasks/010
This commit is contained in:
+34
-49
@@ -2,9 +2,9 @@
|
||||
# ============================================================
|
||||
# OpenDance Studio Web 服务端 —— Linux 原生站点部署脚本
|
||||
#
|
||||
# 部署形态(不使用 Docker):
|
||||
# nginx ── 静态托管管理端 + 反向代理 API
|
||||
# └──▶ systemd 托管的 Node 进程(NestJS,仅监听 127.0.0.1)
|
||||
# 部署形态(不使用 Docker、不部署反向代理):
|
||||
# 本脚本只负责把 NestJS 业务服务跑起来(systemd / OpenRC / SysVinit / 后台进程)。
|
||||
# 该服务自带管理端页面,反向代理由另外的服务负责,配置说明见 deploy/proxy/。
|
||||
#
|
||||
# 数据库仍是部署方提供的**现有 MySQL / MariaDB 实例**,本脚本不安装、不管理数据库。
|
||||
#
|
||||
@@ -16,8 +16,7 @@
|
||||
# APP_DIR 安装目录(默认 /opt/opendance)
|
||||
# SERVICE_USER 运行服务的系统用户(默认 opendance)
|
||||
# STORAGE_DIR 上传文件目录(默认 /var/lib/opendance/storage)
|
||||
# SERVER_NAME nginx server_name(默认 _)
|
||||
# SKIP_NGINX=1 只装 API 服务,不配置 nginx
|
||||
# PORT API 监听端口(默认 3000)
|
||||
# ============================================================
|
||||
set -euo pipefail
|
||||
# 失败时打印出错行号,避免只看到半截输出
|
||||
@@ -29,7 +28,6 @@ cd "$SRC_DIR"
|
||||
APP_DIR="${APP_DIR:-/opt/opendance}"
|
||||
SERVICE_USER="${SERVICE_USER:-opendance}"
|
||||
STORAGE_DIR="${STORAGE_DIR:-/var/lib/opendance/storage}"
|
||||
SERVER_NAME="${SERVER_NAME:-_}"
|
||||
API_HOST="127.0.0.1"
|
||||
API_PORT="${PORT:-3000}"
|
||||
|
||||
@@ -88,7 +86,7 @@ http_ok() {
|
||||
}
|
||||
|
||||
# ---------- 0. 前置检查 ----------
|
||||
[ "$(id -u)" -eq 0 ] || die "需要 root 权限(安装 systemd 服务与 nginx 站点)。
|
||||
[ "$(id -u)" -eq 0 ] || die "需要 root 权限(安装系统服务、创建服务用户)。
|
||||
请以 root 身份执行,例如: su -c 'bash deploy/install.sh' 或 sudo bash deploy/install.sh"
|
||||
|
||||
# 缺少 deploy/.env 时,若安装目录里已有上次安装留下的配置,直接复用。
|
||||
@@ -385,46 +383,31 @@ if [ "$READY" -ne 1 ]; then
|
||||
fi
|
||||
log "API 已就绪:$(http_get "http://${API_HOST}:${API_PORT}/health" | head -c 200)"
|
||||
|
||||
# ---------- 5. nginx ----------
|
||||
if [ "${SKIP_NGINX:-0}" = "1" ]; then
|
||||
warn "SKIP_NGINX=1,跳过 nginx 配置。API 仅在 ${API_HOST}:${API_PORT} 提供。"
|
||||
else
|
||||
if ! command -v nginx >/dev/null 2>&1; then
|
||||
warn "未安装 nginx,跳过站点配置。"
|
||||
warn " 安装后重新执行本脚本,或手动把 deploy/nginx/opendance.conf 放到 nginx 配置目录。"
|
||||
else
|
||||
log "配置 nginx 站点"
|
||||
NGINX_AVAILABLE=/etc/nginx/sites-available
|
||||
NGINX_ENABLED=/etc/nginx/sites-enabled
|
||||
# RHEL 系发行版没有 sites-available 约定
|
||||
if [ ! -d "$NGINX_AVAILABLE" ]; then
|
||||
NGINX_AVAILABLE=/etc/nginx/conf.d
|
||||
NGINX_ENABLED=/etc/nginx/conf.d
|
||||
fi
|
||||
# ---------- 5. 反向代理(本脚本**不部署**,仅给出说明) ----------
|
||||
# 需求变更:Web 端只负责业务服务,反向代理由另外的服务/团队提供。
|
||||
# 本服务已自带管理端页面,因此反代只需把请求**整体转发**到本端口,
|
||||
# 无需在代理层再托管静态文件、也无需配置 SPA 回退(服务端已处理)。
|
||||
cat <<EOF
|
||||
|
||||
DEST="$NGINX_AVAILABLE/opendance.conf"
|
||||
sed -e "s|__APP_DIR__|$APP_DIR|g" \
|
||||
-e "s|__SERVER_NAME__|$SERVER_NAME|g" \
|
||||
-e "s|__API_HOST__|$API_HOST|g" \
|
||||
-e "s|__API_PORT__|$API_PORT|g" \
|
||||
"$APP_DIR/deploy/nginx/opendance.conf" > "$DEST"
|
||||
------------------------------------------------------------
|
||||
反向代理说明(本脚本不部署反代)
|
||||
------------------------------------------------------------
|
||||
本服务已同时提供 API 与管理端页面,反代只需将请求整体转发至:
|
||||
http://<本机地址>:${API_PORT}
|
||||
|
||||
if [ "$NGINX_ENABLED" != "$NGINX_AVAILABLE" ]; then
|
||||
ln -sf "$DEST" "$NGINX_ENABLED/opendance.conf"
|
||||
if [ -e "$NGINX_ENABLED/default" ]; then
|
||||
rm -f "$NGINX_ENABLED/default"
|
||||
log "已移除 nginx 默认站点(避免抢占 80 端口)"
|
||||
fi
|
||||
fi
|
||||
健康检查(可用于反代的存活探测):http://<本机地址>:${API_PORT}/health
|
||||
上传上限需在代理层同步放开(本服务为 $(( ${UPLOAD_MAX_BYTES:-536870912} / 1024 / 1024 )) MiB)
|
||||
|
||||
if nginx -t; then
|
||||
systemctl reload nginx 2>/dev/null || systemctl restart nginx 2>/dev/null || nginx -s reload
|
||||
log "nginx 已重载"
|
||||
else
|
||||
die "nginx 配置校验失败,请检查 $DEST"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
配置样例与完整说明:
|
||||
deploy/proxy/nginx.conf.example nginx 站点配置
|
||||
deploy/proxy/web.config.example IIS(ARR + URL Rewrite)配置
|
||||
deploy/proxy/README.md IIS / nginx 反代说明文档
|
||||
|
||||
注意:若反代与后端不在同一台机器,需保持 HOST=0.0.0.0 并用防火墙限制来源;
|
||||
若在同一台机器,建议把 HOST 改为 127.0.0.1。
|
||||
------------------------------------------------------------
|
||||
|
||||
EOF
|
||||
|
||||
# ---------- 6. 完成 ----------
|
||||
HOST_HINT="${DEPLOY_HOST:-<服务器IP>}"
|
||||
@@ -456,11 +439,13 @@ esac
|
||||
cat <<EOF
|
||||
|
||||
============================================================
|
||||
OpenDance Studio Web 服务端已部署(Linux 原生站点,无 Docker)
|
||||
管理端首页: http://${HOST_HINT}/
|
||||
API 前缀: http://${HOST_HINT}/api
|
||||
健康检查: http://${HOST_HINT}/health
|
||||
契约快照: http://${HOST_HINT}/contracts/
|
||||
OpenDance Studio Web 服务端已部署(业务服务,无 Docker、不含反向代理)
|
||||
服务监听: http://${API_HOST}:${API_PORT}/
|
||||
管理端首页: http://${API_HOST}:${API_PORT}/ (由本服务直接提供)
|
||||
API 前缀: http://${API_HOST}:${API_PORT}/api
|
||||
健康检查: http://${API_HOST}:${API_PORT}/health
|
||||
契约快照: http://${API_HOST}:${API_PORT}/contracts/
|
||||
对外访问: 由另外的反向代理服务转发到上述地址(见 deploy/proxy/)
|
||||
数据库: 使用现有实例 ${DB_HOST}:${DB_PORT:-3306}/${DB_NAME}
|
||||
上传目录: ${STORAGE_DIR}
|
||||
程序目录: ${APP_DIR}
|
||||
|
||||
Reference in New Issue
Block a user