如何在服务器上运行 Scrapyd

Seb*_*ian 2 ubuntu scrapy scrapyd scrapinghub

截至最近,Scrapinghub 的免费包中不再包含定期作业,这是我用来运行我的 Scrapy 爬虫的工具。

\n\n

因此,我决定改用Scrapyd。所以我继续建立了一个运行 Ubuntu 16.04 的虚拟服务器。(这是我第一次设置和运行服务器,所以请耐心等待)

\n\n

按照scrapyd.readthedocs.io上的说明,我使用 pip 安装了 Scrapyd:

\n\n
$ pip install scrapyd\n
Run Code Online (Sandbox Code Playgroud)\n\n

(那是在我发现 Ubuntu 的推荐方式(使用 apt-get)实际上不再受支持之后,请参阅Github)。

\n\n

然后我使用 SSH 登录到我的服务器,并通过简单地运行来运行 Scrapyd

\n\n
$ scrapyd\n
Run Code Online (Sandbox Code Playgroud)\n\n

据我所知,一切看起来都很好:

\n\n
2017-10-30 17:31:19+0000 [-] Log opened.\n2017-10-30 17:31:19+0000 [-] twistd 16.0.0 (/usr/bin/python 2.7.12) starting up.\n2017-10-30 17:31:19+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.\n2017-10-30 17:31:19+0000 [-] Site starting on 6800\n2017-10-30 17:31:19+0000 [-] Starting factory <twisted.web.server.Site instance at 0x7f644752bfc8>\n2017-10-30 17:31:19+0000 [Launcher] Scrapyd 1.2.0 started: max_proc=4, runner=u\'scrapyd.runner\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我访问我的 IP http://82.165.102.18:6800时,我希望看到一个 Web 界面(此处描述) 。

\n\n

相反,我只是收到错误消息“此站点可以\xe2\x80\x99t 被访问 82.165.102.18 拒绝连接。”

\n\n

当我尝试在本地运行 Scrapyd 时,一切正常,并且我在http://localhost:6800/处获得了 Web 界面。

\n\n

我尝试禁用防火墙(UFW),但这没有帮助。

\n\n

此时,我迷失了。如果您有任何想法,请告诉我!

\n\n

多谢!

\n

Tom*_*art 5

如果您可以在本地访问 Scrapyd 实例但不能通过网络访问,我怀疑 Scrapyd 仅在本地主机上侦听。请务必在您的中包含此行scrapyd.conf

bind_address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

它指示 Scrapyd 监听所有接口。bind_address默认为127.0.0.1,因此默认情况下它仅侦听本地主机。