使用 Scrapyd 管理部署 Scrapy 的一些问题
环境: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.htmlhttps://www.jianshu.com/p/c0de29466732
使用 Scrapyd 管理部署 Scrapy 的一些问题的更多相关文章
- Scrapyd+Gerapy部署Scrapy爬虫进行可视化管理
Scrapy是一个流行的爬虫框架,利用Scrapyd,可以将其部署在远程服务端运行,并通过命令对爬虫进行管理,而Gerapy为我们提供了精美的UI,可以在web页面上直接点击操作,管理部署在scrap ...
- 第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目
第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目 scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:h ...
- 五十一 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目
scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:https://github.com/scrapy/scrapyd 建议安装 pip3 install s ...
- 爬虫部署 --- scrapyd部署爬虫 + Gerapy 管理界面 scrapyd+gerapy部署流程
---------scrapyd部署爬虫---------------1.编写爬虫2.部署环境pip install scrapyd pip install scrapyd-client 启动scra ...
- Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署
一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...
- 使用Scrapyd部署Scrapy爬虫到远程服务器上
1.准备好爬虫程序 2.修改项目配置 找到项目配置文件scrapy.cnf,将里面注释掉的url解开来 本代码需要连接数据库,因此需要修改对应的数据库配置 其实就是将里面的数据库地址进行修改,变成远程 ...
- 如何部署Scrapy 到Scrapyd上?
安装上传工具 1.上传工具 scrapyd-client 2.安装方法: pip install scrapyd-client 3.上传方法: python d:\Python27\Scripts\s ...
- scrapy-redis(七):部署scrapy
一般我们写好scrapy爬虫,如果需要启动的话,需要进入scrapy项目的根目录,然后运行以下命令: scrapy crawl {spidername} 这样我们就可以在终端查看到爬虫信息了.但爬虫运 ...
- docker微服务部署之:六、Rancher管理部署微服务
docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...
随机推荐
- 传输层TCP
/*************************************************************************************************** ...
- *单链表[递归&不带头结点]
不带头结点的单链表,递归法比较简明!(必背!) 单链表的结构: typedef struct node{ int data; struct node *next; }*List,Node; 创建第一种 ...
- 20155326 《Java程序设计》第8周学习总结
20155326 <Java程序设计>第8周学习总结 教材学习内容总结 NIO (1)NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块 ...
- Webpack 学习2
webpack + react 优化:缩小js包体积 webpack 介绍 & 安装 & 常用命令 30分钟手把手教你学webpack实战 Webpack 中文指南
- Java相关工具下载、配置环境变量
相关工具下载 JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Eclip ...
- output.php
<?php /** * */ class Output { function __construct() { $this->_zlib_oc = @ini_get('zlib.output ...
- 马士兵 spring 视频笔记
课程内容 1. 面向接口(抽象)编程的概念与好处 2. IOC/DI的概念与好处 a) inversion of control b) dependen ...
- ASP.NET MVC Area 区域
大型网站或项目通常有很多子系统或功能模块,如大型网站可能包含酒店.旅游.机票子系统,通过二级域名来访问,或者一个网站的前台和后台模块,每个团队负责某一子系统或模块,为了各团队进行协同开发,我们可以分不 ...
- [php-cookie] cookie 请求跨域,如何共享
cookie 请求跨域的问题, 假设我有两个域名,一个 m.example.com,另一个是 www.example.com . 那么我需要如何设置 cookie 才可以在这两个域名都实现共享呢? / ...
- JAVA的初始化顺序
这里主要是介绍JAVA的类的初始化顺序,比较基础:主要是以例子演示为主: 例子一: 1 package com.cnblog.GDUTtiantian; 2 3 /** 4 * 5 * @author ...