Estamos implantando nosso aplicativo Rails em um servidor Ubuntu 10.04. Quando cap deploy:setup, há um erro dizendo que:
* executing "mkdir -p /vol/www/myapp /vol/www/myapp/releases /vol/www/myapp/shared /vol/www/myapp/shared/system /vol/www/myapp/shared/log /vol/www/myapp/sha
red/pids"
servers: ["11.15.69.45"]
Password:
[11.15.69.245] executing command
*** [err :: 11.15.69.45] mkdir: cannot create directory `/vol/www/myapp/releases'
a saída de ls -ld /vol/www é:
drwxr-xr-x 3 root root 4096 2011-11-22 04:35 /vol/www
Que tipo de direitos adicionais precisamos atribuir no servidor web e a qual subdiretório esses direitos precisam ser atribuídos?
Responder1
Parece haver alguma confusão sobre o seu problema aqui. A resposta de Andrew aborda o problema: "o servidor da Web tem as permissões adequadas para gravar diretamente no local em que você está implantando?"
No entanto, na verdade você está tendo problemas em um estágio anterior: implantar seu código no servidor. Nesta fase, não importa tanto se oservidor webpode escrever para /vol/www, mas se ousuário com o qual você está se conectandoquando você implanta, o código tem permissões para gravar nesse diretório.
A solução de Andrew ainda se aplica basicamente, mas de maneira um pouco diferente.
Eu recomendaria uma das seguintes abordagens:
Como você já configurou
/vol/www
para ser gravável pelowww-data
grupo, basta adicionar seu usuário a esse grupo:sudo usermod -aG www-data your-username
Ou você pode se tornar o proprietário e ter acesso dessa forma. Como você já configurou o acesso de grupo para o servidor web, alterar o proprietário do diretório não deve causar problemas no futuro.
sudo chown your-username /vol/www
Qualquer uma dessas opções deve dar ao usuário o acesso adequado para implantar o código e também preservar o acesso do servidor web a esse diretório.
Responder2
O usuário do servidor web no Ubuntu é www-data (a menos que você esteja executando o mod_suexec). Portanto, www-data precisa de permissão de gravação em/vol/www. Uma maneira de fazer isso é tornar www-data o proprietário:
chown www-data /vol/www
Ou você pode usar a propriedade e as permissões do grupo:
chgrp www-data /vol/www
chmod g+w /vol/www
Uma terceira maneira é com ACLs:
setfacl -m u:www-data:rwx /vol/www
getfacl /vol/www # to see the ACL grant