Capistrano 部署失败,scp: /tmp/<project_name>/git-ssh.sh: 权限被拒绝
Capistrano deploy failing with scp: /tmp/<project_name>/git-ssh.sh: Permission denied
我在这里撕破了头发。我假设部署用户,在本例中为 www-data
,没有足够的权限创建必要的目录。或者这是与 SSH 相关的问题?
我正在使用 Capist运行o 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
最后我只需要通过 运行
在 git-ssh.sh 文件上为我的部署用户 'www-data' 设置权限
chown www-data /tmp/project_name/git-ssh.sh
哇,我来晚了,但我 运行 遇到了同样的问题,正在努力将一些遗留代码从 cap 2 迁移到 cap 3!
因为该文件夹位于 /tmp
目录中,所以重新启动可能会解决您的问题。但进一步看问题,改变文件所有权是一个解决方案,但简单地删除文件夹我认为可能是一个更好的解决方案。我之所以这样说,是因为 /tmp
文件夹应该被视为临时文件夹,并且可以在主机重新启动时清除。不知道文件的用途,或者理想的权限和所有权应该是什么,只需删除文件!
如果您像我一样,会进行大量部署,运行 解决每次部署的问题,同时尝试找出所有上限任务。在某些时候,我敢打赌我们都更新了我们的部署用户,但只是在我们尝试使用错误的用户集进行部署之后。这就是我们遇到权限问题的原因。
我在这里撕破了头发。我假设部署用户,在本例中为 www-data
,没有足够的权限创建必要的目录。或者这是与 SSH 相关的问题?
我正在使用 Capist运行o 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
最后我只需要通过 运行
在 git-ssh.sh 文件上为我的部署用户 'www-data' 设置权限 chown www-data /tmp/project_name/git-ssh.sh
哇,我来晚了,但我 运行 遇到了同样的问题,正在努力将一些遗留代码从 cap 2 迁移到 cap 3!
因为该文件夹位于 /tmp
目录中,所以重新启动可能会解决您的问题。但进一步看问题,改变文件所有权是一个解决方案,但简单地删除文件夹我认为可能是一个更好的解决方案。我之所以这样说,是因为 /tmp
文件夹应该被视为临时文件夹,并且可以在主机重新启动时清除。不知道文件的用途,或者理想的权限和所有权应该是什么,只需删除文件!
如果您像我一样,会进行大量部署,运行 解决每次部署的问题,同时尝试找出所有上限任务。在某些时候,我敢打赌我们都更新了我们的部署用户,但只是在我们尝试使用错误的用户集进行部署之后。这就是我们遇到权限问题的原因。