2017-03-27 25 views
0

到目前为止,我有一个简单的应用程序,只需要经典的rails server引导。添加乘客工头

我最近添加了react_on_rails gem,它需要引导一个nodejs服务器来处理webpack和javascript的东西。

所以我明白我需要这个能够管理多个进程的gem。到目前为止好,但后来我还在了解和部署这种增强的应用程序,以我的生产环境(在Apache/Nginx的乘客的Phusion)

所以几个问题几个问题:

  • 确实乘客扶手自动从rails s过渡到foreman start -f Procfile.dev
  • 如果no那么我在哪里安装东西,以便乘客工作?
  • 侧面问题:几乎所有的谷歌搜索结果在寻找foreman on passenger时都参考puppet。任何人都可以解释puppet在1行中的作用,如果我真的需要它在生产?到目前为止,所有的事情顺利运行在与foreman start -f Procfile.dev命令本地主机,所以我不知道这是哪里来的?

我使用Capistrano的部署我的应用程序到Amazon云,我期待有rails + nodejs设置在每个自动实例上(并且Passenger会优雅地处理所有这些)。我在想错吗?

回答

0

在我们的生产环境中,我们使用eye来管理与rails应用程序相关的其他进程。 (乘客将mod_passenger运行,而工人们正在用眼睛控制)

这里是如何开始4名并发queue_classic工人的例子:

APP_ROOT = File.expand_path(File.dirname(__FILE__)) 
APP_NAME = File.basename(APP_ROOT) 

Eye.config do 
    logger File.join(APP_ROOT, "log/eye.log") 
end 

Eye.application APP_NAME do 
    working_dir File.expand_path(File.dirname(__FILE__)) 
    stdall 'log/trash.log' # stdout,err logs for processes by default 
    env 'RAILS_ENV' => 'production' # global env for each processes 
    trigger :flapping, times: 10, within: 1.minute, retry_in: 10.minutes 

    group 'qc' do 
    1.upto(4) do |i| 
     process "worker-#{i}" do 
     stdall "log/worker-#{i}.log" 
     pid_file "tmp/pids/worker-#{i}.pid" 

     start_command 'bin/rake qc:work' 

     daemonize true 
     stop_on_delete true 
     end 
    end 
    end 
end