我目前对厨师和Capistrano是新手。 我正在使用Capistrano 3.x版来部署Rails 4应用程序。
我已经用厨师独奏成功引导了一个服务器。 我正在使用的一本食谱是Nginx。
回到我的简单的Rails 4应用程序,我试图运行这个命令来检查我的部署的状态:
cap production deploy:check
但是,它会抛出一些错误:
DEBUG [05e580a4] Command: /usr/bin/env mkdir -pv /var/www/shared /var/www/releases DEBUG [05e580a4] mkdir: cannot create directory `/var/www': Permission denied DEBUG [05e580a4] mkdir: cannot create directory `/var/www': Permission denied
我使用Capistrano的deploy用户,并在我的厨师节点configuration,我speficied deploy用户。 我也可以使用deploy用户login我的实例。
有没有适当的方法来解决厨师或卡皮斯特拉诺的权限?
打算部署到的目录应该已经存在,并具有正确的所有权和权限,然后再尝试运行Capistrano进行部署。 所以你需要事先处理,可能在你创build用户的同一个厨师食谱。
基本目录Capistrano正在部署的目录必须由Capistrano用户写入,因为Capistrano通常会创build该目录。
这里有一个风格/公约的说明。 /var/www不适合用作应用程序的基本目录。 在许多操作系统和发行版中, /var/www本身是由操作系统包创build和pipe理的,除了将典型的Capistrano发行版/当前/共享目录放在那里有点草率,它自己的权限可能会恢复,如果Web服务器相关的软件包升级或重新安装。 我build议你添加另一个层到你的目录结构,例如
/var/www/ruby_apps
然后在你的厨师食谱:
group 'deploy' user 'deploy' do group 'deploy' end directory '/var/www/ruby_apps' do user 'deploy' group 'deploy' end
现在让我们说你的应用程序叫squishy 。
在您的Rails应用程序的config/deploy.rb编辑:deploy_to行,如下所示:
set :deploy_to, '/var/www/ruby_apps/squishy'
..现在Capistrano将能够创build和维护squishy目录及其下的所有内容,以及任何其他应用程序,你想在ruby_apps下部署它。