文章目录

  • 版本介绍
  • 1、Python3环境的安装
  • 2、Scrapyd的安装
  • 3、Scrapy配置文件
  • 4、Scrapy启动
  • 5、访问认证
  • 6、Scrapyd-client的安装
  • 7、Scrapyd API的安装
  • 8、Scrapyrt的安装
  • 9、Scrapyd的功能
  • 10、supervisor
  • 10、其他yum安装

版本介绍

python-3.6.5
scrapyd-1.2.0

1、Python3环境的安装

Centos下Python3共存:链接

2、Scrapyd的安装

执行:pip3 install scrapyd报错

Collecting Twisted>=8.0 (from scrapyd)Could not find a version that satisfies the requirement Twisted>=8.0 (from scrapyd) (from versions: )
No matching distribution found for Twisted>=8.0 (from scrapyd)

官网下载Twisted:链接

[root@VM_129_36_centos ~]# ls
Twisted-18.7.0.tar.bz2  apps
[root@VM_129_36_centos ~]# tar -xjvf Twisted-18.7.0.tar.bz2
[root@VM_129_36_centos Twisted-18.7.0]# ls
CONTRIBUTING  LICENSE      NEWS.rst  README.rst  code_of_conduct.md  docs       setup.py  tox.ini
INSTALL.rst   MANIFEST.in  PKG-INFO  build       dist                setup.cfg  src
[root@VM_129_36_centos Twisted-18.7.0]# python3 setup.py install

再次执行:pip3 install scrapyd

3、Scrapy配置文件

新建一个/etx/scrapyd/scrapy.conf,Scrapy在运行的时候会读取此配置文件。
r

[root@VM_129_36_centos ~]# sudo mkdir /etc/scrapyd
[root@VM_129_36_centos ~]# sudo vi /etc/scrapyd/scrapyd.conf

官网配置文件:链接

      1 [scrapyd]2 eggs_dir    = eggs3 logs_dir    = logs4 items_dir   =5 jobs_to_keep = 56 dbs_dir     = dbs7 max_proc    = 08 max_proc_per_cpu = 49 finished_to_keep = 10010 poll_interval = 5.011 bind_address = 0.0.0.012 http_port   = 680013 debug       = off14 runner      = scrapyd.runner15 application = scrapyd.app.application16 launcher    = scrapyd.launcher.Launcher17 webroot     = scrapyd.website.Root1819 [services]20 schedule.json     = scrapyd.webservice.Schedule21 cancel.json       = scrapyd.webservice.Cancel22 addversion.json   = scrapyd.webservice.AddVersion23 listprojects.json = scrapyd.webservice.ListProjects24 listversions.json = scrapyd.webservice.ListVersions25 listspiders.json  = scrapyd.webservice.ListSpiders26 delproject.json   = scrapyd.webservice.DeleteProject27 delversion.json   = scrapyd.webservice.DeleteVersion28 listjobs.json     = scrapyd.webservice.ListJobs29 daemonstatus.json = scrapyd.webservice.DaemonStatus

**max_proc_per_cpu:**一台主机每个CPU最多运行4个Scrapy任务。
bind_address:默认是本地127.0.0.1,修改为0.0.0.0,可以让外网访问。

4、Scrapy启动

启动:scrapyd > ~/scrapyd.log &将日志存在scrapyd.log中。

报错:

  File "/usr/local/lib/python3.6/site-packages/Twisted-18.7.0-py3.6-linux-x86_64.egg/twisted/_version.py", line 8, in <module>from incremental import Version
ModuleNotFoundError: No module named 'incremental'
[root@VM_129_36_centos ~]# pip3 install incremental

报错:

builtins.ModuleNotFoundError: No module named '_sqlite3'
Failed to load application: No module named '_sqlite3'
[root@VM_129_36_centos ~]# yum install sqlite-devel

重新编译安装Python

./configure
sudo make
sudo make install

终于成功运行了。

