【问题标题】:Capistrano 3 Permission DeniedCapistrano 3 权限被拒绝
【发布时间】:2014-04-08 17:32:56
【问题描述】:

我正在将应用程序从 capistrano 版本 2 转换为版本 3,现在我收到此错误:

DEBUG [7095ead3] Running /usr/bin/env git ls-remote git@myapp.git.beanstalkapp.com:/myapp/myapp.git on myapp.com
DEBUG [7095ead3] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/myapp.com/git-ssh.sh /usr/bin/env git ls-remote git@myapp.git.beanstalkapp.com:/myapp/myapp.git )
DEBUG [7095ead3]        fatal: cannot exec '/tmp/myapp.com/git-ssh.sh': Permission denied
DEBUG [7095ead3]        fatal: unable to fork
DEBUG [7095ead3] Finished in 0.195 seconds with exit status 128 (failed).

我怎样才能克服这个问题?

【问题讨论】:

  • 您能否使用 capistrano 将应用程序直接克隆到服务器中?请检查该选项,因为 .ssh 配置中可能存在错误
  • 是的,你是对的,我实际上无法从服务器运行命令。这是在 capistrano 2 中从未做过的新事物吗?就像 cap 2 结帐代码在本地然后推送到服务器一样?
  • 再想一想,我不一定能够在服务器上运行该命令,因为当我在我的开发机器上运行它时,我有选项 forward_agent: true 设置它传递我的凭据(包括密钥)在运行命令时向服务器发送。
  • 我可以看到您的 GIT_SSH 正在尝试在 /tmp 中进行克隆,我不确定您的服务器 /tmp 上是否允许执行可执行文件和脚本,您可以在 /home/ 中创建您的 tmp 目录吗? user> 看看是否有帮助..
  • 可以,但是如何修改 capistrano 任务,让它知道使用我指定的 tmp 目录?

标签: ruby-on-rails ruby capistrano capistrano3


【解决方案1】:

我遇到了这个问题,通过阅读这个网站(https://community.webfaction.com/questions/15144/capistrano-3-deploys-fatal-error-executing-tmpmyappgit-sshsh)解决了这个问题

所以,这就是我的尝试

  • 在您的 HOME 目录中创建 tmp 目录
  • 我在我的 .bashrc 中添加了

    导出 TMPDIR="$HOME/tmp"

  • 在deploy.rb中,添加这个

    set :tmp_dir, "#{fetch(:home)}/tmp"

然后,再次尝试限制生产部署,它对我有用,希望对你也有用! :D

【讨论】:

  • 为什么需要在 .bashrc 中添加 TMPDIR 变量?
  • 由于某些原因fetch(:home) 对我不起作用。在我的配置中,使用 fetch(:stage) 是有意义的,我这样做了。
  • 我也得回家了:set :home, '/home/mysite'set :tmp_dir, "#{fetch(:home)}/tmp"
【解决方案2】:

我相信这是 Capistrano 内部的一个错误。您必须从 :application 变量中删除空格。

点击此处了解更多信息: https://github.com/capistrano/capistrano/issues/778

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多