生而为虫,不止于虫
feaplat命名源于 feapder 与 platform 的缩写
读音: [ˈfiːplæt]
- 支持部署任何程序,包括不限于
feapder、scrapy - 支持集群管理,部署分布式爬虫可一键扩展进程数
- 支持部署服务,且可自动实现服务负载均衡
- 支持程序异常报警、重启、保活
- 支持监控,监控内容可自定义
- 支持4种定时调度模式
- 自动从git仓库拉取最新的代码运行,支持指定分支
- 支持多人协同
- 支持浏览器渲染,支持有头模式。浏览器支持
playwright、selenium - 支持弹性伸缩
- 支持自定义worker镜像,如自定义java的运行环境、node运行环境等,即根据自己的需求自定义(feaplat分为
master-调度端和worker-运行任务端) - docker一键部署,架设在docker swarm集群上
添加/编辑项目
- 支持 git和zip两种方式上传项目
- 根据requirements.txt自动安装依赖包
- 可选择多个人参与项目
- 支持一键启动多个任务实例(分布式爬虫场景或者需要启动多个进程的场景)
- 支持4种调度模式
- 标签:给任务分类使用
- 强制运行:(上一次任务没结束,本次是否运行,是则会停止上一次任务,然后运行本次调度)
- 异常重启:当部署的程序异常退出,是否自动重启,且会报警
- 支持限制程序运行的CPU、内存等。
一键部署了20份程序,每个程序独占一个进程,可从列表看每个进程部署到哪台服务器上了,运行状态是什么
实时查看日志
feaplat支持对feapder爬虫的运行情况进行监控,除了数据监控和请求监控外,用户还可自定义监控内容,详情参考自定义监控
若scrapy爬虫或其他python脚本使用监控功能,也可通过自定义监控的功能来支持,详情参考自定义监控
注:需 feapder>=1.6.6
调度异常、程序异常自动报警 支持钉钉、企业微信、飞书、邮箱
稳!很稳!!相当稳!!!
worker节点常驻,且运行多个任务,不能弹性伸缩,任务之前会相互影响,稳定性得不到保障
worker节点根据任务动态生成,一个worker只运行一个任务实例,任务做完worker销毁,稳定性高;多个服务器间自动均衡分配,弹性伸缩
下面部署以centos为例, 其他平台docker安装方式可参考docker官方文档:https://docs.docker.com/compose/install/
docker --version 作者的docker版本为 20.10.12,低于此版本的可能会存在问题
删除旧版本(可选,需要重装升级docker时执行)
yum remove docker docker-common docker-selinux docker-engine安装:
yum install -y yum-utils device-mapper-persistent-data lvm2 && python2 /usr/bin/yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && yum install docker-ce -y国内用户推荐使用
yum install -y yum-utils device-mapper-persistent-data lvm2 && python2 /usr/bin/yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum install docker-ce -y或者使用国内 daocloud 一键安装命令
curl -sSL https://get.daocloud.io/docker | sh
启动
systemctl enable docker
systemctl start dockerdocker swarm init
# 如果你的 Docker 主机有多个网卡,拥有多个 IP,必须使用 --advertise-addr 指定 IP
docker swarm init --advertise-addr 192.168.99.100
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose国内用户推荐使用
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose安装git(1.8.3的版本已够用)
yum -y install gitgitub
git clone https://github.com/Boris-code/feaplat.gitgitee
git clone https://gitee.com/Boris-code/feaplat.git首次运行需拉取镜像,时间比较久,且运行可能会报错,再次运行下就好了
cd feaplat
docker-compose up -d- 若端口冲突,可修改.env文件,参考常见问题
默认地址:http://localhost
默认账密:admin / admin
docker-compose stop用于搭建集群,扩展爬虫(worker)节点服务器
参考部署步骤1
在master服务器(feaplat爬虫管理系统所在服务器)执行下面命令,查看token
docker swarm join-token worker输出举例如下
docker swarm join --token SWMTKN-1-1mix1x7noormwig1pjqzmrvgnw2m8zxqdzctqa8t3o8s25fjgg-9ot0h1gatxfh0qrxiee38xxxx 172.17.5.110:2377在需扩充的服务器上执行
docker swarm join --token [token] [ip]若服务器彼此之间不是内网,为公网环境,则需要将ip改成公网,且开放端口2377
开启并检查2377端口
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=2377/tcp在master服务器(feaplat爬虫管理系统所在服务器)执行下面命令
docker node ls若打印结果包含刚加入的服务器,则添加服务器成功
在需要下线的服务器上执行
docker swarm leave拉取私有项目需在git仓库里添加如下公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCd/k/tjbcMislEunjtYQNXxz5tgEDc/fSvuLHBNUX4PtfmMQ07TuUX2XJIIzLRPaqv3nsMn3+QZrV0xQd545FG1Cq83JJB98ATTW7k5Q0eaWXkvThdFeG5+n85KeVV2W4BpdHHNZ5h9RxBUmVZPpAZacdC6OUSBYTyCblPfX9DvjOk+KfwAZVwpJSkv4YduwoR3DNfXrmK5P+wrYW9z/VHUf0hcfWEnsrrHktCKgohZn9Fe8uS3B5wTNd9GgVrLGRk85ag+CChoqg80DjgFt/IhzMCArqwLyMn7rGG4Iu2Ie0TcdMc0TlRxoBhqrfKkN83cfQ3gDf41tZwp67uM9ZN feapder@qq.com
或在系统设置页面配置您的SSH私钥,然后在git仓库里添加您的公钥,例如:
注意,公私钥加密方式为RSA,其他的可能会有问题
生成RSA公私钥方式如下:
ssh-keygen -t rsa -C "备注" -f 生成路径/文件名如:
ssh-keygen -t rsa -C "feaplat" -f id_rsa
然后一路回车,不要输密码

