gpt4 book ai didi

ruby-on-rails - Foreman rvm upstart 不工作

转载 作者:行者123 更新时间:2023-12-04 03:40:43 26 4
gpt4 key购买 nike

Unicorn 不是由 upstart 脚本运行的。

rvm 1.25.23 ruby 2.1.1 rails 4.1

配置/部署.rb

  desc 'Foreman init'
task :foreman_init do
on roles(:all) do
foreman_temp = "/home/deployer/tmp/foreman"
execute "mkdir -p #{foreman_temp}"
execute "ln -s #{release_path} #{current_path}"
within current_path do
execute "cd #{current_path}"
execute :bundle, "exec foreman export upstart #{foreman_temp} -a #{application} -u deployer -l /home/deployer/apps/#{application}/log -d #{current_path}"
end
sudo "mv #{foreman_temp}/* /etc/init/"
sudo "rm -r #{foreman_temp}"
end
end

/etc/init/depl-web-1.conf
start on starting depl-web
stop on stopping depl-web
respawn

env PORT=5000

setuid deployer

chdir /home/deployer/apps/depl/current

exec bundle exec unicorn_rails -c /home/deployer/apps/depl/current/config/unicorn.rb -E production

/log/upstart/depl-web-1.log 和 production.log 清除

如果您转到应用程序的目录并手动运行命令
bundle exec unicorn_rails -c /home/deployer/apps/depl/current/config/unicorn.rb -E production

unicorn 成功上线。

如果在/etc/init/depl-web-1.conf exec 行添加端口

exec bundle exec unicorn_rails -p $PORT -c
/home/deployer/apps/depl/current/config/unicorn.rb -E production

错误:
/bin/sh: 1: exec: bundle: not found

我使用 rvm
which bundle
/home/deployer/.rvm/gems/ruby-2.1.1/bin/bundle
which rvm
/home/deployer/.rvm/bin/rvm

最佳答案

我最终做了一些类似于 Denis 的事情,除了每个 RVM 文档使用了 Ruby 包装器。这真的很烦人,但根据 top -cshift-M它正在工作。写半详细,因为我希望这对其他人有所帮助。

我的设置是:Digital Ocean、Ubuntu 14.10、Rails 4.0.x、Ruby 2.0.x、RVM 1.26.10。由于我使用的是Passenger 5+Nginx,因此我的Procfile 仅用于后台作业。部署用户是“rails”。我有一个名为“ruby-2.0.0-p598@rockin”的 gemset 用于我的名为“rockin”的应用程序,因为我在盒子上运行了多个应用程序。

添加绝对值 PATH bundle 对我不起作用。

这是我所做的:

  • 按照 docs 创建 rvm 包装器. (用户是rails)
    rvm alias create rockin ruby-2.0.0-p598@rockin
  • 为 RAILS_ENV 和 PATH 为包创建 .env 文件
    RAILS_ENV=production 
  • 试图将工头导出到 Upstart
    rvmsudo foreman export upstart /etc/init -a rockin -u rails
  • 由于另一个窗口中的 bundle 问题,决定拖尾日志作为健全性检查。 (用户是root)
    tail -f /var/log/upstart/rockin-worker-1.log
  • 手动更改 upstart 文件。我需要编辑的文件是 rockin-worker-1.conf .由于大部分内容都已格式化并具有我需要的内容,因此我使用上面创建的包装器更改了 exec 行以真正指向 bundle。
    start on starting rockin-worker
    stop on stopping rockin-worker
    respawn

    env PORT=5000
    env RAILS_ENV='production'

    setuid rails

    chdir /home/rails/rockin

    exec /usr/local/rvm/wrappers/rockin/bundle exec rake environment resque:work QUEUE=*
  • 运行!
    sudo start rockin-worker 
  • 您可以查看尾部日志,但如果您没有看到任何输出,那么您就可以开始了!然后通过做 top -c 来仔细检查顶部和 shift-M .我的 resque worker 启动并进入等待模式。完美的。

  • 这应该适用于使用 rvm 和其他后台工作人员(如 sidekiq)的任何人。

    对于任何说 PATH 可行的人,我都尝试了 which bundlewhereis bundle从我的应用程序的根目录,并将这些路径用于 .env 文件。两者都不起作用,并且都导致日志提示 /bin/sh: 1: exec: bundle: not found .

    关于ruby-on-rails - Foreman rvm upstart 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23307503/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com