环境: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. WordPaster-UEditor1.x整合教程

    版权所有 2009-2017 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webplug/wordpa ...

  2. GAE、SAE与BAE的对比分析(百度云)

    https://blog.csdn.net/zhongguomao/article/details/53282307 https://cloud.baidu.com/event/experience/ ...

  3. codeblocks+SDCC开发51单片机

    说到51,大部分人都是用的是KEIL开发环境,但是KEIL是商业软件,我们一般人都用的是破解版的,如果用于商业就会收到法律诉讼.然而有一款很好的编译器专为51内核而存在.SDCC最大的有点就是开源免费 ...

  4. springJDBC和SpringJDBCTemplate解决方案探究

    先来看一个纯JDBC的例子,体会一下springJDBC和SpringJDBCTemplate两者的区别 一个Customer类 package com.mkyong.customer.model; ...

  5. python函数知识

    一.三目运算 也叫三元运算,例如result=x if x<y else y 二.集合(set) 返回主页集合(set):把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(s ...

  6. SRM482

    250pt 题意:给定n把锁,第i轮每间隔i个打开一个木有打开的.问最后打开的事几 思路:直接vector模拟 code: #line 7 "LockersDivOne.cpp" ...

  7. Android-Java多线程通讯(生产者 消费者)&10条线程对-等待唤醒/机制的管理

    上一篇博客 Android-Java多线程通讯(生产者 消费者)&等待唤醒机制 是两条线程(Thread-0 / Thread-1) 在被CPU随机切换执行: 而今天这篇博客是,在上一篇博客A ...

  8. MVC所有的ActionResult

    一.所有的Controller都继承自System.Web.Mvc.Controller 目前ASP.NET MVC3默认提供了多种ActionResult的实现,在System.Web.Mvc命名空 ...

  9. [leetcode.com]算法题目 - Jump Game

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  10. 【PHP】当mysql遇上PHP

    博客提纲 利用PHP连接mySQL数据库 两套接口:面向对象和面向过程 实现写改删查(CUBD)实例 通过prepare语句处理相同类型的不同SQL语句 通过bind_param()绑定参数,及相关注 ...