2017-03-27 22 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