Scrapyd服务及其应用

Scrapyd 是一个用于部署和运行 Scrapyd 项目的工具,可以依靠它将 Scrapy 项目上传到云主机并通过 API 来控制它的运行。

1. pip 安装该服务

pip3 install Scrapyd

2. 配置服务( centos7下 ),1.2版本默认没有配置文件,需自行创建

mkdir /etc/scrapyd

vim /etc/scrapyd/scrapyd.conf
    # 配置一下信息
[scrapyd]                                                                                                               
eggs_dir    = eggs
logs_dir    = logs
items_dir   =   
jobs_to_keep = 5 
dbs_dir     = dbs 
max_proc    = 0 
max_proc_per_cpu = 2    # 每个 cpu 最高运行的 scrapy 任务数
finished_to_keep = 100 
poll_interval = 5.0 
bind_address = 127.0.0.1    # 监听地址
http_port   = 6800  # 设置访问端口
debug       = off 
runner      = scrapyd.runner
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
webroot     = scrapyd.website.Root

[services]
schedule.json     = scrapyd.webservice.Schedule
cancel.json       = scrapyd.webservice.Cancel
addversion.json   = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json  = scrapyd.webservice.ListSpiders
delproject.json   = scrapyd.webservice.DeleteProject
delversion.json   = scrapyd.webservice.DeleteVersion
listjobs.json     = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

4. 后台运行

scrapyd > /root/scrapyd.log &   # 后台运行 日志记录在 /root/scrapyd.log 文件中。使用 kill 命令杀进程即可
  • 测试 (浏览器访问6800端口即可)如下图所示:
11869978-27a37f6c9aec57d3.png
scrapyd服务验证.png

5. 访问认证

Scrapy 和它的接口是可以公开访问的,如果想配置访问认证的话,可以使用 nginx 做反向代理

  • 安装 nginx

    yum install nginx     # 安装 nginx 服务
    yum install httpd-tools   # 安装 htpasswd 认证组件
    
  • 配置 nginx

    删除或注释掉原 80 端口处的 server 配置,加入 22-29 行处的信息

    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    
        server{
            listen 6801;
            location / {
                proxy_pass     http://127.0.0.1:6800/;    # 反向代理的服务地址
                auth_basic     "Restricted";  # 表示限制访问    
                auth_basic_user_file    /etc/nginx/conf.d/.htpasswd;  # 认证配置文件路径
                }
            }
        }
    
    
    

    使用 nginx -t 测试配置文件有没有语法错误

  • 使用 htpasswd 创建认证的配置文件

    cd /etc/nginx/conf.d
    htpasswd -c .htpasswd admin   # 在 /etc/nginx/conf.d 路径下创建 admin 用户的认证信息文件,文件名为 .htpasswd 的隐藏文件
    

    执行上述第二行命令后会提示输入新密码,需要输入两次(截图只有一次),如下图所示:

11869978-98e53a1f19433e4d.png
htpasswd认证用户.png

6. 重启 nginx 并测试反向代理

  • 重启 nginx

    # 直接重启肯定会报错,这个坑已经被趟过了, 会有如下报错
    # 2018/06/25 18:37:11 [emerg] 92632#0: bind() to 0.0.0.0:6801 failed (13: Permission denied)
    
    # 原因是 SElinux 在捣鬼,参考链接( https://blog.csdn.net/lzm198707/article/details/50130615 )
    
    # 可执行修改上下文或者布尔值做指定修改,这里没有深入,各位自行研究。
    setenforce 0 
    
    # 重启 nginx 服务
    systemctl restart nginx 
    
  • 测试反向代理

    浏览器访问配置的反向代理端口即可。

    一次认证通过后,之后访问无需认证,如果需要测试的话,清除浏览器缓存(或删除浏览器中该 ip 的Cookie )即可

11869978-9e11651a4a557c8d.png
nginx反向代理验证.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值