第一次部署在Capistrano 3中失败,并出现/ var / www / XXX权限错误

时间:2014-06-26 01:41:51

标签: capistrano capistrano3

我正在通过cap staging deploy运行第一次部署到计算机。从Cap3开始,不再需要deploy:setup。然而,奇怪的是,我收到了mkdir权限错误:

 INFO[cb348f12] Running /usr/bin/env mkdir -pv /var/www/myapp/shared /var/www/myapp/releases on ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com
 DEBUG[cb348f12] Command: /usr/bin/env mkdir -pv /var/www/myapp/shared /var/www/myapp/releases
 DEBUG[cb348f12]    mkdir: 
 DEBUG[cb348f12]    cannot create directory ‘/var/www’
 DEBUG[cb348f12]    : Permission denied
 DEBUG[cb348f12]    
 DEBUG[cb348f12]    mkdir: 
 DEBUG[cb348f12]    cannot create directory ‘/var/www’
 DEBUG[cb348f12]    : Permission denied
 DEBUG[cb348f12]    
 cap aborted!
 SSHKit::Runner::ExecuteError: Exception while executing on host ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com: mkdir exit status: 1

当然,我可以自己去创建一个创建和chmod目录,但这不是重点。 Cap3应该照顾好自己。我很困惑为什么它不这样做。我还应该注意到,在使用另一台机器之前我已经成功完成了相同的设置(尽管那是"生产"环境)。

以下是我的deploy.rb中的一些基本设置:

 set :application, "myapp"
 set :user, 'ec2-user'

2 个答案:

答案 0 :(得分:0)

而不是创建以下目录结构:/var/www/myapp/shared/var/www/myapp/releases 尝试:/var/www/myapp/releases

答案 1 :(得分:0)

编辑:重新阅读您的问题,我发现您已经知道如何在服务器上创建文件夹并设置权限。

  

Cap3应该照顾好自己。我很困惑为什么   不这样做

不。如果提供给Cap3的用户没有创建文件夹的上限,则Cap3无法自动在服务器上创建文件夹。这里没有魔法只是unix权限。

在您的情况下,您提供的用户ec2-user无权在/var中创建导致错误的文件夹。


原始答案

检查服务器上是否存在/var/www文件夹。如果没有,则创建该文件夹并将其所有权设置为ec2-user,以便Capistrano可以在部署期间根据需要创建任何其他文件夹。

sudo mkdir -p /var/www sudo chown ec2-user:ec2-user /var/www

运行上述命令后,尝试使用capistrano再次部署。现在应该没有权限错误。