Capistrano 需要 root 密码才能部署 - 不好

Capistrano 需要 root 密码才能部署 - 不好

我正在使用 Capistrano 部署到我的 VPS(Ubuntu,在 Linode 上),它似乎需要我的 root 用户密码才能完成部分部署。在我看来,这并不好。

(我正在使用 nginx 和 Passenger。)

我已经递归地 chown 了部署目录和 git 存储库。我的 deploy.rb 文档中唯一的异常是,我在 deploy:update_code 之后运行了 bundle install 和 rake db:migrate。

以下是相对于 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:

我不明白为什么当命令针对部署用户的 chowned 目录时需要 root 的密码。

为了安全起见,我希望部署过程只需要部署用户的密码。有什么我没有考虑到的吗?

答案1

在您的 config/deploy.rb 文件中添加

`set :use_sudo, true`

并确保你的 /etc/sudoers 设置正确。

答案2

您的config/deploy.rb文件中的用户和组设置是什么?您可能希望将它们设置为以下内容:

set :user, "deploy"
set :group, "deploygroup"
set :runner, "deploy"

或者将它们设置为您想要拥有应用程序目录树的任何非特权帐户。

相关内容