我正在使用 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"
或者将它们设置为您想要拥有应用程序目录树的任何非特权帐户。