我对此进行了大量搜索,它可能有一个我想念的简单解决方案。
我在本地计算机和服务器上都安装了scrapy + scrapyd。当我尝试“scrapyd”时,它们都可以正常工作。
我可以毫无问题地部署到本地,我也可以从浏览器访问localhost:6800,我可以在本地运行蜘蛛。
在远程运行scrapyd之后,我尝试使用与本地部署相同的方式部署到http://remoteip:6800/,
我明白了,
Packing version 1500333306
Deploying to project "projectX" in http://remoteip:6800/addversion.json
Deploy failed: <urlopen error [Errno 111] Connection refused>
我也无法从本地PC访问http://remoteip:6800/,但我可以从远程PC上的ssh访问(有卷曲)
我在远程服务器上打开了入站和出站连接,我还缺少什么?
由于
答案 0 :(得分:6)
检查防火墙是否已启用,通过运行(在Ubuntu上)
禁用它sudo ufw disable
理想情况下,只允许tcp连接到6880而不是禁用防火墙,这样做
sudo ufw allow 6800/tcp
sudo ufw reload
检查scrapyd.conf
请设置
bind_address=0.0.0.0
而不是
bind_address=127.x.x.x
0.0.0.0
将使scrapyD可以访问服务器/实例外部的传入连接,而不仅仅是localhost。
然后停止scrapyD,我killall scrapyd
停止scrapyd
然后使用命令scrapyd
注意:
如果您希望在与服务器断开连接后保持scrapyd
运行,请执行此操作
nohup scrapyd >& /dev/null &
答案 1 :(得分:0)
我知道这个答案可能会晚,但是我希望它可以帮助像我这样的人。
从官方documentation起,它将在以下位置搜索配置文件: 因此,您需要创建一个 这是示例配置文件,其中包含文档中的所有默认值: 您需要做的是:将bind_address更改为0.0.0.0
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 = 4
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