基于Docker的Gerapy部署及配置教程

@[TOC]基于Docker的Gerapy部署及配置教程

引言

很多时候公司产生的数据较少,想要实现分析还需要采集更多外部数据作为支撑,很多时候采集的脚本不止一个,在调度等方面可能比较麻烦需要编写脚本来实现调度,因此在网上调研后发现有开源项目Gerapy+Scrapyd,可以实现基于Scrapy框架采集项目的管理。

一、安装

想要实现Scrapy框架采集项目的管理,Gerapy和Scrapyd的是必须要安装的,安装方式很简单,可以通过docker安装两个项目(项目不要部署在公网服务器上!!!):

  • 安装Scrapyd
# 首先拉取项目的镜像
docker pull germey/scrapyd:latest
# 创建和启动容器,指定映射端口为6800
docker run -d --name scrapyd -p 6800:6800 germey/scrapyd:latest
  • 安装Gerapy(由于最新的0.9.13版本在打包项目时一直报错,且暂未找到解决方法,因此选择安装0.9.12版本)
# 首先拉取项目的镜像
docker pull germey/gerapy:0.9.12
# 创建容器的项目文件目录和日志目录在主机的映射目录,以便查看项目和日志
mkdir -p /opt/gerapy/projects
mkdir -p /opt/gerapy/logs
mkdir -p /opt/gerapy/dbs
# 创建和启动容器,并挂载路径,且指定映射端口为8000
docker run -d --name gerapy -v /opt/gerapy/projects/:/app/projects/ -v /opt/gerapy/logs/:/app/logs/ -v /opt/gerapy/dbs/:/app/dbs/ -p 8000:8000 germey/gerapy:0.9.12
  • 安装Gerapy(找到解决0.9.13版本在打包项目时一直报错的方法了,下面是0.9.13的安装方式)
# 首先拉取项目的镜像
docker pull germey/gerapy
# 创建容器的项目文件目录和日志目录在主机的映射目录,以便查看项目和日志
mkdir -p /opt/gerapy/projects
mkdir -p /opt/gerapy/logs
mkdir -p /opt/gerapy/dbs
# 创建和启动容器,并挂载路径,且指定映射端口为8000(这些都是一样)
docker run -e TZ=Asia/Shanghai -d --name gerapy -v /opt/gerapy/projects/:/home/gerapy/projects/ -v /opt/gerapy/logs/:/home/gerapy/logs/ -v /opt/gerapy/dbs/:/home/gerapy/dbs/ -p 8000:8000 germey/gerapy
# 接下来解决打包报错的问题
# 进入gerapy容器
docker exec -it gerapy bash
# 重新安装setuptools
pip3 uninstall setuptools
pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple
# 重启容器
docker start gerapy

至此两个必须的容器已经创建好了,此时可以在浏览器输入主机的IP:8000、IP:6800,查看Gerapy和Scrapyd的界面,如下图:
Gerapy登录界面
Scrapyd界面

二、配置

1. 主机管理

接下来登录Gerapy,默认的用户名和密码都是admin,暂时没有发现重置密码的地方,因此该项目不要部署在公网服务器上,登陆之后点击主机管理,添加刚才部署过Scrapyd的主机,由于我们在同一个主机上部署的,所以我们填写的IP就是主机的IP,端口号是6800。
主机管理

2. 项目管理

我们可以将使用Scrapy框架开发好的项目压缩为zip压缩包,直接在项目管理中上传,较为省事,如下图:
上传项目
我们点击编辑看一下上传之后,项目的目录结构,框线内就是上传之后需要调整的文件:
项目目录结构
首先是scrapy.cfg,需要修改[deploy],添加[scrapyd],如下代码:

# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html

[settings]
default = AncientPoetry.settings

[deploy:AncientPoetry]
#url = http://localhost:6800/
url = http://主机ip:6800/
project = AncientPoetry

[scrapyd]
encoding = utf-8

spider文件修改: 这个一定要修改,不然后续调度的时候会报错,一定要如下修改spider文件

    def __init__(self, **kwargs):
        kwargs.pop('_job')

项目文件修改
编辑完之后,返回部署该项目,先打包再部署,如下图
打包
部署

3. 任务管理

  • 创建任务
    新建任务
  • 调度
    回到主机管理中,找到刚才将项目配置的主机,进入调度,运行即可,有时会报错缺失某个第三方包,这时需要进入Scrapyd容器中通过pip安装依赖的第三方包即可。
    运行结果
  • 成功运行的结果
    进入Scrapyd容器安装itemadapter包
[root@test login]# docker exec -it scrapyd bash
root@da6d1da73cc4:/app# pip install itemadapter
Collecting itemadapter
  Downloading itemadapter-0.7.0-py3-none-any.whl (10 kB)
Installing collected packages: itemadapter
Successfully installed itemadapter-0.7.0
WARNING: You are using pip version 20.0.2; however, version 21.3.1 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
root@da6d1da73cc4:/app# exit
exit

再次运行后,我们可以在Scrapyd界面查看任务运行的日志,如下,数据已经被成功采集了。
成功运行的结果

三、结语

以上就是本次Gerapy部署过程遇到的几个难以解决的问题及解决方案的分享,希望对大家有所帮助。

四、番外

后续在查阅项目源码时发现可以在容器内修改py文件来修改登录密码,如下:

# 进入gerapy包路径
cd /usr/local/lib/python3.10/site-packages/gerapy/cmd/
# 查看initadmin.py
cat initadmin.py
# 可以使用vi进行修改password,需要安装vim。修改完之后再重启gerapy容器

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆月壹日君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值