Scrapyd是一个用于部署和运行Scrapy项目的工具,有了它,你能够将写好的Scrapy项目上传到云主机并经过API来控制它的运行。html
既然是Scrapy项目部署,基本上都使用Linux主机,因此本节的安装是针对于Linux主机的。python
这里推荐使用pip安装,命令以下:nginx
pip3 install scrapyd
安装完毕以后,须要新建一个配置文件/etc/scrapyd/scrapyd.conf,Scrapyd在运行的时候会读取此配置文件。git
在Scrapyd 1.2版本以后,不会自动建立该文件,须要咱们自行添加。github
首先,执行以下命令新建文件:web
sudo mkdir /etc/scrapyd sudo vi /etc/scrapyd/scrapyd.conf
接着写入以下内容:json
[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,以使外网能够访问。浏览器
Scrapyd是一个纯Python项目,这里能够直接调用它来运行。为了使程序一直在后台运行,Linux和Mac可使用以下命令:服务器
(scrapyd > /dev/null &)
这样Scrapyd就会在后台持续运行了,控制台输出直接忽略。固然,若是想记录输出日志,能够修改输出目标,如:app
(scrapyd > ~/scrapyd.log &)
此时会将Scrapyd的运行结果输出到~/scrapyd.log文件中。
固然也可使用screen、tmux、supervisor等工具来实现进程守护。
运行以后,即可以在浏览器的6800端口访问Web UI了,从中能够看到当前Scrapyd的运行任务、日志等内容,如图1所示。
图1Scrapyd首页
固然,运行Scrapyd更佳的方式是使用Supervisor守护进程,若是感兴趣,能够参考:http://supervisord.org/。
另外,Scrapyd也支持Docker,后面咱们会介绍Scrapyd Docker镜像的制做和运行方法。
配置完成后,Scrapyd和它的接口都是能够公开访问的。若是想配置访问认证的话,能够借助于Nginx作反向代理,这里须要先安装Nginx服务器。
在此以Ubuntu为例进行说明,安装命令以下:
sudo apt-get install nginx
而后修改Nginx的配置文件nginx.conf,增长以下配置:
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的文件,命令以下:
htpasswd -c .htpasswd admin
接着就会提示咱们输入密码,输入两次以后,就会生成密码文件。此时查看这个文件的内容:
cat .htpasswd admin:5ZBxQr0rCqwbc
配置完成后,重启一下Nginx服务,运行以下命令:
sudo nginx -s reload
这样就成功配置了Scrapyd的访问认证了。