1. 青龙面板与宝塔面板的黄金组合
青龙面板作为一款开源的定时任务管理工具,在爬虫、自动化脚本等领域广受欢迎。而宝塔面板则是国内服务器运维人员最熟悉的WEB管理工具之一。将二者结合使用,既能享受宝塔的便捷管理,又能发挥青龙的强大调度能力。
我最近在部署一个电商价格监控系统时,就采用了这套方案。相比传统的手动安装方式,使用Docker部署青龙面板不仅隔离性好,还能实现快速迁移和版本切换。下面就把我的完整安装过程记录下来,包括几个容易踩坑的关键点。
2. 环境准备与基础配置
2.1 服务器基础环境要求
建议使用CentOS 7.6+或Ubuntu 18.04+系统,配置至少1核CPU、2GB内存。实测在阿里云轻量应用服务器(2核4G)上运行非常流畅。内存低于1GB时,容器容易因内存不足被系统kill。
重要提示:如果之前安装过旧版Docker,务必先执行卸载命令
yum remove docker*或apt-get remove docker*,避免版本冲突。
2.2 宝塔面板的安装与优化
通过SSH连接服务器后,执行对应系统的安装命令:
# CentOS yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh # Ubuntu wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh安装完成后,建议立即进行以下安全设置:
- 修改默认8888端口为自定义端口
- 设置复杂的面板用户名和密码
- 开启BasicAuth认证
- 配置IP访问限制(仅允许管理IP访问)
3. Docker环境部署详解
3.1 通过宝塔安装Docker
在宝塔面板的"软件商店"搜索"Docker管理器",点击安装。相比命令行安装,这种方式会自动配置开机启动和服务管理。
安装完成后需要检查:
docker -v # 确认版本号≥20.10.7 docker-compose -v # 确认版本号≥1.29.23.2 配置Docker镜像加速
国内服务器建议配置镜像加速,在宝塔的Docker管理器设置中添加:
https://registry.cn-hangzhou.aliyuncs.com https://docker.mirrors.ustc.edu.cn对于企业级应用,还可以配置私有仓库:
docker login --username=yourname registry.cn-hangzhou.aliyuncs.com4. 青龙面板的Docker部署
4.1 创建专用数据目录
建议将数据目录放在非系统分区:
mkdir -p /data/qinglong && cd /data/qinglong目录结构规划:
/data/qinglong ├── config # 配置文件 ├── log # 日志文件 ├── scripts # 脚本目录 └── db # 数据库文件4.2 编写docker-compose.yml
创建配置文件:
version: '3' services: qinglong: image: whyour/qinglong:latest container_name: qinglong restart: unless-stopped ports: - "5700:5700" volumes: - ./config:/ql/config - ./log:/ql/log - ./scripts:/ql/scripts - ./db:/ql/db environment: - ENABLE_HANGUP=true - ENABLE_WEB_PANEL=true logging: driver: "json-file" options: max-size: "10m" max-file: "3"关键参数说明:
ENABLE_HANGUP: 允许挂起任务max-size: 限制日志大小防止磁盘爆满
4.3 启动容器与服务
执行部署命令:
docker-compose up -d检查运行状态:
docker ps -a | grep qinglong正常应该看到STATUS为"Up"。如果出现异常,可以通过docker logs qinglong查看日志。
5. 青龙面板的初始化配置
5.1 首次访问设置
通过http://服务器IP:5700访问面板,首次需要:
- 设置管理员账号
- 配置通知方式(推荐Telegram机器人)
- 选择皮肤主题
5.2 关键安全设置
在"系统设置"中务必配置:
- 修改默认访问路径(如
/admin) - 开启两步验证
- 设置IP白名单
- 配置自动备份到OSS或七牛云
5.3 依赖管理
根据脚本需求安装Node.js、Python等依赖:
# 进入容器内部 docker exec -it qinglong bash # 安装常用依赖 pnpm install -g typescript ts-node pip3 install requests bs46. 常见问题排查指南
6.1 端口冲突问题
如果5700端口被占用,可以:
- 修改docker-compose.yml中的端口映射
- 查找占用进程:
netstat -tunlp | grep 5700 - 或者直接使用其他端口如5800
6.2 容器启动失败
典型错误及解决方案:
port already allocated:端口被占用no space left on device:磁盘空间不足permission denied:SELinux导致,可临时关闭setenforce 0
6.3 定时任务不执行
检查步骤:
- 查看容器时间:
docker exec qinglong date - 确认时区设置(应使用Asia/Shanghai)
- 检查crontab日志:
docker logs qinglong | grep cron
7. 高级配置与优化技巧
7.1 资源限制配置
在docker-compose.yml中添加资源限制:
deploy: resources: limits: cpus: '1' memory: 1G reservations: memory: 512M7.2 数据库备份方案
创建每日自动备份脚本:
#!/bin/bash BACKUP_DIR=/data/qinglong_backup docker exec qinglong sh -c 'sqlite3 /ql/db/qinglong.db ".backup /ql/db/backup.db"' tar -czvf $BACKUP_DIR/ql_$(date +%Y%m%d).tar.gz /data/qinglong/db/backup.db find $BACKUP_DIR -type f -mtime +7 -delete然后添加到青龙面板的定时任务中,每天凌晨3点执行。
7.3 多实例部署
对于大型应用,可以通过修改端口号和数据目录部署多个实例:
version: '3' services: qinglong_1: image: whyour/qinglong:latest ports: - "5701:5700" volumes: - ./qinglong_1:/ql qinglong_2: image: whyour/qinglong:latest ports: - "5702:5700" volumes: - ./qinglong_2:/ql8. 实际应用案例分享
8.1 电商价格监控系统
配置京东商品价格监控的完整流程:
- 在"脚本管理"添加京东价格监控脚本
- 配置商品SKU和预期价格
- 设置每小时执行一次的定时任务
- 配置价格低于阈值时的微信通知
8.2 自动签到系统
以哔哩哔哩每日签为例:
// 脚本内容示例 const axios = require('axios'); const notify = require('./sendNotify'); (async () => { try { const res = await axios.get('https://api.live.bilibili.com/sign/doSign'); if(res.data.code === 0) { notify.sendNotify('B站签到成功', res.data.message); } } catch (error) { notify.sendNotify('B站签到失败', error.message); } })();9. 维护与升级策略
9.1 日常维护建议
- 每周检查容器日志:
docker logs --since 7d qinglong - 每月清理无用镜像:
docker image prune -a - 每季度更新基础镜像版本
9.2 版本升级步骤
安全升级流程:
- 停止当前容器:
docker-compose down - 备份数据目录:
tar -czvf ql_backup.tar.gz /data/qinglong - 拉取新镜像:
docker pull whyour/qinglong:latest - 重新启动:
docker-compose up -d
9.3 灾难恢复方案
当服务器崩溃时,恢复步骤:
- 在新服务器安装相同环境
- 解压备份文件到/data/qinglong
- 启动容器:
docker-compose up -d - 验证数据完整性
这套部署方案在我管理的十几台服务器上运行稳定,特别是在618、双11等大促期间,能够稳定处理数万个定时任务。最关键的是做好资源监控和日志轮转,避免磁盘被日志文件占满。对于高负载场景,建议将数据库单独挂载到高性能SSD上。