[root@VM_129_36_centos Python-3.6.5]# scrapyd
2018-09-26T20:00:14+0800 [-] Loading /usr/local/lib/python3.6/site-packages/scrapyd/txapp.py...
2018-09-26T20:00:14+0800 [-] Scrapyd web console available at http://0.0.0.0:6800/
2018-09-26T20:00:14+0800 [-] Loaded.
2018-09-26T20:00:14+0800 [twisted.scripts._twistd_unix.UnixAppLogger#info] twistd 18.7.0 (/usr/local/bin/python3.6 3.6.5) starting up.
2018-09-26T20:00:14+0800 [twisted.scripts._twistd_unix.UnixAppLogger#info] reactor class: twisted.internet.epollreactor.EPollReactor.
2018-09-26T20:00:14+0800 [-] Site starting on 6800
2018-09-26T20:00:14+0800 [twisted.web.server.Site#info] Starting factory <twisted.web.server.Site object at 0x7f34550d1a90>
2018-09-26T20:00:14+0800 [Launcher] Scrapyd 1.2.0 started: max_proc=4, runner='scrapyd.runner'

**访问地址:**http://0.0.0.0:6800/ # 在云上部署就换成自己的IP

5、访问认证

配置完成后,Scrapy和它的接口都是可以公开访问的,我们来配置认证访问,借助Nginx做反向代理。

[root@VM_129_36_centos ~]# yum install nginx
[root@VM_129_36_centos ~]# vi /etc/nginx/nginx.conf

修改配置文件nginx.cong,增加如下配置。

    server {listen 6801;    # 这里我没有监听6800端口location / {proxy_pass  http://127.0.0.1:6800/;auth_basic  "Restricted";auth_basic_user_file  /etx/nginx/conf.d/.htpasswd;}}

/etc/nginx/conf.d/目录下,创建用户名和密码。

**安装htpasswd:**htpasswd是Apache密码生成工具,Nginx支持auth_basic认证,因此我门可以将生成的密码用于Nginx中。

[root@VM_129_36_centos conf.d]# yum -y install httpd-tools
[root@VM_129_36_centos conf.d]# htpasswd -c .htpasswd admin
New password:   # 输入两次密码
Re-type new password:
[root@VM_129_36_centos conf.d]# ls -la
total 12
drwxr-xr-x 2 root root 4096 Sep 26 20:12 .
drwxr-xr-x 4 root root 4096 Sep 26 20:08 ..
-rw-r--r-- 1 root root   44 Sep 26 20:12 .htpasswd
[root@VM_129_36_centos conf.d]# cat .htpasswd   # 里面是自己的密码
[root@VM_129_36_centos conf.d]# nginx    # 启动Nginx

htpasswd参数命令如下

-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户

6、Scrapyd-client的安装

pip install scrapyd-client
scrapyd-deploy -h   # 检查是否部署成功
curl http://0.0.0.:6800/listprojects.json   # 来获取当前主机的Scrapy项目

7、Scrapyd API的安装

pip install python-scrapyd-api
>>> from scrapyd_api import ScrapydAPI
>>> scrapyd = ScrapydAPI('http://0.0.0.0:6800/')
>>> print(scrapyd.list_projects())
[]

可以通过Python直接获取主机上的Scrapy任务运行的状态。

8、Scrapyrt的安装

Scrapyrt为Scrapy提供了一个调度的HTTP接口,有了它我们就不用再执行Scrapy而是通过HTTP请求接口来调度Scrapy任务。
不需要分布式多任务的话Scrapyrt比Scrapyd更实用。
**注意:**如果不是分布式部署的话,这个比较好用。

[root@VM_129_36_centos ~]# pip3 install scrapyrt
[root@VM_129_36_centos ~]# scrapyrt     # 默认在9080端口运行,必须要在Scrapy项目下,因为它需要scrapy.cfg文件
[root@VM_129_36_centos ~]# scrapyrt -p 9081 # 更换端口

9、Scrapyd的功能

我们来操作一系列HTTP接口来实现各种操作。

10、supervisor

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

10、其他yum安装

sudo yum install -y epel-release libxslt-devel libxml2-devel openssl-devel

然后重新编译Python

Linux部署Scrapyd及配置功能相关推荐

  1. Linux部署-Net并配置进程守护

    注册 Microsoft 签名密钥并添加 Microsoft 产品提要 sudo rpm --import https://packages.microsoft.com/keys/microsoft. ...

  2. nginx linux 部署web项目名,Linux部署web项目配置Nginx

    1.先配置java环境  下载   jdk-7u80-linux-x64.rpm 2.下载数据库 mysql  yum 安装 3.下载linux下的tomcat 解压 4.检测tomcat是否安装成功 ...

  3. linux mutt安装配置_Linux部署msmtp+mutt发送邮件功能

    一.前言 """ 我们通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail ...

  4. 《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置...

    本节书摘来自异步社区<Docker容器:利用Kubernetes.Flannel.Cockpit和Atomic构建和部署>一书中的第2章,第2.2节,作者: [美]Christopher ...

  5. 部署前端项目 Linux系统的nginx配置

    为什么80%的码农都做不了架构师?>>>    一.本地文件上传到服务器 scp -r /c/Develop/manage-system/dist/* username@server ...

  6. linux日志配置含义,Linux操作系统中的日志功能详解

    日志系统将我们系统运行的每一个状况信息都使用文字记录下来,这些信息有助我们观察系统运行过程中正常状态和系统运行错误时快速定位错误位置的途径等;下面学习啦小编主要概述一下Linux操作系统中的日志功能. ...

  7. 【vim编辑器配置】Linux / Ubuntu 傻瓜式配置 vim + 功能齐全 + 方便好用

    [vim编辑器配置]Linux / Ubuntu 傻瓜式配置vim + 功能齐全 + 方便好用 本文主要讲述, Linux/Ubuntu系统如何配置vim,让其变得高端大气上档次,皮实好用功能全. W ...

  8. Linux系统通过Squid配置实现代理上网

    Squid是什么 Squid是一种用来缓冲Internet数据的软件.它接受来自人们需要下载的目标(object)的请求并适当地处理这些请求.也就是说,如果一个人想下载一web页面,他请求Squid为 ...

  9. Nacos(二)Linux部署Nacos集群环境(兼容Nacos1.x与2.x)

    目录 前言 对比1.x版本 1.搭建单机环境 2.配置集群 3.启动.停止集群节点 4.关闭双写 5.配置自启服务 6.配置nginx映射 7.SpringCloud连接集群 <Linux部署N ...

最新文章

  1. 你的厨房被水淹了!别担心,这只是3D深度估计做出的特效
  2. java学习笔记(九)----多线程
  3. python循环中append_[Python]list.append()在for循环中每次添加的都是最后的一个元素
  4. Linux服务器通过rz/sz轻松上传下载文件
  5. A站有一个页面需要PV统计 A站读写该数据 B站读该数据 需要数据同步
  6. 【LeetCode题解】二叉树的遍历
  7. Java并发(9)- 从同步容器到并发容器
  8. 【分享】小工具大智慧之Sql执行工具
  9. Delphi / Pascal 语法知识干货
  10. 深入理解 Android 消息机制原理
  11. 【组合数学】组合恒等式 ( 八个组合恒等式回顾 | 组合恒等式 积 1 | 证明 | 使用场景 | 求组合数通用方法 )
  12. 邻接表与邻接矩阵的相互转换
  13. navicat的注册出现提示No All Pattern Found! File Already Patched?
  14. 三、数字图像处理之直方图规定化实例
  15. 基于Vue实现魔方矩阵排列效果
  16. ECharts快速上手 入门教学
  17. oracle断电ora-01033,ora-00600,
  18. Row was updated or deleted by another transaction or unsaved-value mapping was incorrect解决
  19. 在电脑浏览器上怎样对一整个页面进行完整的截图?(整站截图)
  20. 太强了!!!GNN + PLM→CIKM'22最佳论文

热门文章

  1. KEGG数据库的使用方法与介绍
  2. redis客户端命令
  3. 张一鸣辞职半年后,成为中国互联网首富——“我奋斗的目标不是为了赚钱”
  4. 使用URLRequest获取MP3并进行播放的例子 .
  5. python导入模块错误_Python导入模块时遇到的错误分析
  6. 第一篇、GUI编程基础
  7. 编写良好的代码:如何减少代码的认知负荷
  8. linux bash csh 选择,关于linux:bash vs csh vs others-哪个对应用程序维护更好?
  9. R包WGCNA---转录组WGCNA共表达网络构建(无表型计算提取网络)
  10. Jredis的使用范例