Capistrano部署失败,使用scp:/tmp/ <project_name> /git-ssh.sh:权限被拒绝

时间:2016-05-18 16:44:38

标签: git deployment ssh capistrano

我在这里撕扯我的头发。我假设部署用户(在这种情况下为www-data)没有足够的权限来创建必要的目录。或者这是一个与SSH相关的问题?

我正在使用Capistrano 3.5部署到Ubuntu 15.10。

这是完整的痕迹

00:00 git:wrapper
      01 mkdir -p /tmp/project_name/
    ✔ 01 www-data@88.xxx.xxx.xxxx
(Backtrace restricted to imported tasks)
cap aborted!
scp: /tmp/project_name/git-ssh.sh: Permission denied

Tasks: TOP => git:check => git:wrapper
(See full trace by running task with --trace)
The deploy has failed with an error: scp: /tmp/project_name/git-ssh.sh: Permission denied

** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:  

  INFO ---------------------------------------------------------------------------
  INFO START 2016-05-18 17:34:33 +0100 cap production deploy
  INFO ---------------------------------------------------------------------------
  INFO [a283be11] Running /usr/bin/env mkdir -p /tmp/project_name/ as www-data@88.xxx.xxx.xx
 DEBUG [a283be11] Command: /usr/bin/env mkdir -p /tmp/project_name/
  INFO [a283be11] Finished in 2.160 seconds with exit status 0 (successful).
 DEBUG Uploading /tmp/project_name/git-ssh.sh 0.0%

编辑Kenster

在服务器上运行

ls -lR /tmp/<project_name>

输出

/tmp/<project-name>:
total 4
-rwxr-xr-x 1 root root 93 May 17 22:21 git-ssh.sh

2 个答案:

答案 0 :(得分:0)

最后,我只需要通过运行

在git-ssh.sh文件上为我的部署用户'www-data'设置权限
[
  {
    "uri": "/role/*number*",
    "name": "*name*",
    "description": "n/a"
  }
]

答案 1 :(得分:0)

哇,我对此太迟了,但是我遇到了同样的问题,正在努力将一些旧代码从第2章迁移到第3章!

由于该文件夹位于/tmp目录中,因此重新启动可能会清除您的问题。但是,从更深入的角度来看,更改文件所有权是一个解决方案,但是我认为简单地删除文件夹可能是一个更好的解决方案。我只说这是/tmp文件夹,应该将其视为临时文件夹,主机可以在重新启动时将其清除。不知道文件的用途,或者理想的权限和所有权应该是什么,只需删除文件即可!

如果您像我一样,则需要进行大量的部署,每次部署时都会遇到问题,因为您试图找出所有上限任务。在某个时候,我敢打赌我们都更新了我们的部署用户,但是只有在我们尝试使用错误的用户集进行部署之后,我才敢打赌。这就是我们遇到权限问题的原因。