我正在使用Capistrano v3使用带有nginx的独角兽将rails 4应用程序部署到VPS。
根据capistrano最新的官方文档,我设法设置了与部署本身相关的所有内容:
我使用宝石'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'配置为与服务器上的相同但我仍然得到相同的错误。
我的想法已经用完了,有人知道是什么原因引起的吗?
干杯。