在Ubuntu 14.04上使用Capistrano部署Rails应用程序时,我收到以下错误:
fatal: destination path '/var/www/APP-NAME/repo' already exists and is not an empty directory.
cf5a389e] Running /usr/bin/env [ -f /var/www/rd/repo/HEAD ] on LINODE-INSTANCE-IP
DEBUG[cf5a389e] Command: [ -f /var/www/rd/repo/HEAD ]
DEBUG[cf5a389e] Finished in 0.005 seconds with exit status 1 (failed).
DEBUG[8899b95c] Running /usr/bin/env if test ! -d /var/www/rd; then echo "Directory does not exist '/var/www/rd'" 1>&2; false; fi on LINODE-INSTANCE-IP
DEBUG[8899b95c] Command: if test ! -d /var/www/rd; then echo "Directory does not exist '/var/www/rd'" 1>&2; false; fi
DEBUG[8899b95c] Finished in 0.005 seconds with exit status 0 (successful).
INFO[fc5f524b] Running /usr/bin/env git clone --mirror GIT_REPO_URL /var/www/APP-NAME/repo on LINODE-INSTANCE-IP
DEBUG[fc5f524b] Command: cd /var/www/APP-NAME && ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rd/git-ssh.sh /usr/bin/env git clone --mirror GIT-REPO-URL /var/www/APP-NAME/repo )
DEBUG[fc5f524b] fatal: destination path '/var/www/APP-NAME/repo' already exists and is not an empty directory.
以下是配置文件:
我可以在线找到此错误的only reason;
同一主持人担任多个角色,以便他们参加比赛?例如,我的意思是您可能不止一次将相同的IP地址定义为:app角色主机。
我猜这不适合上面的配置文件。
答案 0 :(得分:12)
我遇到了同样的问题。原因在于角色和/或服务器的双重定义。 尝试删除
server 'SERVER-IP', user: 'USERNAME', roles: %w{app}
在production.rb和
中role :app, "SERVER-IP"
在deploy.rb中。后者似乎只是简单的语法,而前者 - 是扩展的一个,所以你实际上你声明了两次角色(三次更精确:在production.rb中为2,在deploy.rb中为1)。希望它有所帮助。
答案 1 :(得分:0)
相关说明,在我的一个部署中更改数据库连接文件设置时遇到了这个问题。
在这种情况下,旧结构有一个共享的数据库设置文件,而新结构有两个共享文件。即使在配方中声明了这些内容,但在自动删除旧版本时仍会出错。
为解决此问题,我只是删除了较早的版本,并运行了cap [server name] deploy
几次以清除它,并确认不再发生这种情况。到目前为止,还好。