环境:Ubuntu Xenial (16.04)

Scrapy 是一个不错的爬虫框架,但是不支持定时执行,常规的做法是使用 crontab 的方式进行定时执行 shell ,当爬虫数量多的时候,管理起来就非常麻烦,总是一个scrapy project 做一个deploy,很不方便 ,Google 了一番,发现 Scrapyd 比较符合我的需要。

#安装 scrapyd
apt-get 了一番貌似不支持 ubuntu 16.04,后面使用 pip3 install scrapyd
pip3 install scrapyd
pip3 uninstall scrapyd

#修改配置文件
scrapyd默认运行在6800端口 ,bind_address 127.0.0.1 ,只能本地访问
sudo vi /etc/scrapyd/scrapyd.conf
[scrapyd]
bind_address = 127.0.0.1
#bind_address = 0.0.0.0
scrapyd启动的时候会自动搜索配置文件,配置文件的加载顺序为
/etc/scrapyd/scrapyd.conf /etc/scrapyd/conf.d/* scrapyd.conf ~/.scrapyd.conf
注:不建议修改 bind_address = 0.0.0.0 ,这样有安全问题,可以通过 nginx 反向代理配置验证用户名密码

#使用 supervisor 守护 scrapyd 进程
sudo apt-get install supervisor
sudo apt-get remove supervisor
开启http的ui控制台
vi /etc/supervisor/supervisord.conf
[inet_http_server]
port = 0.0.0.0:8080
username = name
password = xxxxx

启动supervisor程序
sudo service supervisor start
sudo service supervisor stop
service supervisor status

sudo supervisorctl reload
supervisorctl status
pgrep -fl supervisord
sudo ps -ef | grep supervisor

配置scrapyd
cd /etc/supervisor/conf.d
touch scrapyd.conf

[program:scrapyd]
command=scrapyd
autorestart=true

sudo supervisorctl reload

#使用 nginx 代理 scrapyd
sudo apt-get install libpcre3 libpcre3-dev openssl libssl-dev
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_gzip_static_module
make && make install
测试配置文件是否有错误
/opt/nginx/sbin/nginx -t
启动nginx
/opt/nginx/sbin/nginx
停止nginx
/opt/nginx/sbin/nginx -s stop
生成用户名为name 密码 xxx 的配置文件
apt install apache2-utils
htpasswd -bc .htpasswd name xxx
修改配置文件(增加了一个 server)

server {
listen 81;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://127.0.0.1:6800/;
auth_basic "Restricted";
auth_basic_user_file /opt/.htpasswd;
}

}

从新加载配置
/opt/nginx/sbin/nginx -s reload

#修改 scrapy.cfg 配置

[deploy:stockhq-server]
url = http://xxx.xxx.xxx.xxx:81/
project = stockhq
username = xxx
password = xxx

安装客户端
pip3 intall scrapyd-client
部署
➜ stockhq git:(master) ✗ scrapyd-deploy stockhq-server -p stockhq
Packing version 1492929824
Deploying to project "stockhq" in http://xxx.xxx.xxx.xxx:81/addversion.json
Server response (200):
{"status": "ok", "node_name": "iZbp1gf15gbzzqwvxbj18jZ", "version": "1492929824", "spiders": 1, "project": "stockhq"}

执行爬虫
curl 的 Basic Auth 参数:
-u, --user USER[:PASSWORD] Server user and password

➜ stockhq git:(master) ✗ curl http://120.26.40.126:81/schedule.json -d project=stockhq -d spider=stock_hq_jrj_spider -u username:password
{"status": "ok", "node_name": "iZbp1gf15gbzzqwvxbj18jZ", "jobid": "a69558b027f011e7857c00163e1354dc"}

注意点:

1.修改代码部署没有生效,请注意是否删除了项目根目录的 build 文件夹

2.定期清理爬虫的日志文件 /logs/projectname 目录下

REFER:
http://scrapyd.readthedocs.io/en/stable/overview.html
https://piaosanlang.gitbooks.io/spiders/05day/section5.3.html

https://www.jianshu.com/p/c0de29466732

使用 Scrapyd 管理部署 Scrapy 的一些问题的更多相关文章

  1. Scrapyd+Gerapy部署Scrapy爬虫进行可视化管理

    Scrapy是一个流行的爬虫框架,利用Scrapyd,可以将其部署在远程服务端运行,并通过命令对爬虫进行管理,而Gerapy为我们提供了精美的UI,可以在web页面上直接点击操作,管理部署在scrap ...

  2. 第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目

    第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目 scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:h ...

  3. 五十一 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目

    scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:https://github.com/scrapy/scrapyd 建议安装 pip3 install s ...

  4. 爬虫部署 --- scrapyd部署爬虫 + Gerapy 管理界面 scrapyd+gerapy部署流程

    ---------scrapyd部署爬虫---------------1.编写爬虫2.部署环境pip install scrapyd pip install scrapyd-client 启动scra ...

  5. Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署

    一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...

  6. 使用Scrapyd部署Scrapy爬虫到远程服务器上

    1.准备好爬虫程序 2.修改项目配置 找到项目配置文件scrapy.cnf,将里面注释掉的url解开来 本代码需要连接数据库,因此需要修改对应的数据库配置 其实就是将里面的数据库地址进行修改,变成远程 ...

  7. 如何部署Scrapy 到Scrapyd上?

    安装上传工具 1.上传工具 scrapyd-client 2.安装方法: pip install scrapyd-client 3.上传方法: python d:\Python27\Scripts\s ...

  8. scrapy-redis(七):部署scrapy

    一般我们写好scrapy爬虫,如果需要启动的话,需要进入scrapy项目的根目录,然后运行以下命令: scrapy crawl {spidername} 这样我们就可以在终端查看到爬虫信息了.但爬虫运 ...

  9. docker微服务部署之:六、Rancher管理部署微服务

    docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...

随机推荐

  1. 用jquery实现复选框全选全不选问题(完整版),在网络上怎么也找不到完整的解决方案,重要搞全了

    首先准备jsp页面控件: 请选择您的爱好:<br> <input type="checkbox" id="all" name="se ...

  2. android-基础编程-TextView

    TextView是简单而又复杂的控件,简单是使用上,复杂是源代码研究.基础编程这里只讲是如何使用. TextView主要分为两种使用方法,一种是xml中不带span的textview,另外一种是Spa ...

  3. jmeter 4.0版本更新说明(个人做个记录)总版本更新合集

    版本4.0 摘要 新的和值得注意的 不兼容的变化 Bug修复 改进 非功能性变化 已知问题和解决方法 谢谢 新的和值得注意的 核心改进 JMeter现在支持JAVA 9. 提供新的边界提取器元件,提供 ...

  4. JavaScript 获取鼠标点击位置坐标

    在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊 ...

  5. Java相关工具下载、配置环境变量

    相关工具下载 JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Eclip ...

  6. 从0开始学Python---01

    1.开始 Vim  test.py #!/usr/bin/python print "hello,world!"; chmod +x test.py ./test.py 2.基本知 ...

  7. 在Delphi中处理word文档与数据库的互联

    在Delphi中处理word文档与数据库的互联 ---- 目前,Delphi被越来越多的人选中作为MIS系统开发中的前台工具.在以Delphi为前台,一些大型数据库为后台的MIS系统中,图形的处理不可 ...

  8. IDHTTP的基本用法

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  9. dotnet core瘦身发布

    需要安装nuget包Microsoft.Packaging.Tools.Trimming然后利用如下命令发布dotnet publish -r win10-x64 -c release --self- ...

  10. 重置identity值

    如果数据库在SQL2008或以上,可以参考下面方法: DBCC CHECKIDENT ( table_name [, { NORESEED | { RESEED [, new_reseed_value ...