我正在通过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'
答案 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再次部署。现在应该没有权限错误。