#!/bin/bash # ============================================================ # OpenDance Studio Web 服务端 —— 卸载(Linux 原生站点) # # 默认**保留**上传文件与数据库数据;只有显式加 --purge 才删除程序目录与上传目录。 # 数据库从来不由本脚本管理,永不删除。 # # 用法: # sudo bash deploy/uninstall.sh # 停服务、禁用站点,保留数据 # sudo bash deploy/uninstall.sh --purge # 同时删除程序目录与上传文件 # ============================================================ set -euo pipefail 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 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 " 数据库:始终由部署方自行管理,本脚本不做任何改动"