Scrapyd 在centos下线上部署Scrapy爬虫

什么是scrapyd

scrapyed = scrapy + deploying
把scrapy程序发布到线上的一套python服务

步骤

1. 安装

  • 1.安装scrapyd
    安装好scrapyd,先开启服务
pip3 install scrapyd
# 开启服务
scrapyd

  • 2.安装scrapyd-client
    这是一个部署到scrapy到scrapyd服务中的工具
pip3 install scrapyd-client

该安装包拥有scrapyd-deploy 命令,是爬虫项目发布到srcapyd服务的关键步骤,使用的前提是
必须要开启scrapyd服务,也就是第一步a) 这一步window需要额外处理,linux不需要

2. 项目准备

  • 1.修改配置文件
    首先修改scrapy配置文件,进入scrapy项目文件夹,能看到配置文件scrapy.cfg修改配置如下
[settings]
default = Demo.settings

[deploy:Demo]   # 这边项目名字随便取
url = http://localhost:6800/  # 这个注释打开6800是后面访问端口,如要修改,scrapyd里面的也要记得一起修改
project = Demo

  • 2.修改scrapyd配置文件(该文件可能由于不同的安装可能路径不一样)
sudo find / -name default_scrapyd.conf   # 首先知道这个配置文件路径
vim /your_path/default_scrapyd.conf  # vim编辑配置文件

# 下面是编辑配置文件
[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 10    #可以不改 这个参数和CPU个数的乘积是爬虫同时运行的最多个数 为了以后方便改成10
finished_to_keep = 100   
poll_interval = 5.0
bind_address = 0.0.0.0   # 绑定的IP地址改成0.0.0.0 外网就可以访问
http_port   = 6800   # 这边是对应的端口
debug       = off
runner      = scrapyd.runner
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
webroot     = scrapyd.website.Root

[services]
schedule.json     = scrapyd.webservice.Schedule
cancel.json       = scrapyd.webservice.Cancel
addversion.json   = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json  = scrapyd.webservice.ListSpiders
delproject.json   = scrapyd.webservice.DeleteProject
delversion.json   = scrapyd.webservice.DeleteVersion
listjobs.json     = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

  • 3.测试启动
    确保服务器打开了6800端口
# TODO()首先进入scrapy项目文件夹下查看项目是否能正常启动
scrapy list  # 如果有报错缺什么包 可以查看我的之前的博客 
# 上一步正常 可以测试scrapyd 是否正常
scrapyd  # 测试scrapyd开启 务必保证开启6800端口 
# 这一步报错 可以在stackoverflow 上找答案,我之前博客也有相关的答错

假如此时访问 http://127.0.0.1/6800 出现scrapyd的页面则表示成功

  • Tips

后台运行scrapyd可以使用 supervisor 管理后台进程

  • 4.启动项目
# 部署项目, 一个scrapyd可以部署多个scrapy项目
scrapyd-deploy Demo(cfg:中的部署项目名) -p 爬虫项目名(cfg中的project名)  # Demo是在scrapy配置文件里面设置的部署名称(假如没有则为default)

3.控制scrapyd的指令方法

可以通过curl命令获取6800相关的api接口对爬虫进行远程操作,比如 开启爬虫,停止爬虫 等等,

  • 开启:项目名为爬虫的顶级项目名,非上面的部署名
curl http://ip地址:6800/schedule.json -d project=项目名 -d spider=爬虫名称
  • 关闭:job可以通过6800看
curl http://ip地址:6800/cancel.json -d project=项目名 -d job=232424434
  • 删除不要的项目,确保该项目没有运行的爬虫
curl http://ip地址:6800/delproject.json -d project=项目名
  • 查看还有多少项目
curl http://ip地址:6800/listprojects.json

大功告成

以上可以看到通过curl命令就是获取接口命令的方法,可以使用scrapyd_api来快捷操作

posted @ 2020-07-09 12:07  zhenyuantg  阅读(620)  评论(0编辑  收藏  举报