用upstart脚本来守护sidekiq是行不通的



我试图按照这个例子使用两个upstart脚本来守护sidekiq。基本上,workers服务启动固定数量的sidekiq服务。

问题是sidekiq脚本在我启动sidekiq的代码行失败。我试过在bash中直接运行这个命令,它工作得很好。

我试了所有不同的注释行,没有一个工作。

所以我的问题是我做错了什么?在哪里可以看到错误消息?

这是我修改过的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 mange sidekiq with:
#   sudo start sidekiq index=0
#   sudo stop sidekiq index=0
#   sudo status sidekiq index=0
#
# or use the service command:
#   sudo service sidekiq {start,stop,restart,status}
#
description "Sidekiq Background Worker"
respawn
respawn limit 15 5
# no "start on", we don't want to automatically start
stop on (stopping workers or runlevel [06])
# TERM and USR1 are sent by sidekiqctl when stopping sidekiq.  Without declaring these    as normal exit codes, it just respawns.
normal exit 0 TERM USR1
instance $index
script
exec /bin/bash <<EOT
  # use syslog for logging
  # exec &> /dev/kmsg
  # pull in system rbenv
  # export HOME=/home/deploy
  # source /etc/profile.d/rbenv.sh
  cd /home/rails
  touch /root/sidekick_has_started
  sidekiq -i ${index} -e production
  # exec sidekiq -i ${index} -e production
  # exec /usr/local/rvm/gems/ruby-2.0.0-p353/gems/sidekiq-3.1.3/bin/sidekiq -i ${index} -e production
  touch /root/sidekick_has_started_2
EOT
end script

您是对的,RVM环境是需要加载的。试试这个:

.....    
.....
script
exec /bin/bash <<EOT
  #export HOME=/home/deploy
  source /usr/local/rvm/environments/ruby-2.0.0-p353@global
  cd /home/rails
  exec sidekiq -i ${index} -e production
.....    
.....

它工作吗?

最新更新