使用简单的食谱测试capistrano。
$ cap deploy:setup
* executing `deploy:setup'
* executing "sudo -p 'sudo password: ' mkdir -p /u/apps/ [..]
[..]
deploy:setup
表现得很好。
然而
$ cap deploy:check
* executing `deploy:check'
* executing "test -d /u/apps/[..]
[..]
运行deploy:check
时出现以下错误:
The following dependencies failed. Please check them and try again:
--> You do not have permissions to write to `/u/apps/
[..]
--> `/u/apps/app/shared is not writable [..]
似乎capistrano在deploy:check
模式下没有使用sudo。
我没理解!
在deploy:setup
中,整个目录结构是由capistrano创建的,没有任何问题?
为什么capistrano不像deploy:check
那样使用sudo?
答案 0 :(得分:2)
我也遇到了这个问题,结果发现capistrano正在创建<user>
组下的所有文件夹,但共享文件夹除外。 SSH到您的服务器上并进行长列表ls -l
。如果你看到 - root - root - 共享文件夹,你只需要更新文件夹的权限:
sudo chown <user> shared
sudo chgrp <user> shared
答案 1 :(得分:1)
我遇到same issue:诀窍是明确配置Capistrano不要使用sudo
。
您可以在deploy.rb
文件中将其关闭:
set :use_sudo, false
如果您需要使用sudo,请在命令中使用sudo DSL Action Invocation:
run "#{sudo} apachectl restart"