使用foreman export的Upstart脚本使用了错误的ruby版本

时间:2015-07-28 18:13:02

标签: ruby-on-rails sidekiq upstart foreman

我刚刚将我的应用程序部署到生产服务器,但看起来我添加到.procfile(foreman)的每个进程都没有启动。细节: 我使用的是Rails 4.0.12,工头 0.78.0, sidekiq 3.4.2和发条 1.2.0。我正在使用 Capistrano ,我已经定义了一个任务,可以在 Ubuntu 14.02 上将procfile导出为 upstart 服务。但是,当我启动该服务时,不会处理任何后台作业。当我查看该upstart服务的日志文件时,我只看到以下内容:

 Your ruby version is 1.9.3, but your Gemfile specified 2.1.2

应用程序正在运行,我可以在sidekiq仪表板上看到没有处理任何内容。基于错误消息,看起来我正在执行我的procfile错误。我尝试了多种执行方案,但似乎没有任何工作。我的.procfile目前看起来像这样:

worker: rbenv sudo bundle exec sidekiq -C config/sidekiq.yml -e production
clock: rbenv sudo bundle exec clockwork config/clock.rb

导出的upstart脚本的一部分如下所示:

start on starting aaa-clock
stop on stopping aaa-clock
respawn

env PORT=5100

setuid da_admin

chdir /var/www/aaa/releases/20150728172635

exec rbenv sudo bundle exec clockwork config/clock.rb

如果我在bash中单独尝试最后两个命令,它可以工作,但是当我启动服务“sudo service aaa start”或“rbenv sudo service aaa start”时,它不起作用。

deploy.rb 的一部分,我将导出我的upstart服务:

namespace :foreman do
  desc "Export the Procfile to Ubuntu's upstart scripts"
  task :export do
    on roles(:app) do
      within release_path do        
        execute :rbenv, "sudo bundle exec foreman export upstart /etc/init -a #{fetch(:application)} -u #{fetch(:user)} -l #{current_path}/log -f #{release_path}/Procfile"   
      end
    end
  end

  desc "Start the application services"
  task :start do
    on roles(:app) do
      execute :rbenv, "sudo service #{fetch(:application)} start"      
    end
  end

  desc "Stop the application services"
  task :stop do
    on roles(:app) do
      execute :rbenv, "sudo service #{fetch(:application)} stop"      
    end
  end

  desc "Restart the application services"
  task :restart do
    on roles(:app) do     
      execute :rbenv, "sudo service #{fetch(:application)} restart"
    end
  end
end

有人知道可能出现什么问题吗?我怀疑,这在环境配置中会出现一些错误。提前感谢您的时间。

修改

问题出现在新贵脚本的环境中,类似的问题指出了我正确的方向: foreman issue foreman another issue

我必须使用各种环境变量的配置创建.env文件。现在它至少开始了(其他错误出现了,但它们与此问题无关)。

项目目录根目录中的.env文件示例:

PATH=/home/user/.rbenv/versions/2.1.2/bin:/usr/bin
RAILS_ENV=production
HOME=/home/user

0 个答案:

没有答案