Symfony CapiMony任务部署:更新\u代码提取文件失败
我正在尝试将我的应用程序部署到与Capifony共享的1&1主机上 我正在使用Symfony CapiMony任务部署:更新\u代码提取文件失败,symfony,capistrano,symfony-2.3,capifony,Symfony,Capistrano,Symfony 2.3,Capifony,我正在尝试将我的应用程序部署到与Capifony共享的1&1主机上 我正在使用deploy\u via:'copy'策略 我的部署在deploy:update\u code任务中失败 capifony输出: --> Updating code base with copy strategy * getting (via checkout) revision to /tmp/20140120140204 executing locally: cp -R . /tmp/20140
deploy\u via:'copy'
策略
我的部署在deploy:update\u code
任务中失败
capifony输出:
--> Updating code base with copy strategy
* getting (via checkout) revision to /tmp/20140120140204
executing locally: cp -R . /tmp/20140120140204
command finished in 242ms
* Compressing /tmp/20140120140204 to /tmp/20140120140204.tar.gz
executing locally: tar czf 20140120140204.tar.gz 20140120140204
command finished in 1428ms
servers: ["MyApp"]
** sftp upload /tmp/20140120140204.tar.gz -> /tmp/20140120140204.tar.gz
[MyApp] /tmp/20140120140204.tar.gz
[MyApp] done
* sftp upload complete
* executing "cd /kunden/homepages/16/XXX/htdocs/MyApp/releases && tar xzf /tmp/20140120140204.tar.gz && rm /tmp/20140120140204.tar.gz"
servers: ["MyApp"]
[MyApp] executing command
** [out :: MyApp] tar (child): /tmp/20140120140204.tar.gz: Cannot open: No such file or directory
** [out :: MyApp] tar (child): Error is not recoverable: exiting now
** [out :: MyApp] tar:
** [out :: MyApp] Child returned status 2
** [out :: MyApp]
** [out :: MyApp] tar:
** [out :: MyApp] Error is not recoverable: exiting now
** [out :: MyApp]
command finished in 148ms
*** [deploy:update_code] rolling back
问题:
--> Updating code base with copy strategy
* getting (via checkout) revision to /tmp/20140120140204
executing locally: cp -R . /tmp/20140120140204
command finished in 242ms
* Compressing /tmp/20140120140204 to /tmp/20140120140204.tar.gz
executing locally: tar czf 20140120140204.tar.gz 20140120140204
command finished in 1428ms
servers: ["MyApp"]
** sftp upload /tmp/20140120140204.tar.gz -> /tmp/20140120140204.tar.gz
[MyApp] /tmp/20140120140204.tar.gz
[MyApp] done
* sftp upload complete
* executing "cd /kunden/homepages/16/XXX/htdocs/MyApp/releases && tar xzf /tmp/20140120140204.tar.gz && rm /tmp/20140120140204.tar.gz"
servers: ["MyApp"]
[MyApp] executing command
** [out :: MyApp] tar (child): /tmp/20140120140204.tar.gz: Cannot open: No such file or directory
** [out :: MyApp] tar (child): Error is not recoverable: exiting now
** [out :: MyApp] tar:
** [out :: MyApp] Child returned status 2
** [out :: MyApp]
** [out :: MyApp] tar:
** [out :: MyApp] Error is not recoverable: exiting now
** [out :: MyApp]
command finished in 148ms
*** [deploy:update_code] rolling back
如何解决此问题?capistrano v2
问题源于您缺少共享主机上的/tmp
目录的权限
您可以使用以下方法更改临时上载目录:
set :copy_remote_dir, deploy_to # upload to the deploy dir instead of /tmp
现在capistrano/capifony将上传到一个可以再次读取的位置
卡皮斯特拉诺v3
copy\u remote\u dir
在capistrano v3中不可用
中引入的
tmp\u dir
变量。我认为问题来自sftp上传功能
它尝试在从我的用户目录开始的路径中上载
~/kunden/homepages/16/XXX/htdocs/MyApp/
/kunden/homepages/16/XXX/htdocs/MyApp/
并尝试从服务器根目录开始的路径中提取存档
~/kunden/homepages/16/XXX/htdocs/MyApp/
/kunden/homepages/16/XXX/htdocs/MyApp/
在不更改临时上载的情况下,我必须创建目录:
~/tmp
我使用scp函数解决了这个问题。
只需在deploy.rb文件末尾添加以下内容:
module UseScpForDeployment
def self.included(base)
base.send(:alias_method, :old_upload, :upload)
base.send(:alias_method, :upload, :new_upload)
end
def new_upload(from, to)
old_upload(from, to, :via => :scp)
end
end
Capistrano::Configuration.send(:include, UseScpForDeployment)
sftp上传/tmp/20140120140240240204.tar.gz->/tmp/20140120140240240204.tar.gz
->sftp上传完成
。文件未上载到~/tmp
,而是/tmp
。您没有/tmp
的读取权限(看起来只有写入权限),因此提取失败。我看到该文件已上载到~/tmp
。并且我的用户具有/tmp