【问题标题】:Capistrano mkdir permission deniedCapistrano mkdir 权限被拒绝
【发布时间】:2023-03-22 14:40:01
【问题描述】:

当我运行cap production deploy 时,我得到cannot create directory ‘/var/www/application/repo’: Permission denied

到目前为止,我已经创建了部署用户,例如:

adduser deploy
adduser deploy sudo

我在 Capistrano 中使用这个用户。

确实,当我登录到deploy@my.vps.ip 时,默认情况下我没有sudo 权限,每次我需要像sudo su 一样显式启用它。

我看到了两种可能的解决方案:

  1. 在 Capistrano 中启用 sudo
  2. 在 Ubuntu 中启用 sudo

不幸的是,我不知道怎么做。

【问题讨论】:

    标签: ubuntu deployment capistrano sudo vps


    【解决方案1】:

    这里有同样的错误,遵循GoRails“在 2019 年将 Ruby on Rails 部署到生产”的好教程,在那里他创建了一个用户“deploy”并设置在“home/deploy”中部署应用程序。 不要忘记您必须使用在服务器上创建的用户名。 所以部署的目录是“home/USERNAME”。

    【讨论】:

    • 请解释一下,因为链接可能有一天会失效。
    【解决方案2】:

    感谢 Bob Roberts。

    我认为这应该是一个答案,因为它很容易错过您的评论。我知道我错过了几次。

    sudo chown -R deploy:deploy /var/www/
    

    或者你的用户名是什么

    sudo chown -R username:username /var/www/
    

    【讨论】:

      【解决方案3】:

      默认情况下,Capistrano 3 部署到/var/wwwdeploy 用户不可写。您需要使用以下命令将/var/www 的所有权更改为deploy 用户。

      sudo chown deploy:deploy /var/www/
      

      在此之后,您应该能够在没有权限错误的情况下部署您的应用程序。

      【讨论】:

      • 如果有人在使用 Amazon EC2 sudo chown ec2-user:ec2-user /var/www/
      • 您很可能需要使用 -R 以便所有子目录都归部署用户所有:sudo chown -R deploy:deploy /var/www/