在后台/作为服务运行 Scrapyd 的首选方式

Seb*_*ian 7 ubuntu scrapy scrapyd

我正在尝试在我通过 SSH 连接的虚拟 Ubuntu 16.04 服务器上运行 Scrapyd。当我通过简单地运行来运行scrapy

$ scrapyd
Run Code Online (Sandbox Code Playgroud)

我可以通过访问http://82.165.102.18:6800连接到 Web 界面。

但是,一旦我关闭 SSH 连接,Web 界面就不再可用,因此,我认为我需要以某种方式在后台运行 Scrapyd 作为服务。

经过一番研究,我发现了一些建议的解决方案:

  • 守护进程(sudo apt install 守护进程)
  • 屏幕(sudo apt 安装屏幕)
  • tmux (sudo apt install tmux)

有人知道最好/推荐的解决方案是什么吗?不幸的是,Scrapyd 文档相当单薄且过时。

对于某些背景,我每天需要运行大约 10-15 个蜘蛛。

Uma*_*air 12

将 ScrapyD 设置为系统服务

sudo nano /lib/systemd/system/scrapyd.service
Run Code Online (Sandbox Code Playgroud)

然后复制粘贴如下

[Unit]
Description=Scrapyd service
After=network.target

[Service]
User=<YOUR-USER>
Group=<USER-GROUP>
WorkingDirectory=/any/directory/here
ExecStart=/usr/local/bin/scrapyd

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

然后启用服务

systemctl enable scrapyd.service
Run Code Online (Sandbox Code Playgroud)

然后启动服务

systemctl start scrapyd.service
Run Code Online (Sandbox Code Playgroud)

另一种方法但不推荐

使用此命令。

cd /path/to/your/project/folder && nohup scrapyd >& /dev/null &
Run Code Online (Sandbox Code Playgroud)

现在您可以关闭 SSH 连接,但 scrapyd 将继续运行。

并确保无论何时您的服务器重新启动并且scrapyd 都会自动运行。做这个

echo $PATH从您的终端复制输出,然后通过以下方式打开您的 crontabcrontab -e

现在在该文件的最顶部,写下这个

PATH=YOUR_COPIED_CONTENT
Run Code Online (Sandbox Code Playgroud)

现在在你的 crontab 的末尾,写下这个。

@reboot cd /path/to/your/project/folder && nohup scrapyd >& /dev/null &
Run Code Online (Sandbox Code Playgroud)

这意味着,每次您的服务器重新启动时,上面的命令都会自动运行