3

用一个简单的食谱测试 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 不使用 sudo deploy:check

4

2 回答 2

2

我也遇到了这个问题,结果发现 capistrano 正在创建<user>组下的所有文件夹,共享文件夹除外。SSH 到您的服务器并进行长列表ls -l。如果您看到 - root - root - 共享文件夹,您只需要更新文件夹的权限:

sudo chown <user> shared
sudo chgrp <user> shared
于 2013-03-28T15:49:23.990 回答
1

我遇到了同样的问题:诀窍是明确配置 Capistrano 不使用sudo。你可以在你的文件
中关闭它:deploy.rb

set :use_sudo, false

如果你需要使用 sudo,那么在你的命令中使用sudo DSL Action Invocation怎么样:

run "#{sudo} apachectl restart"
于 2013-03-05T00:13:50.250 回答