Capistrano v3 を使用して、nginx でユニコーンを使用して Rails 4 アプリを VPS にデプロイしています。
カピストラーノの最新の公式ドキュメントに従って、展開自体に関連するすべてをセットアップすることができました。
私は宝石「capistrano」、「capistrano-bundler」、「capistrano-rails」、「capistrano-rvm」を使用していcap production deploy
ますが、エラーメッセージなしですべてが機能しているようです (リポジトリは github から取得され、サーバーにコピーされます。アセットはプリコンパイル済みなど)。
この時点で、ssh 経由でサーバーに接続して入力すると/etc/init.d/unicorn start
、サーバーは期待どおりに起動し、Rails アプリを提供します。
ただし、次のような capistrano v3 でこれを自動化するタスクを作成しました。
namespace :unicorn do
desc 'Start Unicorn'
task :start do
on roles(:app) do
within current_path do
execute "/etc/init.d/unicorn start"
end
end
end
desc 'Stop Unicorn'
task :stop do
on roles(:app) do
within current_path do
execute "/etc/init.d/unicorn stop"
end
end
end
end
しかし、私がしようとするたびにcapistrano deploy unicorn:start
、次のエラーが発生します:
/etc/init.d/unicorn: 1: eval: bundle: not found
cap aborted!
/etc/init.d/unicorn start stdout: Nothing written
/etc/init.d/unicorn start stderr: Nothing written
さらに奇妙なのは、ユニコーンを手動で起動してから実行すると、cap production unicorn:stop
シームレスに動作することです。
ssh経由でログインするときに使用可能な環境変数に違いがあると思われるため、「rvm_bin_path」、「path」、および「gem_path」をサーバーと同じになるように構成しましたが、それでも同じエラーが発生します。
私はアイデアが不足しています、誰がこれを引き起こす可能性があるか知っていますか?
乾杯。