2014-02-13 38 views
0

我需要我的capistrano部署幫助。如何避免永久停止我的capistrano部署?

所有過程做工精細,直到它到達永遠proccess推出。 永遠的進程已經啓動,但卡皮斯特拉諾進程仍然在這個任務。

這是我的任務:

desc 'Start application' 
    task :start do 
    on roles(:app), in: :sequence, wait: 5 do 
     execute "cd #{current_path} && NODE_ENV=#{fetch(:application_env)} PORT=#{fetch(:application_port)} forever start -l #{current_path}/logs/logs.log -e #{current_path}/logs/err.log -o #{current_path}/logs/out.log -a #{current_path}/app.js", raise_on_non_zero_exit: false 
    end 
    end 

我已經試過 「>的/ dev/null的2> & 1」 和 「&」 選項。

我只需要永遠proccess掛斷。 任何幫助將不勝感激。

+0

有沒有來自'forever'命令的輸出?你是否嘗試手動從shell運行它? – bredikhin

+0

是的,永遠爲非設置輸出兩個警告--minUptime和--spinSleepTime和和信息消息進程運行。 –

+0

什麼節點/ forever/linux版本?另外,您可以嘗試將'package.json'中的正確版本永久捆綁並從'node_modules'調用它。 – bredikhin

回答

0

舊的文章,但我知道這是我對其採取

而不是把NODE_ENV在你的任務,設置:default_env選項。

set :default_env, { NODE_ENV: "test" }

然後你可以用符號以exec。 execute :forever, "other options"

我也發現,有永遠的路徑怪癖,特別是當試圖設置一個pid文件。嘗試使用-p選項設置當前路徑,然後你不需要添加當前路徑除了上PIDFILE看來。

全部放在一起

set :default_env, {NODE_ENV: fetch(:application_env), ...} 

desc 'Start application' 
task :start do 
    on roles(:app), in: :sequence, wait: 5 do 
    execute :forever, "start -p #{release_path} -l logs/logs.log -e logs/err.log -o logs/out.log -a --pidFile #{release_path}/pidfile.pid app.js" 
    end 
end 

編輯:只要我打救我記得我不得不提,我的情況下,談論Capistrano的3你不是。