什么是QD
按照官方给出的定义,QD框架是
一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。
可能有些小伙伴被这一串的描述给弄晕了,但简单来说就是一个定时任务框架,但大家多将它用于每日签到(包括我)。甚至我都快忘记它还能处理一些其他类型的定时任务,毕竟我也没有其他的使用场景😄 ,因此本文就教大家如何在服务器上部署QD并使用。
官方部署方式
推荐使用Docker compose方式来部署,我使用的docker版本为 25.0.1
。
# 进入要存放docker部署内容的目录
cd xxx
# 创建qd文件夹用于存放部署内容
mkdir -p qd/config && cd qd
# 下载官方提供的docker-compose.yml文件
wget https://fastly.jsdelivr.net/gh/qd-today/qd@master/docker-compose.yml
# 启动qd服务
docker compose up -d
这样qd服务就部署好了。
需要注意的是官方提供的文件中,服务暴露出的端口号是8923。如果服务器中该端口已经被占用,那么就需要自行调整部署文件中暴露的端口号。
访问后台界面
部署好后我们来访问一下后台,如果是部署在云服务器上,请确保已经开放对应的端口访问。
访问http://IP:8923 可以看到下图。
点击右上角的登录按钮进入注册界面
注册成功后登录到主界面,第一步是先把注册入口关闭,避免暴露的服务被人注册后搞事情。
点击 管理网站
勾选 禁止注册
输入账号密码后提交,这样就可以了。
精简部署
我们先查看一下官方提供的docker-compose.yml文件内容,看下都包含了哪些东西。
version: "3"
services:
qd:
image: qdtoday/qd:latest
# image: qdtoday/qd:lite-latest # 精简版
# image: qdtoday/qd:dev # 开发版
container_name: qd
depends_on:
- redis
ports:
- "8923:80"
volumes:
- "./config:/usr/src/app/config"
environment:
# - QD_DEBUG=False
# - BIND=0.0.0.0
# - PORT=80
# - MULTI_PROCESS=False
# - AUTO_RELOAD=False
# - GZIP=True
# - ACCESS_LOG=True
# - DISPLAY_IMPORT_WARNING=True
# - USER0ISADMIN=True
# - STATIC_URL_PREFIX=/static/
- DOMAIN=
# - COOKIE_DAY=5
# - COOKIE_SECURE_MODE=False
- COOKIE_SECRET=binux
- PBKDF2_ITERATIONS=400
- AES_KEY=binux
# - DB_TYPE=sqlite3
# - JAWSDB_MARIA_URL=mysql://user:pass@localhost:3306/dbname?auth_plugin=
# - QD_SQL_LOGGING_NAME=QD.sql
# - QD_SQL_LOGGING_LEVEL=WARNING
# - QD_SQL_POOL_LOGGING_NAME=QD.sql.pool
# - QD_SQL_POOL_LOGGING_LEVEL=WARNING
# - QD_SQL_POOL_SIZE=5
# - QD_SQL_MAX_OVERFLOW=10
# - QD_SQL_POOL_PRE_PING=True
# - QD_SQL_POOL_RECYCLE=3600
# - QD_SQL_POOL_TIMEOUT=30
# - QD_SQL_POOL_USE_LIFO=True
- REDISCLOUD_URL=redis://redis:6379
# - REDIS_DB_INDEX=1
# - QD_EVIL=1000
# - EVIL_PASS_LAN_IP=True
# - WORKER_METHOD=Queue
# - QUEUE_NUM=50
# - CHECK_TASK_LOOP=500
# - TASK_MAX_RETRY_COUNT=8
# - NEW_TASK_DELAY=1
# - TASK_WHILE_LOOP_TIMEOUT=900
# - TASK_REQUEST_LIMIT=1500
# - DOWNLOAD_SIZE_LIMIT=5242880
# - REQUEST_TIMEOUT=30.0
# - CONNECT_TIMEOUT=30.0
# - DELAY_MAX_TIMEOUT=29.9
# - UNSAFE_EVAL_TIMEOUT=3.0
# - USE_PYCURL=True
# - ALLOW_RETRY=True
# - DNS_SERVER=
# - CURL_ENCODING=True
# - CURL_CONTENT_LENGTH=True
# - NOT_RETRY_CODE=301|302|303|304|305|307|400|401|403|404|405|407|408|409|410|412|415|413|414|500|501|502|503|504|599
# - EMPTY_RETRY=True
# - TRACEBACK_PRINT=False
# - PUSH_PIC_URL=https://gitee.com/qd-today/qd/raw/master/web/static/img/push_pic.png
# - PUSH_BATCH_SW=True
# - PUSH_BATCH_DELTA=60
# - WS_PING_INTERVAL=5
# - WS_PING_TIMEOUT=30
# - WS_MAX_MESSAGE_SIZE=10485760
# - WS_MAX_QUEUE_SIZE=100
# - WS_MAX_CONNECTIONS_SUBSCRIBE=30
# - SUBSCRIBE_ACCELERATE_URL=ghproxy
# - PROXIES=
# - PROXY_DIRECT_MODE=regexp
# - PROXY_DIRECT=(?xi)\A([a-z][a-z0-9+\-.]*://)?(0(.0){3}|127(.0){2}.1|localhost|\[::([\d]+)?\])(:[0-9]+)?
# - NOTEPAD_LIMIT=20
# - EXTRA_ONNX_NAME=
# - EXTRA_CHARSETS_NAME=
# - MAIL_SMTP=
# - MAIL_PORT=465
# - MAIL_SSL=True
# - MAIL_STARTTLS=False
# - MAIL_USER=
# - MAIL_PASSWORD=
# - MAIL_FROM=${MAIL_USER}
# - MAIL_DOMAIN_HTTPS=False
# - MAILGUN_KEY=
# - MAILGUN_DOMAIN=${DOMAIN}
# - GA_KEY=
redis:
image: redis:alpine
container_name: redis
command: ["--loglevel warning"]
# command: redis-server /usr/local/etc/redis/redis.conf
volumes:
# - ./redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
- ./redis/data:/data:rw
可以看到官方提供了一个redis服务供qd服务使用,像我不希望redis占用我服务器资源的话,可以对docker-compose.yml文件进行改造,使用sqlite来作为存储。查看官方文档,当DB_TYPE不填写时,默认使用sqlite3。
改造docker-compose.yml
以下是我改造后的docker-compose.yml
version: '3.9'
services:
qd:
image: 'qdtoday/qd:latest'
restart: always
volumes:
- './config:/usr/src/app/config'
ports:
- '8923:80' # 8923端口可以自行修改
container_name: qd
tty: true
stdin_open: true
重启服务
# 进入qd文件夹
cd xxx/qd
# 停止qd服务
docker compose down
# 启动qd服务
docker compose up -d
这样一个精简的QD服务就搭建好了🎉️
使用
本文仅针对公共模板的签到功能进行教学,如果有其他定时任务需求可以参考官方文档。
点击 公共模板
接着界面会跳转到公共模板页面,会自动拉取模板配置。
以百度贴吧自动签到为例,我们在页面中先找到 贴吧一键签到
模板,点击 订阅
按钮。在弹出的模板界面中点击 保存
。
回到QD首页,在 我的模板中
就可以找到刚才保存的签到模板了,点击 新建
。
在弹出框中填写百度贴吧的Cookies,最后点击提交就可以了。
如果不明白如何获取Cookies,可以参考一键获取Cookies。安装插件后,网页端登录百度贴吧,然后回到新建任务页面,点击Cookies框右上方的 点击获取
按钮,就可以一键获取Cookies了。
至于如何手动获取Cookies,我就偷个懒先不写了,如果大家有需求的话在评论区留言,我可以抽空补充一下。(逃
尝试一下自动签到吧
任务创建好后,在 我的任务
里就可以看到了,任务会自动执行,很快就能看到执行结果。如果配置正常的话可以看到签到状态为正常,接着回到百度贴吧查看是否一键签到成功🎉️
如果任务执行失败了,一般来说是Cookies配置有误,或者签到模板需要更新。
高阶玩法教学
- 定时任务
- 任务执行结果推送
- 自建模板
还有一些高阶玩法,大家感兴趣可以自行研究,客服猫精力有限先教到这儿!正在考虑考虑下一期教大家其他有意思的Docker项目❤️在这儿提前祝大家新年快乐🎉️
评论区