Я использую Capistrano для развертывания на моем VPS (ubuntu, на Linode), и мне кажется, что для завершения части развертывания требуется пароль моего пользователя root. На мой взгляд, это нехорошо.
(Я использую nginx и Passenger.)
Я рекурсивно выбрал каталог развертывания и репозиторий git. Единственная аномалия в моем документе deploy.rb заключается в том, что он запускает установку пакета и rake db: migrate после развертывания: update_code.
Вот результат развернутого родственника (я полагаю) на запрос пароля root:
* executing `deploy'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "git ls-remote deploy@mydomain:~/myapp.git master"
* executing "if [ -d /home/apps/myapp/shared/cached-copy ]; then cd /home/apps/myapp/shared/cached-copy && git fetch origin && git reset --hard 8ea422656949f90cc27fd17cb31d68bbaeb33c6e && git clean -d -x -f; else git clone --depth 1 deploy@mydomain:~/myapp.git /home/apps/myapp/shared/cached-copy && cd /home/apps/myapp/shared/cached-copy && git checkout -b deploy 8ea422656949f90cc27fd17cb31d68bbaeb33c6e; fi"
servers: ["mydomain"]
[mydomain] executing command
** [mydomain :: out] root@mydomain's password:
Password:
Я не понимаю, зачем нужен пароль root, если команды направлены против каталогов chowned пользователя развертывания.
В целях безопасности я стремлюсь к тому, чтобы в процессе развертывания требовался только пароль пользователя развертывания. Я что-то не рассматриваю?
В вашем файле config / deploy.rb добавьте
`set :use_sudo, true`
и убедитесь, что ваш / etc / sudoers настроен правильно.
Каковы ваши настройки пользователей и групп в вашем config/deploy.rb
файл? Вы можете установить для них что-то вроде:
set :user, "deploy"
set :group, "deploygroup"
set :runner, "deploy"
Или установите их для любой непривилегированной учетной записи, которой вы хотите владеть деревом каталогов вашего приложения.