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来快捷操作