我的capistrano部署需要帮助。
所有过程都可以正常工作,直到它完成永久过程。 永远的进程已经启动,但是卡斯特拉诺过程仍然在完成这项任务。
这是我的任务:
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”和“&”选项。
我需要永远的过程挂断。 任何帮助将不胜感激。
答案 0 :(得分: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
编辑:一旦我点击保存,我记得我不得不提到我在谈论卡皮斯特拉诺3,以防你不是。