CasWAF
运维

升级

CasWAF在caswaf/caswaf的master分支上开发,每个网关运行的都是它的一份检出。表由CasWAF在启动时自己更新,所以升级就是拿到新代码再重启。

手动升级

cd /opt/caswaf
git pull
cd web && yarn install && yarn build && cd ..
go build -o caswaf .
sudo systemctl restart caswaf-site-caswaf

web/下没有改动时,跳过web那一步。管理界面的文件在每次请求时从web/build读取,所以新构建的版本不用重启就能看到。

重启网关会断开它持有的连接,并重置限流计数和已通过的验证码。有多个节点时,一台一台地升级。

如果conf/app.conf有本地修改,并且和上游的修改冲突,git pull会停下;先把你的值挪开,拉取之后再放回去。

自动更新

网关可以从Git自动更新。它每五分钟检查一次检出所跟踪的分支上有没有新提交,如果有:

  1. 拉取新提交,构建新程序<appDir>/_bin/<dbName>/<dbName>_<commit>.exe;
  2. 如果web/下有改动,就重新构建管理界面;管理界面构建失败不会阻止这次更新;
  3. 以新程序重启:在Linux上把它的systemd unit指向新程序然后退出,由systemd重新启动;在Windows上过几秒启动新程序然后退出。

如果构建失败,它回到原来运行的提交,继续运行,并且不再尝试这个上游提交,而是等下一个。

只有同时满足下面这些条件时才会自动更新:

  • 机器运行Windows,或者运行Linux且CasWAF作为systemd服务运行;
  • CasWAF从Git检出运行,并且装了Go,以及构建管理界面用的Yarn;
  • Nodes页面上有这台机器的条目,所有者是admin,并且打开了Self update;
  • 节点的Upgrade mode当前允许更新:At Any Time,或者Half A Hour时从UTC+8的23:00开始的半小时;No Upgrade会禁止更新。

先在一个测试节点上打开它,等你信任所跟踪的分支后再给其余节点打开。要固定版本,就让检出指向一个由你自己移动的分支。

在GitHub上编辑

本页内容