【问题标题】:Start Sidekiq on system boot up. Ubuntu 14.04在系统启动时启动 Sidekiq。 Ubuntu 14.04
【发布时间】:2015-12-23 07:11:01
【问题描述】:

我阅读了整个互联网,但无法做到这一点。需要在 VDS (Ubuntu 14.04) 启动时启动 Sidekiq。我找到并使用了这个:

# /etc/init/sidekiq.conf - Sidekiq config

# This example config should work with Ubuntu 12.04+.  It
# allows you to manage multiple Sidekiq instances with
# Upstart, Ubuntu's native service management tool.
#
# See workers.conf for how to manage all Sidekiq instances at once.
#
# Save this config as /etc/init/sidekiq.conf then manage sidekiq with:
#   sudo start sidekiq index=0
#   sudo stop sidekiq index=0
#   sudo status sidekiq index=0
#
# Hack Upstart's reload command to 'quiet' Sidekiq:
#
#   sudo reload sidekiq index=0
#
# or use the service command:
#   sudo service sidekiq {start,stop,restart,status}
#

description "Sidekiq Background Worker"

start on startup

#start on runlevel [2345]
stop on runlevel [06]

#start on startup


# change to match your deployment user
 setuid me
 setgid me
 env HOME=/home/me

respawn
respawn limit 3 30

# TERM is sent by sidekiqctl when stopping sidekiq. Without declaring these as
# normal exit codes, it just respawns.
normal exit 0 TERM

# Older versions of Upstart might not support the reload command and need
# this commented out.
reload signal USR1

instance $index

    script
# this script runs in /bin/sh by default
# respawn as bash so we can source in rbenv
exec /bin/bash <<'EOT'
  # Pick your poison :) Or none if you're using a system wide installed Ruby.
  # rbenv
  # source /home/apps/.bash_profile
  # OR
  # source /home/apps/.profile
  # OR system:
  # source /etc/profile.d/rbenv.sh
  #
  rvm
  source /usr/local/rvm/scripts/rvm

  # Logs out to /var/log/upstart/sidekiq.log by default

  cd /var/www/vk_c_watcher/code
  exec bundle exec sidekiq -i ${index} -e production
EOT
end script

添加后,我可以使用start sidekiq app="/var/www/vk_c_watcher/code" index=0 启动 Sidekiq。但重启时进程列表中没有 Sidekiq。

【问题讨论】:

  • nobilik,你解决了这个问题吗?
  • @JaredMenard 还没有,但考虑尝试运行级别。我忙于其他事情。
  • 如果我想出一个解决方案,我会在这里发布答案。
  • @JaredMenard 嗨,解决了! link

标签: ruby-on-rails ubuntu ubuntu-14.04 sidekiq upstart


【解决方案1】:

startup 事件在系统启动时触发,此时没有可写文件系统或网络可访问,可能它确实尝试启动,但崩溃甚至无法记录。

稍后运行它,例如在运行级别 2 或在其他依赖项(redis、您的数据库等)启动时触发的一些自定义事件

还要再次注释掉# rvm,这不是命令,而是带有source ... 的下一行的标签。

【讨论】:

  • for #rvm 我已经看到了。谢谢。其他的东西会尝试。
【解决方案2】:

感谢 Mike Perham 的帮助。我只是使用了错误的脚本。使用this script Sidekiq 在启动时启动。

【讨论】: