我正在部署Sharetribe应用程序。按照他们的文档,我需要运行bundle exec rake RAILS_ENV=production jobs:work
.问题是在执行此命令后,我需要关闭SSH
连接,为此我必须退出jobs
进程。
如何在后台运行bundle exec rake RAILS_ENV=production jobs:work
?
在启动时将背景集成到染色执行剂中。
为此,我们将使用 [systemd]。
- 在/etc/systemd/system/system/中创建文件 YourJob.service #The 文件将用于定义要在后台执行的代码。
- 运行命令"enable systemctl YourJob.service"
- 在任何此类目录 "/home/marketuser/bin/rakejob.sh"C 中创建.sh脚本文件
- 使用命令"status systemctl tmarketjob.service"检查了YourJob.service服务的执行状态
- 重新启动服务器。
文件结构。
# 您的工作服务
[Unit]
Description = Tmarket background processing daemon program
[Service]
Type = Single
ExecStart = / home / marketuser / bin / rakejob.sh
Restart = always
[Install]
WantedBy = graphical.target
# Rakejob.sh
!/垃圾桶/bash。
export PATH = / home / marketuser / bin: /home/marketuser/.nvm/versions/node/v6.1.0/bin: /home/marketuser/.rbenv/plugins/ruby-build/bin: / home / marketuser /. rbenv / shims: /home/marketuser/.rbenv/bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games
cd / var / www / tmarket /
exec rake jobs: work
[-] 通过执行控制台命令 'echo $ PATH' 来遵守 PATH。tmarket 是我们 RoR 应用程序的目录
- https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
你可以像任何其他控制台命令一样运行它,方法是使用nohup或在命令末尾添加&符号,但请注意,如果你关闭终端选项卡,解决方案将停止。
请将 gem "守护进程" 包含在您的 Gemfile 中。并使用以下命令
RAILS_ENV=生产脚本/delayed_job启动
有关更多信息,请查看延迟的作业 gem。