环境: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. 词袋模型(BOW, bag of words)

    词集模型:单词构成的集合,每个单词只出现一次. 词袋模型:把每一个单词都进行统计,同时计算每个单词出现的次数. 在train_x中,总共有6篇文档,每一行代表一个样本即一篇文档.我们的目标是将trai ...

  2. tabindex属性用法

    支持tabindex属性的元素:<a> <input> <textarea> <area> <select> <button> ...

  3. [置顶] AngularJS实战之路由ui-sref-active使用

    当我们使用angularjs的路由时,时常会出现一个需求,当选中菜单时把当前菜单的样式设置为选中状态(多数就是改变颜色) 接下来就看看Angular-UI-Router里的指令ui-sref-acti ...

  4. FastDFS分布文件系统Java客户端集成

    参考博客:http://blog.csdn.net/xyang81/article/details/52847311 官网Java客户端源代码: https://github.com/happyfis ...

  5. 如果我写一个开源的HIS软件

    HIS也称为医院信息管理系统,如果我要写一个 开源的,会成吗?为什么要这么做?出于对这个行业的担忧及其当前该行业的一些问题的思考.我曾跟两个HIS供应商讨论过这个话题,但可以感受到他们在利益面前,最终 ...

  6. (01背包 先排序)Proud Merchants (hdu 3466)

    http://acm.hdu.edu.cn/showproblem.php?pid=3466   Description Recently, iSea went to an ancient count ...

  7. eclipse生成可执行jar包(引入第三方.jar文件)

    1. eclipse建立普通的java project项目(项目名aa) 2. 项目正常组织通过buildpath加载各种jar包入项目aa比如例子项目里,加入了spring 各种jar包加入各种配置 ...

  8. Windows 8.1 Update中的小改变

    在Build 2014大会中,发布了Windows 8.1 Update的更新,并将于4月8日通过Windows Update进行推送.但是,在MSDN订阅下载中,带有该更新的镜像已经可以在4月3号放 ...

  9. codeforces 475D

    题意:给定n(n<=100000)个1e9以内的数的数组a,然后最多有3*1e5的询问,对于每个询问,给定一个x,问有多少个(l<=r&&gcd(a[l],a[l+1].. ...

  10. day01_雷神_Python入门

    day01 1.编程语言 主流的像C.java.python.php.C#.等,可以从不同维度分类如下: 机器码和字节码 机器码: C 字节码: 其他 note: 机器码是电脑的CPU可直接解读的数据 ...