容器方式手动部署方法
#114
Replies: 1 comment
-
作者研究的不错,值得鼓励!如果手工创建容器是需要手工导入数据库创建文件waf.sql |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
准备阶段
下载容器镜像,取自 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