我正在尝试使用Capistrano部署Rails应用程序。 git repo正确检出,但正在运行
/usr/bin/env bundle --gemfile /var/www/my-app/releases/20131024150637/Gemfile --path /var/www/shared/bundle --deployment --quiet --binstubs /var/www/my-app/shared/bin --without development test
Capistrano发出以下错误
/usr/bin/env: bundle: No such file or directory
我有一个用于部署的部署用户。 以root身份运行命令,但作为部署用户,我得到了
Errno::EACCES: Permission denied - /var/www/my-app/shared/bin/rake
An error occurred while installing rake (10.0.4), and Bundler cannot
continue.
Make sure that `gem install rake -v '10.0.4'` succeeds before bundling.
deploy@Ubuntu-1204-precise-64-minimal:~$ Errno::EACCES: Permission denied - /var/www/my-app/shared/bin/rake
似乎问题是bin继承了组所有权的写权限,但rake没有
drwxrwsr-x 2 root deploy 4096 Oct 25 00:15 bin
-rwxr-xr-x 1 root deploy 391 Oct 24 23:57 rake
在capistranorb.com教程之后我做了
root@remote $ mkdir ${deploy_to}
root@remote $ chown deploy:deploy ${deploy_to}
root@remote $ umask 0002
root@remote $ chmod g+s ${deploy_to}
root@remote $ mkdir ${deploy_to}/{releases,shared}
因此,在/ var / www / my-app / shared中创建的所有文件都应该是该组可写的。
实际上,在手动设置权限后,似乎还有另一个问题:我现在可以在部署时正确执行bundle命令,但仍然可以获得
cap aborted!
bundle stdout: Nothing written
bundle stderr: Nothing written
没有任何错误消息
我正在使用Rails 3.2.12,ruby 2.0.0和Ubuntu 12.04