feat(web): 部署方式由 Docker 改为 Linux 原生站点(nginx + systemd)
需求变更:Web 服务端不再使用 Docker,改为直接运行在 Linux 上的网站。 - 移除 deploy/docker-compose.yml、web-server/Dockerfile、 web-server/admin/Dockerfile、web-server/.dockerignore - 新增 deploy/install.sh:建服务用户与目录 → 装运行期依赖 → 迁移 → 注册 systemd 服务 → 配置 nginx 站点 → 健康检查,一键完成 - 新增 deploy/systemd/opendance-api.service:ProtectSystem=strict 等 安全加固,ReadWritePaths 限定为上传目录 - 新增 deploy/nginx/opendance.conf:同站点托管管理端静态资源 + 反代 /api /health /static,client_max_body_size 512m,SPA 回退 - 新增 deploy/uninstall.sh:默认保留数据,--purge 才删除 - 新增配置项 HOST(AppConfig.bindHost):原生部署下 Node 只监听 127.0.0.1,不直接对外暴露,实测外部 IP 不可达 - 同步更新 contracts/rest-api.yaml、DSH.md、project.yaml、README.txt、 tasks/008、tasks/010 与发布打包脚本
This commit is contained in:
+47
-9
@@ -1,14 +1,52 @@
|
||||
#!/bin/bash
|
||||
# 停止服务(默认保留数据卷)
|
||||
# ============================================================
|
||||
# OpenDance Studio Web 服务端 —— 卸载(Linux 原生站点)
|
||||
#
|
||||
# 默认**保留**上传文件与数据库数据;只有显式加 --purge 才删除程序目录与上传目录。
|
||||
# 数据库从来不由本脚本管理,永不删除。
|
||||
#
|
||||
# 用法:
|
||||
# sudo bash deploy/uninstall.sh # 停服务、禁用站点,保留数据
|
||||
# sudo bash deploy/uninstall.sh --purge # 同时删除程序目录与上传文件
|
||||
# ============================================================
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
DC="docker compose"
|
||||
else
|
||||
DC="docker-compose"
|
||||
APP_DIR="${APP_DIR:-/opt/opendance}"
|
||||
STORAGE_DIR="${STORAGE_DIR:-/var/lib/opendance/storage}"
|
||||
SERVICE_USER="${SERVICE_USER:-opendance}"
|
||||
PURGE=0
|
||||
[ "${1:-}" = "--purge" ] && PURGE=1
|
||||
|
||||
log() { printf '\033[1;34m[uninstall]\033[0m %s\n' "$*"; }
|
||||
warn() { printf '\033[1;33m[warn]\033[0m %s\n' "$*"; }
|
||||
die() { printf '\033[1;31m[error]\033[0m %s\n' "$*" >&2; exit 1; }
|
||||
|
||||
[ "$(id -u)" -eq 0 ] || die "需要 root 权限:sudo bash deploy/uninstall.sh"
|
||||
|
||||
log "停止并禁用 opendance-api 服务"
|
||||
systemctl stop opendance-api 2>/dev/null || true
|
||||
systemctl disable opendance-api 2>/dev/null || true
|
||||
rm -f /etc/systemd/system/opendance-api.service
|
||||
systemctl daemon-reload
|
||||
|
||||
if command -v nginx >/dev/null 2>&1; then
|
||||
log "移除 nginx 站点"
|
||||
rm -f /etc/nginx/sites-enabled/opendance.conf /etc/nginx/sites-available/opendance.conf /etc/nginx/conf.d/opendance.conf
|
||||
nginx -t >/dev/null 2>&1 && (systemctl reload nginx 2>/dev/null || nginx -s reload) || warn "nginx 重载跳过"
|
||||
fi
|
||||
|
||||
$DC down "$@"
|
||||
echo "服务已停止。数据卷 opendance-storage 未被删除。"
|
||||
echo "如需一并删除上传数据:$DC down -v"
|
||||
if [ "$PURGE" -eq 1 ]; then
|
||||
warn "删除程序目录 $APP_DIR 与上传目录 $STORAGE_DIR"
|
||||
rm -rf "$APP_DIR" "$STORAGE_DIR"
|
||||
if id -u "$SERVICE_USER" >/dev/null 2>&1; then
|
||||
userdel "$SERVICE_USER" 2>/dev/null || true
|
||||
log "已删除系统用户 $SERVICE_USER"
|
||||
fi
|
||||
log "完成(数据库未做任何改动)"
|
||||
else
|
||||
log "完成。已保留:"
|
||||
echo " 程序目录:$APP_DIR"
|
||||
echo " 上传目录:$STORAGE_DIR"
|
||||
echo " 如需一并删除:sudo bash deploy/uninstall.sh --purge"
|
||||
fi
|
||||
echo " 数据库:始终由部署方自行管理,本脚本不做任何改动"
|
||||
|
||||
Reference in New Issue
Block a user