Skip to content

卸载与恢复

VOMS 提供三种方式处理卸载和恢复:

方式适用场景命令
恢复向导(推荐)修复数据库 + 可视化卸载curl -sSL https://voms.install.iluwen.cn/recovery.sh | sudo bash
一键卸载入口兼容旧命令,自动跳转恢复向导curl -sSL https://voms.install.iluwen.cn/uninstall.sh | sudo bash
手动操作需要精细控制卸载过程见下文

恢复向导(推荐)

恢复向导是一个 TUI(终端界面)工具,提供:

  • 一键修复 PostgreSQL 用户/密码/数据库并校验 TCP 连接
  • 一键卸载 VOMS 残留(服务、systemd、Caddy、目录、数据库)

一键启动

bash
curl -sSL https://voms.install.iluwen.cn/recovery.sh | sudo bash

脚本会自动下载 voms-recovery/opt/voms-recovery 并启动 TUI 向导。

启动后会直接在终端显示交互式界面:

  • 修复数据库:输入数据库连接信息,重建 PostgreSQL 用户、密码、数据库,并验证 TCP 登录
  • 完整卸载:输入确认文本 "UNINSTALL VOMS",执行:停止服务 → 删除 systemd/Caddy/目录 → 清理数据库对象 → 卸载 PostgreSQL/Redis/NATS(服务+数据+容器残留+软件包)→ 残留验证

所有操作都会实时显示日志输出,完成后显示成功或失败结果。

指定版本

bash
VOMS_VERSION=v1.0.0 curl -sSL https://voms.install.iluwen.cn/recovery.sh | sudo bash

一键卸载入口

uninstall.sh 现已合并到 Recovery TUI,不再维护独立卸载逻辑:

bash
curl -sSL https://voms.install.iluwen.cn/uninstall.sh | sudo bash

执行后会自动跳转并启动 recovery.sh,在同一个 TUI 内完成修复或完整卸载。

DANGER

一键卸载会删除数据库,执行前请确认已备份数据:

bash
sudo -u postgres pg_dump voms_production > /tmp/voms_backup_$(date +%Y%m%d%H%M%S).sql

版本回滚

方式零:OTA 备份回滚(最快)

如果版本是通过 OTA 自动更新的,旧版本已备份为 .bak 文件:

bash
sudo systemctl stop voms-server
sudo cp /opt/voms/bin/server.bak /opt/voms/bin/server
sudo systemctl start voms-server
curl -s http://localhost:8181/api/v1/public/system/health | jq .

方式一:使用旧版本发布包重新部署

bash
# 1. 停止当前服务
sudo systemctl stop voms-server voms-worker-consumer voms-worker-scheduler

# 2. 切换到旧版发布包目录
cd /opt/voms-release-prev

# 3. 使用 --force 强制重新部署
sudo ./voms-deploy --force

# 4. 验证
curl -s http://localhost:8181/api/v1/public/system/health | jq .

方式二:一键重新部署指定版本

bash
VOMS_VERSION=v1.0.0 curl -sSL https://voms.install.iluwen.cn/install.sh | sudo bash

这会下载指定版本的发布包并重新执行部署向导(自带 --force)。

方式三:仅回滚二进制(保留配置)

如果只需替换二进制文件而保留现有配置:

bash
# 1. 停止服务
sudo systemctl stop voms-server voms-worker-consumer voms-worker-scheduler

# 2. 备份当前二进制
sudo cp /opt/voms/bin/server /opt/voms/bin/server.bak
sudo cp /opt/voms/bin/worker-consumer /opt/voms/bin/worker-consumer.bak
sudo cp /opt/voms/bin/worker-scheduler /opt/voms/bin/worker-scheduler.bak

# 3. 从旧版发布包复制二进制
sudo cp /opt/voms-release-prev/bin/server /opt/voms/bin/server
sudo cp /opt/voms-release-prev/bin/worker-consumer /opt/voms/bin/worker-consumer
sudo cp /opt/voms-release-prev/bin/worker-scheduler /opt/voms/bin/worker-scheduler

# 4. 重启服务
sudo systemctl start voms-server voms-worker-consumer voms-worker-scheduler

# 5. 验证
curl -s http://localhost:8181/api/v1/public/system/health | jq .

手动卸载

如需精细控制每个步骤,可按以下顺序手动操作。

1. 停止并禁用服务

bash
sudo systemctl stop voms-server voms-worker-consumer voms-worker-scheduler
sudo systemctl disable voms-server voms-worker-consumer voms-worker-scheduler

2. 删除 systemd 单元文件

bash
sudo rm /etc/systemd/system/voms-server.service
sudo rm /etc/systemd/system/voms-worker-consumer.service
sudo rm /etc/systemd/system/voms-worker-scheduler.service
sudo systemctl daemon-reload

3. 删除 Caddy 配置

bash
sudo rm /etc/caddy/Caddyfile
sudo systemctl reload caddy || sudo systemctl restart caddy

4. 删除安装目录与前端文件

bash
sudo rm -rf /opt/voms
sudo rm -rf /var/www/voms

5. 删除锁文件与部署信息

bash
# 在发布包目录下
rm -f .deploy.lock VOMS-INFO.txt

6.(可选)删除数据库

DANGER

此操作不可逆,执行前务必确认已备份数据。

bash
sudo -u postgres psql -c "DROP DATABASE IF EXISTS voms_production;"
sudo -u postgres psql -c "DROP USER IF EXISTS voms;"

7.(可选)移除系统用户

bash
sudo userdel voms
sudo groupdel voms 2>/dev/null

8.(可选)卸载依赖服务

如果 PostgreSQL、Redis、NATS 仅为 VOMS 安装,可一并移除:

bash
# Ubuntu/Debian 示例
sudo apt remove --purge postgresql redis-server nats-server -y
sudo apt autoremove -y

WARNING

请确认这些服务没有被其他应用使用后再卸载。

配置备份与还原

备份

bash
sudo cp /opt/voms/configs/config.production.json \
        /opt/voms/configs/config.production.json.bak.$(date +%Y%m%d%H%M%S)

还原

bash
sudo cp /opt/voms/configs/config.production.json.bak /opt/voms/configs/config.production.json
sudo systemctl restart voms-server voms-worker-consumer voms-worker-scheduler

VOMS - 志愿者组织管理系统