容器方式手动部署方法
#114
Replies: 1 comment 1 reply
-
作者研究的不错,值得鼓励!如果手工创建容器是需要手工导入数据库创建文件waf.sql |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
准备阶段
下载容器镜像,取自 https://waf.uusec.com/waf.tgz 中的
/waf/docker-compose.yml
因为本文的方法不能借助 compose-resolver 解析 container 的 hostname,且 uuWAF 会覆盖 config.json 中的 dsn 配置,因此需要添加 hosts
数据库
因为本文方法使用 host 网络,因此需要多一条参数
--bind-address 127.0.0.1
将数据库监听到 loopback 上以增强安全性环境变量
MYSQL_ROOT_PASSWORD
的值不可自行修改,此处为官方设定值,每次启动都会覆盖 config.json 中的 dsn 配置首先创建容器:
生成 systemd 单元:
启动容器
systemctl start wafdb && podman logs --follow wafdb
uuWAF
首先创建容器:
生成 systemd 单元:
启动容器
systemctl start uuwaf && podman logs --follow uuwaf
修改配置
两个容器都启动后,先停止 uuwaf 容器,需要进行一行 nginx 配置的修改,该项如不修改将会导致任意网站出现 规则 -1 的错误,报错能看到是某个 lua 找不到 wafdb 的地址,但是我没找到是哪个 lua 文件,只能直接修改 nginx 的解析
导航至 uuwaf-shared 这个 volume 的路径,默认情况下,本文为
/var/lib/containers/storage/volumes/uuwaf-shared/_data
使用文本编辑器打开
./conf/uuwaf.conf
,例如nano ./conf/uuwaf.conf
将如下内容:
修改为:
127.0.0.53 是 systemd-reslover 的监听地址,如果使用别的 reslover 请自行修改为对应地址
正式使用
执行
尝试添加网站进行测试,如无报错或异常,可执行
将 2 个容器设置为开机自启
如需进行版本升级,理论上只需要重新拉取对应镜像即可,不需要重新创建容器,不过看其它 issue 可能出现数据库结构或内容相关问题,不在本文探讨范围
已知问题
A:如确认用户名和密码正确,可能是
waf.sql
未正确导入数据库,可执行podman exec wafdb mysql -uroot -pSafe3.WAF < ./waf.sql
,本人测试的时候有的时候能直接使用,有的时候需要该步骤,原因未知Beta Was this translation helpful? Give feedback.
All reactions