Capistrano mkdir 权限被拒绝

Posted

技术标签:

【中文标题】Capistrano mkdir 权限被拒绝【英文标题】:Capistrano mkdir permission denied 【发布时间】:2014-08-19 16:01:00 【问题描述】:

当我运行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 一样显式启用它。

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

    在 Capistrano 中启用 sudo 在 Ubuntu 中启用 sudo

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

【问题讨论】:

【参考方案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/

以上是关于Capistrano mkdir 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

升级到 macOS 10.12 (Sierra) 后,使用 Capistrano 部署代码时出现问题,“权限被拒绝(公钥)”。

Capistrano:我可以为整个 cap 会话设置一个环境变量吗?

错误:EACCES:权限被拒绝,mkdir '/.npm'

PHP mkdir:权限被拒绝问题

如何修复错误:mkdir():运行作曲家时权限被拒绝

React Native Ios 错误:权限被拒绝,mkdir