爬虫管理系统FEAPLAT部署与使用

行云流水
2023-01-09 / 0 评论 / 439 阅读 / 正在检测是否收录...

前言

去年用feapder写了几个小爬虫,定时收集自己感兴趣的数据,运行的挺稳定的。最近又添加了几个新的,同时发现原先写的有几个早就失效了,一直没有发现。于是花时间折腾一下官方的 feaplat爬虫管理系统,新版本好像可以免费20个采集任务,够自己用了。

部署

安装docker

docker和docker-compose一键安装脚本

# 配置 docker swarm
docker swarm init

## 有多块网卡的话
docker swarm init --advertise-addr 172.17.0.10

docker-compose.yaml

version: "3.5"

x-logging: &default-logging
  options:
    max-size: "100m"
    max-file: "1"
  driver: json-file

services:
  feapder_front:
    container_name: feapder_front
    image: ${FRONT_IMAGE}
    restart: always
    environment:
      - BACKEND_URL=http://feapder_backend:${BACKEND_PORT}
      - FRONT_PORT=${FRONT_PORT}
    ports:
      - ${FRONT_PORT}:${FRONT_PORT} # 前端端口 (自定义端口:80)
    depends_on:
      - feapder_backend
    logging: *default-logging

  feapder_backend:
    container_name: feapder_backend
    image: ${BACKEND_IMAGE}
    restart: always
    command: /wait-for-it.sh 172.17.0.10:3306 -t 60 --strict -- uvicorn main:app --host 0.0.0.0 --workers ${BACKEND_WORKER} --port ${BACKEND_PORT} # workers 为后端服务的个数,爬虫多可改大点
    ports:
      - ${BACKEND_PORT}:${BACKEND_PORT} # 后端端口 (自定义端口:8000)
    environment:
      - FEAPDER_BACKEND_URL=http://${BACKEND_HOST}:${BACKEND_PORT}
      - AUTHORIZATION_CODE=${AUTHORIZATION_CODE} # 授权码
      - DB_URL=mysql+pymysql://fpuser:fpuserxxx@172.17.0.10:3306/feapder_platform?charset=utf8mb4 # 后端数据库配置
      - REDIS_DB_URL=redis://:@172.17.0.10:6379/0 # redis数据库连接配置 redis://[[username]:[password]]@[host]:[port]/[db]
      - ACCESS_TOKEN_EXPIRE_MINUTES=1440 # 管理系统账号cookie过期时间 单位分钟
      - SPIDER_IMAGE=${SPIDER_IMAGE} # 爬虫镜像
      - SPIDER_AUTO_PULL_IMAGE=1 # 是否自动拉取镜像 否则需要在爬虫节点手动 docker pull 爬虫镜像,为了加快启动速度,可以设置0
      - SPIDER_ENV={} # 爬虫环境变量 值为json类型
      # 爬虫容器启动参数,支持的参数使用 docker service create --help 查看
      - SPIDER_RUN_ARGS={"--network":"feaplat"}
      # git ssh 私有密钥,不填则使用默认的
      - GIT_SSH_PRIVATE_KEY=${GIT_SSH_PRIVATE_KEY}
      # 监控配置
      - INFLUXDB_HOST=${INFLUXDB_HOST}
      - INFLUXDB_DB=${INFLUXDB_DB}
      - INFLUXDB_ADMIN_USER=${INFLUXDB_ADMIN_USER}
      - INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_ADMIN_PASSWORD}
      - INFLUXDB_PORT_TCP=8086
      - INFLUXDB_PORT_UDP=8089
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "~/data/feapder/projects:/projects" # 上传的项目挂载, 本地目录:容器路径
    depends_on:
      - influxdb
    logging: *default-logging

  feapder:
    container_name: feapder_worker
    image: ${SPIDER_IMAGE}

  influxdb:
    restart: always
    image: registry.cn-hangzhou.aliyuncs.com/feapderd/influxdb:1.8.6
    container_name: feapder_influxdb
    volumes:
      - ~/data/feapder/influxdb:/var/lib/influxdb
      - ./conf/influxdb.conf:/etc/influxdb/influxdb.conf
    environment:
      - INFLUXDB_DB=${INFLUXDB_DB}
      - INFLUXDB_ADMIN_USER=${INFLUXDB_ADMIN_USER}
      - INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_ADMIN_PASSWORD}
      - INFLUXDB_USER=influx
      - INFLUXDB_USER_PASSWORD=influx
    ports:
      - ${INFLUXDB_PORT_TCP}:8086
      - ${INFLUXDB_PORT_UDP}:8089/udp
    logging: *default-logging

networks:
  default:
    name: feaplat
    driver: overlay
    attachable: true

.env

启动

docker-compose up -d

访问

http://ip:804

其他

数据表手动查询

# 查询所有任务
select * from  feapder_task\G

## 修改任务自增id起始点,清理过期任务后
ALTER TABLE feapder_task AUTO_INCREMENT = 1;

## 修改任务id
update feapder_task set id = 2 where id =23;

手动启动爬虫

#启动
docker service create --name task_test --replicas 1 --workdir /task --mount type=bind,src=/opt/project/taskmonitor/myapp/spider/task,dst=/task  registry.cn-hangzhou.aliyuncs.com/feapderd/feapder:2.3  tailf test.py

#查看
docker service ps pzsutx0dhpkmngrs7roarsa6r

#删除
docker service rm pzsutx0dhpkm

评论 (0)

取消
只有登录/注册用户才可评论