当我cap production deploy
使用 Capistrano 3.0.1 时,我正在尝试启动或重新启动 Unicorn。我有一些使用 Capistrano 2.x 的示例,例如:
namespace :unicorn do
desc "Start unicorn for this application"
task :start do
run "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/myapp.conf.rb -D"
end
end
但是当我尝试run
在deploy.rb
for Capistrano 3.x 中使用时,我得到一个未定义的方法错误。
以下是我尝试过的几件事:
# within the :deploy I created a task that I called after :finished
namespace :deploy do
...
task :unicorn do
run "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/myapp.conf.rb -D"
end
after :finished, 'deploy:unicorn'
end
我也尝试将运行放在 :restart 任务中
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
# Your restart mechanism here, for example:
# execute :touch, release_path.join('tmp/restart.txt')
execute :run, "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/deployrails.conf.rb -D"
end
end
如果我run "cd ... " then I'll get a
在本地 shell 中使用了错误数量的参数(1 代表 0)`。
unicorn -c /etc/unicorn/deployrails.conf.rb -D
我可以从我的 ssh'd VM shell启动独角兽进程。
我可以使用 kill USR2 从 VM shell 中杀死主 Unicorn 进程,但即使进程被杀死,我也会收到错误消息。然后我可以再次使用unicorn -c ...
$ kill USR2 58798
bash: kill: USR2: arguments must be process or job IDs
总的来说,我对 Ruby、Rails 和 Deployment 很陌生。我有一个带有 Ubuntu、Nginx、RVM 和 Unicorn 的 VirtualBox 设置,到目前为止我很兴奋,但是这个真的让我很困惑,任何建议或见解都值得赞赏。