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端口即可)如下图所示:
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 的隐藏文件
执行上述第二行命令后会提示输入新密码,需要输入两次(截图只有一次),如下图所示:
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 )即可