允许使用“部署”用户进行编写

我目前对厨师和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下部署它。