无法访问你试图使用的功能所在的网络位置。是什么原因?
509
2022-05-30
Scrapyd 是一个用于部署和运行 Scrapy 项目的工具,有了它,你可以将写好的 Scrapy 项目上传到云主机并通过 API 来控制它的运行。
既然是 Scrapy 项目部署,基本上都使用 Linux 主机,所以本节的安装是针对于 Linux 主机的。
1. 相关链接
GitHub:https://github.com/scrapy/scrapyd
PyPI:https://pypi.python.org/pypi/scrapyd
官方文档:https://scrapyd.readthedocs.io
2. pip 安装
这里推荐使用 pip 安装,命令如下:
1
pip3 install scrapyd
3. 配置
安装完毕之后,需要新建一个配置文件 /etc/scrapyd/scrapyd.conf,Scrapyd 在运行的时候会读取此配置文件。
在 Scrapyd 1.2 版本之后,不会自动创建该文件,需要我们自行添加。
首先,执行如下命令新建文件:
1
2
sudo mkdir /etc/scrapyd
sudo vi /etc/scrapyd/scrapyd.conf
接着写入如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[scrapyd]
eggs_dir = eggs
logs_dir = logs
items_dir =
jobs_to_keep = 5
dbs_dir = dbs
max_proc = 0
max_proc_per_cpu = 10
finished_to_keep = 100
poll_interval = 5.0
bind_address = 0.0.0.0
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
配置文件的内容可以参见官方文档 https://scrapyd.readthedocs.io/en/stable/config.html#example-configuration-file。这里的配置文件有所修改,其中之一是 max_proc_per_cpu 官方默认为 4,即一台主机每个 CPU 最多运行 4 个 Scrapy 任务,在此提高为 10。另外一个是 bind_address,默认为本地 127.0.0.1,在此修改为 0.0.0.0,以使外网可以访问。
4. 后台运行
Scrapyd 是一个纯 Python 项目,这里可以直接调用它来运行。为了使程序一直在后台运行,Linux 和 Mac 可以使用如下命令:
1
(scrapyd > /dev/null &)
这样 Scrapyd 就会在后台持续运行了,控制台输出直接忽略。当然,如果想记录输出日志,可以修改输出目标,如:
1
(scrapyd > ~/scrapyd.log &)
此时会将 Scrapyd 的运行结果输出到~/scrapyd.log 文件中。
当然也可以使用 screen、tmux、supervisor 等工具来实现进程守护。
运行之后,便可以在浏览器的 6800 端口访问 Web UI 了,从中可以看到当前 Scrapyd 的运行任务、日志等内容,如图 1-85 所示。
图 1-85 Scrapyd 首页
当然,运行 Scrapyd 更佳的方式是使用 Supervisor 守护进程,如果感兴趣,可以参考:http://supervisord.org/。
另外,Scrapyd 也支持 Docker,后面我们会介绍 Scrapyd Docker 镜像的制作和运行方法。
5. 访问认证
配置完成后,Scrapyd 和它的接口都是可以公开访问的。如果想配置访问认证的话,可以借助于 Nginx 做反向代理,这里需要先安装 Nginx 服务器。
在此以 Ubuntu 为例进行说明,安装命令如下:
1
sudo apt-get install nginx
然后修改 Nginx 的配置文件 nginx.conf,增加如下配置:
1
2
3
4
5
6
7
8
9
10
http {
server {
listen 6801;
location / {
proxy_pass http://127.0.0.1:6800/;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
}
}
}
这里使用的用户名和密码配置放置在 /etc/nginx/conf.d 目录下,我们需要使用 htpasswd 命令创建。例如,创建一个用户名为 admin 的文件,命令如下:
1
htpasswd -c .htpasswd admin
接着就会提示我们输入密码,输入两次之后,就会生成密码文件。此时查看这个文件的内容:
1
2
cat .htpasswd
admin:5ZBxQr0rCqwbc
配置完成后,重启一下 Nginx 服务,运行如下命令:
1
sudo nginx -s reload
这样就成功配置了 Scrapyd 的访问认证了。
Python 网络
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。