如何在 Ubuntu 上将 sidekiq 作为守护进程运行?
如果我运行bundle exec sidekiq -D
我得到invalid option: -D
了,有没有什么方法可以在没有其他控制器的情况下运行它,比如上帝,暴发户......?
如何在 Ubuntu 上将 sidekiq 作为守护进程运行?
如果我运行bundle exec sidekiq -D
我得到invalid option: -D
了,有没有什么方法可以在没有其他控制器的情况下运行它,比如上帝,暴发户......?
有一个 Daemonize sidekiq 的选项,只需通过-d
选项
从 sidekiq 6.0 开始,守护进程将不起作用,如果您通过 -d,您将收到一条消息:
Sidekiq 6.0 中删除了守护模式,请使用适当的进程管理器来启动和管理您的服务
在此处检查问题#4045
sidekiq
如果意外崩溃,作为守护进程运行不会重新启动。另一种方法是将sidekiq 作为服务运行(一个新贵的工作)。如果系统重新启动,那么新贵作业也将运行 sidekiq。
这是将 sidekiq 作为服务运行的完整脚本和方法。
将 sidekiq 作为服务运行后,您可以start/stop/restart
通过命令简单地 sidekiq sudo service sidekiq start/stop/restart
。
不支持用于 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 sidekiq
、systemctl stop sidekiq
和来管理进程systemctl restart sidekiq
。
我们可以通过使用查看最后 100 行日志journalctl -u sidekiq -rn 100
。