更新与维护
一键更新
升级脚本会自动读取安装目录中的 .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
更新做了什么
- 读取
.env中的HAS_WAF_DEPLOYMENT,选择docker-compose-all.yml或docker-compose.yml。 - 备份现有
.env和 Compose 文件为.previous。 - 登录镜像源,只拉取 WAF 镜像。
- 重建 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 延长等待;先查看服务日志,避免反复删除数据重装。
停止服务会清空数据吗? 只停止容器,保留数据。需要恢复时重新运行安装入口,脚本会沿用现有配置。