在Ubuntu上运行Sidekiq作为守护进程

时间:2013-03-20 10:14:19

标签: ruby-on-rails ruby daemon sidekiq

如何在Ubuntu上运行sidekiq作为守护进程?

如果我运行bundle exec sidekiq -D我得到invalid option: -D,有没有办法在没有其他控制器的情况下运行它,比如上帝,新贵......?

4 个答案:

答案 0 :(得分:28)

可以选择Daemonize sidekiq,只需传递-d选项

commit

答案 1 :(得分:6)

如果守护程序意外崩溃,则作为守护程序运行将不会重新启动sidekiq。另一种方法是将sidekiq作为服务运行(新手工作)。如果重新启动系统,则upstart作业将运行sidekiq。 Here是将sidekiq作为服务运行的完整脚本和方法。

将sidekiq作为服务运行后,您可以通过命令start/stop/restart简单地sudo service sidekiq start/stop/restart sidekiq。

答案 2 :(得分:1)

从sidekiq 6.0开始,守护进程将无法正常工作,如果您通过-d,您将收到一条消息:

  

守护进程模式已在Sidekiq 6.0中删除,请使用适当的流程管理员来启动和管理您的服务

在此处#4045

检查问题

答案 3 :(得分:1)

不支持将Sidekiq 6或更高版本作为后台程序运行为Unix的守护进程。相反,我们必须将流程作为服务运行。

根据您的捆绑器位置编写脚本,或者您可以修改以下代码段并将其复制到/usr/lib/systemd/system(CentOS)或/lib/systemd/system(Ubuntu)

[Unit]
Description=sidekiq

After=syslog.target network.target

[Service]

Type=notify
WatchdogSec=10
WorkingDirectory=/home/deploy/apps/project_name

# If you use rbenv:
# ExecStart=/bin/bash -lc 'exec /home/deploy/.rbenv/shims/bundle exec sidekiq -e production'
# If you use the system's ruby:
# ExecStart=/usr/local/bin/bundle exec sidekiq -e production
# If you use rvm in production, don't.

#ExecStart=/home/deploy/.rvm/wrappers/ruby-2.6.5/bundle exec sidekiq -e production

# Use `systemctl kill -s TSTP sidekiq` to quiet the Sidekiq process
# !!! Change this to your deploy user account !!!

User=deploy

Environment=MALLOC_ARENA_MAX=2

# if the script crash, restart
RestartSec=1
Restart=on-failure

# output goes to /var/log/syslog (Ubuntu) or /var/log/messages (CentOS)
StandardOutput=syslog
StandardError=syslog

# This will default to "bundler" if we don't specify it
SyslogIdentifier=sidekiq
[Install]
WantedBy=multi-user.target

请确保为ExecStart提供了正确的捆绑程序路径,以便开始该过程。将其另存为sidekiq.service并运行systemctl enable sidekiq。然后,我们可以使用命令systemctl start sidekiqsystemctl stop sidekiqsystemctl restart sidekiq管理该过程。

我们可以使用journalctl -u sidekiq -rn 100查看日志的最后100行。