更新与维护

一键更新

升级脚本会自动读取安装目录中的 .env,识别当前是全量部署还是单容器部署,再调用安装脚本的更新流程:

bash -c "$(curl -fsSL https://has-waf.haser.top/upgrade.sh)"

默认安装目录为 /opt/has-waf,拉取 latest。更新只重建 WAF 容器,复用现有镜像源、数据库类型、服务密码、端口和数据目录,不会重新生成凭据或清空数据。

指定版本时,在命令后追加版本号:

bash -c "$(curl -fsSL https://has-waf.haser.top/upgrade.sh)" -- 0.15.8

安装目录不同时,先设置环境变量,再运行脚本:

HAS_WAF_INSTALL_DIR=/data/has-waf \
  bash -c "$(curl -fsSL https://has-waf.haser.top/upgrade.sh)" -- 0.15.8

脚本也接受安装脚本的其他选项,例如 --prepare-only 只更新配置、不拉取镜像。下载后保存到服务器时,可直接执行:

bash upgrade.sh 0.15.8

更新做了什么

  1. 读取 .env 中的 HAS_WAF_DEPLOYMENT,选择 docker-compose-all.yml 或 docker-compose.yml。
  2. 备份现有 .env 和 Compose 文件为 .previous。
  3. 登录镜像源,只拉取 WAF 镜像。
  4. 重建 WAF 容器并等待健康检查通过。

中间件镜像版本、数据库类型和端口不会被自动更换。已有部署的 SQLite / MySQL 类型切换需要单独的数据迁移;手工部署也应先规划迁移,避免直接让脚本接管。

更新前准备

阅读对应版本的更新记录。备份安装目录中的 .env、conf-data/、证书、data/ 与业务数据库,并完成一次日志 ZIP 导出。更新期间容器重建可能造成短暂中断。

配置副本方便排查,不是完整数据备份;如果版本涉及数据库结构变更,回退镜像前应先确认数据库兼容性。

查看状态和日志

bash -c "$(curl -fsSL https://has-waf.haser.top/install.sh)" -- --status

全量部署与单容器部署分别使用对应的 Compose 文件:

cd /opt/has-waf
docker compose -f docker-compose-all.yml ps        # 全量部署
docker compose -f docker-compose.yml ps            # 单容器部署
docker compose -f docker-compose-all.yml logs --tail 100 has-waf

停止与恢复

bash -c "$(curl -fsSL https://has-waf.haser.top/install.sh)" -- --stop

--stop 只停止容器并保留数据。需要恢复时重新执行 bash -c "$(curl -fsSL https://has-waf.haser.top/install.sh)",脚本会沿用现有配置。

常见问题

镜像拉取失败? 检查源地址、账号权限和网络,必要时重新 docker login。更新模式下拉取失败会在重建容器前停止,现有容器不受影响。

更新后端口变了? 端口保存在 .env 的 HAS_WAF_UI_PORT、HAS_WAF_HTTP_PORT、HAS_WAF_HTTPS_PORT 和站点端口范围中,更新不会改动它们。需要调整时重新运行安装脚本并显式传入端口参数。

首次 MySQL 启动较慢? 首次创建数据目录和表结构需要时间,可使用 HAS_WAF_START_TIMEOUT 延长等待;先查看服务日志,避免反复删除数据重装。

停止服务会清空数据吗? 只停止容器,保留数据。需要恢复时重新运行安装入口,脚本会沿用现有配置。

文档随 v0.15.8 同步生成返回顶部 ↑