常见问题
如何备份和恢复数据库?
QD 默认使用 sqlite3 作为框架数据库,database.db
文件保存在 config
目录下。使用 Docker 容器部署时,可以使用 docker cp
命令备份数据库文件,然后使用 docker cp
命令在新容器中恢复数据库文件。
# 数据库备份
docker cp container_name:/usr/src/app/config/database.db .
# 数据库恢复
docker cp database.db container_name:/usr/src/app/config/
如何在 Docker 中配置邮箱服务器?
docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --env MAIL_SMTP=STMP服务器 --env MAIL_PORT=邮箱服务器端口 --env MAIL_USER=用户名 --env MAIL_PASSWORD=密码 --env DOMAIN=域名 qdtoday/qd
如何在 Docker 中使用 MySQL?
docker run -d --name qd -p 8923:80 -v $(pwd)/qd/config:/usr/src/app/config --ENV DB_TYPE=mysql --ENV JAWSDB_MARIA_URL=mysql://用户名:密码@hostname:port/数据库名 qdtoday/qd
如何自己搭建 Docker 镜像?
请参考此镜像的构建文件 Dockerfile。
如何查看当前框架支持的 API 和 Jinja2 模板变量?
请进入框架首页,然后点击左上角的 常用 API/过滤器
按钮,可以查看当前框架支持的API和Jinja2模板变量。
如何提交 bug 问题?
请在遇到问题后开启 Debug
模式,然后将详细的错误日志提交至 Issue。
QD 模板一般需要哪些请求?
根据经验,以下请求是必要的:
- 登录页面
- 发布到登录页面
- 发起 用户名、密码 请求
- 发送后导致页面跳转的页面
- 翻页前后的第一个网页
我的用户名和密码会被泄露吗?
为了帮助用户发起请求,终究需要记录用户名和密码。这只能靠服务器维护人员的自律来保证后端数据的安全。但在框架设计中,每个用户在存储时都使用安全密钥进行加密。使用密钥对用户数据进行加密,可以保证仅获取数据库就无法解密用户数据。(加密的用户数据包括用户上传的模板、用户为任务设置的变量等)
如果还是不放心,可以自己搭建QD框架,下载模板在自己的服务器上运行。
提示错误信息 PermissionError: [Errno 1] Operation not permitted
?
如果是 ARM32 Debian 系统, 请检查
Docker
版本是否小于20.10.0
, 且libseccomp
版本是否小于2.4.4
, 如果是的话, 请升级以上组件.更新
libseccomp
参考操作:sh# Get signing keys to verify the new packages, otherwise they will not install sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138 # Add the Buster backport repository to apt sources.list echo 'deb http://httpredir.debian.org/debian buster-backports main contrib non-free' | sudo tee -a /etc/apt/sources.list.d/debian-backports.list sudo apt update sudo apt install libseccomp2 -t buster-backports
来源于:
请检查是否将容器内的
/usr/src/app
目录映射至容器外部.请注意框架仅需映射
/usr/src/app/config
目录即可.
提示警告信息: Connect Redis falied: Error 10061
QD 使用 redis
作为限流工具,如果没有安装 redis
服务,框架会提示以下警告信息。
[W xxxxxx xx:xx:xx QD.RedisDB redisdb:28] Connect Redis falied: Error 10061 connecting to localhost:6379. 由于目标计算机积极拒绝,无法连接。
然而,redis
在框架中并不是必须的,如果你不需要使用 限流
功能,可以忽略该警告信息。
建议使用
Docker compose
部署 QD 框架, Docker compose 配置已默认安装 redis 容器。
提示警告信息: Import PyCurl module falied
QD 使用 pycurl
模块来发送 HTTP Proxy 请求。如果没有安装 pycurl
模块,框架会提示以下警告信息。
[W xxxxxx xx:xx:xx QD.Http.Fetcher fetcher:34] Import PyCurl module falied: No module named 'pycurl'
然而,pycurl
在框架中并不是必须的,如果你不需要使用 Proxy
功能,可以忽略该警告信息。
pycurl
模块在 Windows 系统上安装比较麻烦,需要安装libcurl
库,具体安装方法请参考 pycurl官方文档。建议使用容器或 linux 系统部署 QD 框架, Docker 容器已预装Curl环境, 默认安装pycurl模组。
如何注册推送方式
你可以在 工具箱
->推送注册
中注册不同的推送工具,以便在发生特定事件(例如定时任务执行失败)时向你推送通知
请参考 推送工具
公共模板更新页面提示错误代码为 undefined
公共模板更新页面提示错误代码为 undefined, 或者控制台显示 WebSocket 连接 failed 但不显示错误原因
请检查反向代理相关配置是否正确, 参考 Nginx反向代理WebSocket服务连接报错
参考配置如下:
Nginxserver { listen 80; # 自行修改 server_name server_name qd.example.com; location / { proxy_pass http://ip:port; # WebSocket 关键配置 开始 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # WebSocket 关键配置 结束 # 其他可选配置 开始 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 其他可选配置 结束 } }