id_rsa、id_rsa.pub 文件,复制id_rsa.pub文件内容到git仓库,复制id_rsa文件内容到feaplat爬虫管理系统
默认的爬虫镜像只打包了feapder、scrapy框架,若需要其它环境,可基于.env文件里的SPIDER_IMAGE镜像自行构建
如自定义python版本,安装常用的库等,需修改feaplat下的feapder_dockerfile
# 基于最新的版本,若需要自定义python版本,则要求feapder版本号>=2.4
FROM registry.cn-hangzhou.aliyuncs.com/feapderd/feapder:2.4
# 安装自定义的python版本,3.10.8
RUN set -ex \
&& wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz \
&& tar -zxvf Python-3.10.8.tgz \
&& cd Python-3.10.8 \
&& ./configure prefix=/usr/local/python-3.10.8 \
&& make \
&& make install \
&& make clean \
&& rm -rf /Python-3.10.8* \
# 配置软链接
&& ln -s /usr/local/python-3.10.8/bin/python3 /usr/bin/python3.10.8 \
&& ln -s /usr/local/python-3.10.8/bin/pip3 /usr/bin/pip3.10.8
# 删除之前的默认python版本
RUN set -ex \
&& rm -rf /usr/bin/python3 \
&& rm -rf /usr/bin/pip3 \
&& rm -rf /usr/bin/python \
&& rm -rf /usr/bin/pip
# 设置默认为python3.10.8
RUN set -ex \
&& ln -s /usr/local/python-3.10.8/bin/python3 /usr/bin/python \
&& ln -s /usr/local/python-3.10.8/bin/python3 /usr/bin/python3 \
&& ln -s /usr/local/python-3.10.8/bin/pip3 /usr/bin/pip \
&& ln -s /usr/local/python-3.10.8/bin/pip3 /usr/bin/pip3
# 将python3.10.8加入到环境变量
ENV PATH=$PATH:/usr/local/python-3.10.8/bin/
# 安装依赖
RUN pip3 install feapder \
&& pip3 install scrapy
# 安装node依赖包,内置的node为v10.15.3版本
# RUN npm install packageName -g
改好后要打包镜像,打包命令:
docker build -f feapder_dockerfile -t 镜像名:版本号 .
如
docker build -f feapder_dockerfile -t my_feapder:1.0 .
打包好后修改下 .env文件里的 SPIDER_IMAGE 的值即可如:
SPIDER_IMAGE=my_feapder:1.0
注:
- 若有多个worker服务器,且没将镜像传到镜像服务,则需要手动将镜像推到其他服务器上,否则无法拉取此镜像运行
- 若自定义了python版本,则需要添加挂载,否则feaplat上自动安装的依赖库不会保留。挂载方式:修改
docker-compose.yaml的 SPIDER_RUN_ARGS参数。如SPIDER_RUN_ARGS=["--mount type=volume,source=feapder_python3.10,destination=/usr/local/python-3.10.8"]
可免费部署20个任务,超出额度时,需购买授权码,在授权有效期内不限额度,可换绑服务器
| 授权时长 | 价格 | 说明 |
|---|---|---|
| 1个月 | 168元 | 无折扣 |
| 6个月 | 666元 | 原价1008元,减免342元 |
| 1年 | 888元 | 原价2016元,减免1128元 |
| 2年 | 1500元 | 原价4032元,减免2532元 |
删除任务不可恢复额度
购买方式:添加微信 boris_tm
随着功能的完善,价格会逐步调整
| 知识星球:17321694 | 作者微信: boris_tm | QQ群号:750614606 |
|
|
|
加好友备注:feaplat













