我在这里撕扯我的头发。我假设部署用户(在这种情况下为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%
在服务器上运行
ls -lR /tmp/<project_name>
输出
/tmp/<project-name>:
total 4
-rwxr-xr-x 1 root root 93 May 17 22:21 git-ssh.sh
答案 0 :(得分:0)
最后,我只需要通过运行
在git-ssh.sh文件上为我的部署用户'www-data'设置权限[
{
"uri": "/role/*number*",
"name": "*name*",
"description": "n/a"
}
]
答案 1 :(得分:0)
哇,我对此太迟了,但是我遇到了同样的问题,正在努力将一些旧代码从第2章迁移到第3章!
由于该文件夹位于/tmp
目录中,因此重新启动可能会清除您的问题。但是,从更深入的角度来看,更改文件所有权是一个解决方案,但是我认为简单地删除文件夹可能是一个更好的解决方案。我只说这是/tmp
文件夹,应该将其视为临时文件夹,主机可以在重新启动时将其清除。不知道文件的用途,或者理想的权限和所有权应该是什么,只需删除文件即可!
如果您像我一样,则需要进行大量的部署,每次部署时都会遇到问题,因为您试图找出所有上限任务。在某个时候,我敢打赌我们都更新了我们的部署用户,但是只有在我们尝试使用错误的用户集进行部署之后,我才敢打赌。这就是我们遇到权限问题的原因。