完善 uninstall.sh:停止服务并可选清除目录与数据库。
This commit is contained in:
@@ -277,6 +277,7 @@ print_summary() {
|
||||
echo ""
|
||||
echo " 主程序: systemctl status grade-archive"
|
||||
echo " 更新: sudo bash ${INSTALL_DIR}/deploy/update.sh"
|
||||
echo " 卸载: sudo bash ${INSTALL_DIR}/deploy/uninstall.sh"
|
||||
echo " 微信 dekun03 手机 18364911125"
|
||||
echo "=========================================="
|
||||
}
|
||||
|
||||
+118
-5
@@ -1,11 +1,124 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# 卸载中学成绩档案系统(停止服务 + 可选删除数据/目录)
|
||||
# 用法:
|
||||
# sudo bash deploy/uninstall.sh # 停止服务,保留代码/数据库/上传
|
||||
# sudo bash deploy/uninstall.sh --purge # 额外删除 /opt/secondary-school-grade-archive
|
||||
# sudo bash deploy/uninstall.sh --purge-db # 额外删除 PostgreSQL 库与用户
|
||||
# sudo bash deploy/uninstall.sh --purge --purge-db # 完全清除后重装
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
INSTALL_DIR="${INSTALL_DIR:-/opt/secondary-school-grade-archive}"
|
||||
OCR_SCREEN_NAME="${OCR_SCREEN_NAME:-ocr-worker}"
|
||||
|
||||
cd "${INSTALL_DIR}" || exit 1
|
||||
pm2 delete grade-api grade-web 2>/dev/null || true
|
||||
pm2 save --force
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo "PM2 服务已停止。PostgreSQL 数据与 ${INSTALL_DIR}/uploads 仍保留。"
|
||||
echo "如需删除源码: rm -rf ${INSTALL_DIR}"
|
||||
log_info() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
|
||||
|
||||
PURGE_DIR=0
|
||||
PURGE_DB=0
|
||||
for arg in "$@"; do
|
||||
case "${arg}" in
|
||||
--purge) PURGE_DIR=1 ;;
|
||||
--purge-db) PURGE_DB=1 ;;
|
||||
-h|--help)
|
||||
sed -n '2,8p' "$0"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
|
||||
log_error "请使用 root: sudo bash deploy/uninstall.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -f "${INSTALL_DIR}/.env" ]]; then
|
||||
# shellcheck disable=SC1090
|
||||
set -a && source "${INSTALL_DIR}/.env" && set +a
|
||||
fi
|
||||
|
||||
POSTGRES_USER="${POSTGRES_USER:-gradeapp}"
|
||||
POSTGRES_DB="${POSTGRES_DB:-student_archive}"
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " 卸载中学成绩档案系统"
|
||||
echo "=========================================="
|
||||
echo " 安装目录: ${INSTALL_DIR}"
|
||||
echo " 删除目录: $([[ ${PURGE_DIR} -eq 1 ]] && echo 是 || echo 否(保留))"
|
||||
echo " 删除数据库: $([[ ${PURGE_DB} -eq 1 ]] && echo 是 || echo 否(保留))"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
if [[ -t 0 ]]; then
|
||||
read -rp "确认继续? [y/N] " confirm
|
||||
if [[ "${confirm}" != [yY] ]]; then
|
||||
echo "已取消"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
log_info "停止主程序 systemd…"
|
||||
systemctl stop grade-archive 2>/dev/null || true
|
||||
systemctl disable grade-archive 2>/dev/null || true
|
||||
rm -f /etc/systemd/system/grade-archive.service
|
||||
systemctl daemon-reload
|
||||
|
||||
log_info "停止 OCR Worker systemd(若曾安装)…"
|
||||
systemctl stop ocr-worker 2>/dev/null || true
|
||||
systemctl disable ocr-worker 2>/dev/null || true
|
||||
rm -f /etc/systemd/system/ocr-worker.service
|
||||
systemctl daemon-reload
|
||||
|
||||
log_info "停止 OCR screen 会话…"
|
||||
if command -v screen >/dev/null; then
|
||||
screen -S "${OCR_SCREEN_NAME}" -X quit 2>/dev/null || true
|
||||
fi
|
||||
|
||||
log_info "停止旧版 PM2(若存在)…"
|
||||
if command -v pm2 >/dev/null; then
|
||||
pm2 delete grade-api grade-web 2>/dev/null || true
|
||||
pm2 save --force 2>/dev/null || true
|
||||
fi
|
||||
|
||||
if [[ ${PURGE_DB} -eq 1 ]]; then
|
||||
if command -v psql >/dev/null && systemctl is-active postgresql &>/dev/null; then
|
||||
log_info "删除 PostgreSQL 数据库 ${POSTGRES_DB}…"
|
||||
sudo -u postgres psql -c "DROP DATABASE IF EXISTS \"${POSTGRES_DB}\";" 2>/dev/null || true
|
||||
sudo -u postgres psql -c "DROP USER IF EXISTS \"${POSTGRES_USER}\";" 2>/dev/null || true
|
||||
else
|
||||
log_warn "PostgreSQL 未运行,跳过删库"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${PURGE_DIR} -eq 1 ]]; then
|
||||
log_info "删除安装目录 ${INSTALL_DIR}…"
|
||||
rm -rf "${INSTALL_DIR}"
|
||||
else
|
||||
log_info "保留安装目录(含 uploads、.env、数据库文件若未 --purge-db)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " 卸载完成"
|
||||
echo "=========================================="
|
||||
if [[ ${PURGE_DIR} -eq 0 ]]; then
|
||||
echo " 代码仍在: ${INSTALL_DIR}"
|
||||
echo " 重新部署:"
|
||||
echo " cd ${INSTALL_DIR} && git pull"
|
||||
echo " export OLLAMA_BASE_URL=http://Ollama电脑IP:11434"
|
||||
echo " sudo bash deploy/install.sh"
|
||||
else
|
||||
echo " 重新部署(全新):"
|
||||
echo " export OLLAMA_BASE_URL=http://Ollama电脑IP:11434"
|
||||
echo " sudo bash deploy/install.sh"
|
||||
echo " (install.sh 会自动 git clone 到 ${INSTALL_DIR})"
|
||||
fi
|
||||
echo "=========================================="
|
||||
|
||||
Reference in New Issue
Block a user