【问题标题】:Deploying Symfony2 with Capifony使用 Capifony 部署 Symfony2
【发布时间】:2013-06-25 12:09:22
【问题描述】:

我在使用 capifony 将 symfony2 应用程序部署到我的服务器时遇到问题。我试图用 git 直接拉到我的服务器上,这很有效。

这是我的 deploy.rb 文件

# Sylius default deployment configuration.

# Capifony documentation: http://capifony.org
# Capistrano documentation: https://github.com/capistrano/capistrano/wiki

# Be more verbose by uncommenting the following line
# logger.level = Logger::MAX_LEVEL

set :application, "myapp"
set :domain,      "xx.xx.xx.xx"
set :deploy_to,   "/home/user"
set :user,        "user"

role :web,        domain
role :app,        domain
role :db,         domain, :primary => true

set :scm,         :git
set :repository,  "user@xxx.xxx.xxx.xx:/var/www/user/user.git"
set :branch,      "master"
set :deploy_via,  :remote_cache

ssh_options[:forward_agent] = true

set :use_composer,   true
set :update_vendors, true

set :dump_assetic_assets, true

set :writable_dirs,     ["app/cache", "app/logs"]
set :webserver_user,    "www-data"
set :permission_method, :acl

set :shared_files,    ["app/config/parameters.yml", "web/.htaccess", "web/robots.txt"]
set :shared_children, ["app/logs"]

set :model_manager, "doctrine"

set :use_sudo,    false

set :keep_releases, 3


before 'symfony:composer:update', 'symfony:copy_vendors'

namespace :symfony do
  desc "Copy vendors from previous release"
  task :copy_vendors, :except => { :no_release => true } do
    if Capistrano::CLI.ui.agree("Do you want to copy last release vendor dir then do composer install ?: (y/N)")
      capifony_pretty_print "--> Copying vendors from previous release"

      run "cp -a #{previous_release}/vendor #{latest_release}/"
      capifony_puts_ok
    end
  end
end

after "deploy:update", "deploy:cleanup"
after "deploy", "deploy:set_permissions"

这是我的错误

failed: "sh -c 'if [ -d /home/user/shared/cached-copy ]; then cd /home/user/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard f90495dc7d5c62d1bc61415b5c10b762a7e96ee6 && git clean -q -d -x -f; else git clone -q -b master user@xx.xx.xx.xx:/var/www/user/user.git /home/user/shared/cached-copy && cd /home/user/shared/cached-copy && git checkout -q -b deploy f90495dc7d5c62d1bc61415b5c10b762a7e96ee6; fi'" on xxx.xxx.xxx.xxx

我也尝试通过 ssh 在我的服务器上直接运行它,效果很好。

有什么想法吗?谢谢

【问题讨论】:

  • 开启详细错误并提供更详细的错误消息。 ... sh ,用户权限,git fetch,git reset,git clean,git clone,git checkout ...所有可能的原因
  • 现在我得到了这个:** [xxx.xx.xx.xx :: err] 权限被拒绝,请重试。 ** [xxx.xx.xx.xx::err] 权限被拒绝,请重试。 ** [xxx.xx.xx.xx:: err] 权限被拒绝(公钥、密码)。 ** [xxx.xx.xx.xx :: err] 致命:远端意外挂断
  • 您的密码或公钥错误...这就是您的部署失败的原因。
  • 密码与 SSH 登录相同。我在我的服务器上通过 ssh 登录没有任何问题:(
  • 是您尝试部署到的服务器或您的 git 存储库引发的错误吗?

标签: symfony deployment capistrano capifony


【解决方案1】:

您似乎没有设置 SSH 密码。将设置放入您的 deploy.rb(不推荐)或让 capifony 询问您:

#set :password,    "password"             # the ssh password 
set(:password){ Capistrano::CLI.password_prompt("Type your SSH password for user \"#{user}\": ") }

如果您使用deploy.rb 中的logger.level 设置提高日志详细级别,则更容易找到导致部署失败的原因。

# IMPORTANT = 0
# INFO      = 1
# DEBUG     = 2
# TRACE     = 3
# MAX_LEVEL = 3
logger.level = Logger::MAX_LEVEL

(documentation)

【讨论】:

  • 是的,我做到了,但现在我有了这个:** [xxx.xx.xx.xx :: err] 权限被拒绝,请重试。 ** [xxx.xx.xx.xx::err] 权限被拒绝,请重试。 ** [xxx.xx.xx.xx:: err] 权限被拒绝(公钥、密码)。 ** [xxx.xx.xx.xx :: err] 致命:远端意外挂断
  • 查看我对您问题的评论。错误的密码/公钥...仔细检查您的凭据!
  • 好的,现在我有新的错误:) 命令 git ls-remote user@xxx.xxx.xxx.xx:/var/www/user/user.git HEAD 返回状态码 32768
  • 这是另一个问题,如果对您有帮助,请先接受我对此的回答 - 可以在此处找到新问题的解决方案:stackoverflow.com/questions/2293212/…
  • hm... 仍然没有:( 为用户“xxxxx”输入您的 SSH 密码:[xxx.xxx.xxx.xx] 执行命令 ** [xxx.xxx.xxx.xx :: err ] stdin: is not a tty ** [xxx.xxx.xxx.xx :: err] Permission denied, please try again. ** [xxx.xxx.xxx.xx :: err] Permission denied, please try again. * * [xxx.xxx.xxx.xx :: err] Permission denied (publickey,password). ** fatal: 远端意外挂断
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 2014-04-13
相关资源
最近更新 更多