分布式爬虫的部署之Scrapyd-Client的使用

这里有现成的工具来完成部署过程,它叫作Scrapyd-Client。本节将简单介绍使用Scrapyd-Client部署Scrapy项目的方法。

一、准备工作

请先确保Scrapyd-Client已经正确安装。

二、Scrapyd-Client 的功能

Scrapyd-Client为了方便Scrapy项目的部署,提供如下两个功能。

  • 将项目打包成Egg文件。
  • 将打包生成的Egg文件通过addversion.json接口部署到Scrapyd上。

Scrapyd-Client帮我们把部署全部实现了,我们不需要再去关心Egg文件是怎样生成的,也不需要再去读Egg文件并请求接口上传了,只需要执行一个命令即可一键部署。

三、Scrapyd-Client 部署

要部署Scrapy项目,我们首先需要修改项目的配置文件。例如之前写的Scrapy微博爬虫项目,在项目的第一层会有一个scrapy.cfg文件,它的内容如下:

[settings]
default = weibo.settings

[deploy]
#url = http://localhost:6800/
project = weibo

这里需要配置一下deploy部分。例如我们将项目部署到120.27.34.25的Scrapyd上,则修改内容如下:

[deploy]
url = http://120.27.34.25:6800/
project = weibo

这样我们再在scrapy.cfg文件所在路径执行如下命令:

scrapyd-deploy

运行结果如下:

Packing version 1501682277
Deploying to project "weibo" in http://120.27.34.25:6800/addversion.json
Server response (200):
{"status": "ok", "spiders": 1, "node_name": "datacrawl-vm", "project": "weibo", "version": "1501682277"}

返回的结果表示部署成功了。

项目版本默认为当前时间戳。我们也可以指定项目版本,通过version参数传递即可。例如:

scrapyd-deploy --version 201707131455

值得注意的是,在Python 3的Scrapyd 1.2.0版本中,版本号不能指定为带字母的字符串,它们必须为纯数字,否则会出现报错。

如果有多台主机,我们可以配置各台主机的别名,修改配置文件为:

[deploy:vm1]
url = http://120.27.34.24:6800/
project = weibo

[deploy:vm2]
url = http://139.217.26.30:6800/
project = weibo

在此统一配置多台主机,一台主机对应一组配置,在deploy后面加上主机的别名即可。如果想将项目部署到IP为139.217.26.30的vm2主机,我们只需要执行如下命令:

scrapyd-deploy vm2

如此一来,我们只需要在scrapy.cfg文件中配置好各台主机的Scrapyd地址,然后调用scrapyd-deploy命令加主机名称即可实现部署。

如果Scrapyd设置了访问限制,我们可以在配置文件中加入用户名和密码的配置,同时修改端口成Nginx代理端口。例如,在第1章我们使用的是6801,那么这里就需要改成6801,修改如下:

[deploy:vm1]
url = http://120.27.34.24:6801/
project = weibo
username = admin
password = admin

[deploy:vm2]
url = http://139.217.26.30:6801/
project = weibo
username = germey
password = germey

通过加入usernamepassword字段,我们就可以在部署时自动进行Auth验证,然后成功实现部署。

四、结语

本节介绍了利用Scrapyd-Client来方便地将项目部署到Scrapyd的过程,有了它部署不再是麻烦事。

原文发布于微信公众号 - 进击的Coder(FightingCoder)

原文发表时间:2018-05-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏代码世界

Linux常用命令大全

929
来自专栏编程坑太多

『中级篇』docker之java容器运行外置springboot-jar(番外篇)(79)

873
来自专栏互联网高可用架构

初识专业的分布式多场景发号器Vesta

903
来自专栏编程心路

Linux目录及文件相关知识整理

Linux 文件管理是学习 Linux 的基础,看了鸟叔的 Linux 书籍,把 Linux 目录及文件相关的知识整理如下。

784
来自专栏Laoqi's Linux运维专列

Docker 配置安装(Ⅱ)

2326
来自专栏运维小白

1.5安装Centos7

设置光驱——使用iso镜像文件,然后就可开启此虚拟机 进入界面后,会看到三个选项 ? 第一项,就是安装centos7 第二项,测试你的光驱(就是光盘...

2158
来自专栏维C果糖

Linux 命令之 chmod:修改权限

在 Linux 命令中,chmod用于修改文件或者目录的权限。对于文件或者目录的普通权限,共有 3 种,分别为: r:读取; w:写入; x:执行。 此外,还有...

1676
来自专栏应兆康的专栏

每天一个Linux命令(4)——mkdir

mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建dirname指定的目录,如果给出了一个...

2668
来自专栏Python中文社区

每天一个Linux命令:telnet

telnet telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是In...

1979
来自专栏Java3y

Linux用户和权限管理看了你就会用啦

没想到上一篇能在知乎获得千赞呀,Linux也快期末考试了,也有半个月没有写文章了。这篇主要将Linux下的用户和权限知识点再整理一下。

1670

扫码关注云+社区