在Capistrano 3中创建linked_dirs失败

时间:2016-02-15 08:58:35

标签: capistrano capistrano3

我正在尝试使用SilverStripe版本设置Capistrano,并且遇到了设置共享目录的一些麻烦。

我使用以下内容在 deploy.rb 中设置了linked_dirs:

set :linked_dirs, %w{assets vendor}

由于添加此行,我收到以下错误:

[617afa7f] Command: /usr/bin/env mkdir -p /var/www/website/releases/20160215083713 /var/www/website/releases/20160215083713
INFO [617afa7f] Finished in 0.250 seconds with exit status 0 (successful).
DEBUG [88c3de20] Running /usr/bin/env [ -L /var/www/website/releases/20160215083713/assets ] as capistrano@128.199.231.152
DEBUG [88c3de20] Command: [ -L /var/www/website/releases/20160215083713/assets ]
DEBUG [88c3de20] Finished in 0.258 seconds with exit status 1 (failed).
DEBUG [3d61c1c4] Running /usr/bin/env [ -d /var/www/website/releases/20160215083713/assets ] as capistrano@128.199.231.152
DEBUG [3d61c1c4] Command: [ -d /var/www/website/releases/20160215083713/assets ]
DEBUG [3d61c1c4] Finished in 0.254 seconds with exit status 1 (failed).
INFO [3016a8cd] Running /usr/bin/env ln -s /var/www/website/shared/assets /var/www/website/releases/20160215083713/assets as capistrano@128.199.231.152

当涉及到服务器配置和权限时,我对Capistrano和半菜鸟来说是一个巨大的菜鸟,所以任何指针都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

它可能实际上并没有失败。关于Capistrano的一件事是,(success)(failed)实际上返回exit status的结果,(success)如果为0,(failed)如果非0。

如果我们查看有问题的命令,它会说/usr/bin/env [ -L /var/www/website/releases/20160215083713/assets ]失败了。如果/var/www/website/releases/20160215083713/assets存在并且是链接(-L),则此命令说"返回0。这会失败,但这只是意味着它返回非0,因此需要创建链接。请注意,下一个命令也会失败(-d),断言路径是目录。输出中的最后一行实际上是在创建相关链接。

您可以在此处查看Capistrano代码库中的测试:https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/deploy.rake#L128

您可以使用https://github.com/mattbrictson/airbrussh清理和简化输出。这是由一个主要的Capistrano开发者开发的。

作为旁注,类似地,终端中的所有绿色文本都是stdout,红色文本是stderr。这也可能令人困惑。