标签: capistrano3

Capistrano错误tar:这看起来不像tar档案

 INFO [050fe961] Running mkdir -p /home/rails/rails-
capistrano/releases/20140114234157 on staging-rails
DEBUG [050fe961] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh mkdir -p /home/rails/rails-capistrano/releases/20140114234157 )
 INFO [050fe961] Finished in 0.142 seconds with exit status 0 (successful).
 INFO [2dea2fe5] Running git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 on staging-rails
DEBUG [2dea2fe5] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 )
DEBUG [2dea2fe5]    fatal: Not a valid object name
DEBUG [2dea2fe5]    tar: This does not …
Run Code Online (Sandbox Code Playgroud)

capistrano rvm-capistrano capistrano3

93
推荐指数
4
解决办法
1万
查看次数

如何在Capistrano v3上的服务器上运行shell命令?

我是Capistrano的新手,我尝试使用Capistrano的DSL在服务器上运行shell命令('run','execute'等),但它似乎已被弃用.在搜索并搜索功能等同物之后,我仍然迷失了.

当前代码:

desc 'Do something'
task :do_something
  execute 'echo sometext'
end
Run Code Online (Sandbox Code Playgroud)

输出:

    cap aborted!
    undefined method `execute' for main:Object
    /Users/Justin/Dropbox/xxxx/xxxx/xxxx/Capfile:45:in `block (2 levels) in <top (required)>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/lib/capistrano/application.rb:12:in `run'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/bin/cap:3:in `<top (required)>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `load'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `<main>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'
    Tasks: TOP => deploy:do_something
Run Code Online (Sandbox Code Playgroud)

ruby capistrano3

73
推荐指数
1
解决办法
5万
查看次数

Capistrano和环境变量

我已经切换到使用环境变量进行配置,它运行得很好 - 除非我必须使用capistrano部署或运行​​任务.

Capistrano 3似乎执行每个命令前缀,/usr/bin/env它会删除我设置的任何环境变量.bashrc.

编辑 - 在进行更多的研究时,这可能不是问题,问题可能是因为capistrano作为非登录,非交互式shell执行而且不加载.bashrc.bash_profile.但仍然陷入困境.

当capistrano执行任务时,确保设置环境变量的最佳方法是什么?

capistrano ruby-on-rails environment-variables capistrano3

42
推荐指数
3
解决办法
3万
查看次数

Ansible将ssh密钥从一个主机复制到另一个主机

我有2个app服务器,前面有一个loadbalancer,我的系统中有一个数据库服务器.我使用Ansible配置它们.应用程序服务器具有Nginx + Passenger并运行Rails应用程序.将使用capistrano进行部署,但我有一个关于ssh密钥的问题.我的git repo在另一台服务器上,我必须在appservers上生成ssh公钥并将它们添加到Git服务器(To authorized_keys文件).我怎样才能在ansible playbook中做到这一点?

PS:我可能有2台以上的app服务器.

在此输入图像描述

ssh ansible capistrano3 ansible-playbook

41
推荐指数
2
解决办法
5万
查看次数

部署后如何重启puma?

我正在使用Rails,Puma,Capistrano3.我也安装了宝石capistrano3-puma.我和Puma Jungle一起创办了Puma https://github.com/puma/puma/tree/master/tools/jungle/upstart

如何在部署期间重新启动Puma?

deployment ruby-on-rails puma capistrano3

36
推荐指数
3
解决办法
4万
查看次数

Capistrano 3在目录中执行

我正在尝试为Capistrano 3编写一个涉及在当前版本目录中执行"composer install"的任务.它看起来像这样:

namespace :composer do
  desc 'Install dependencies with Composer'
  task :install do
    on roles(:web) do
      within release_path do
        execute "#{fetch(:composer_command)} install"
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

composer_command 在登台和生产文件中设置 - 在我的特定情况下 php /home/user/composer.phar

由于某种原因,此命令实际上并不在当前版本目录中运行,而是在父目录中运行(包含当前,共享,发布等)

我深入研究了这一点,发现当我运行单个单词命令时,如:

within release_path do
    execute "pwd"
end
Run Code Online (Sandbox Code Playgroud)

它工作得很好,并在当前版本目录中运行该命令.但是......当我运行带空格的命令时,例如:

within release_path do
    execute "pwd && ls"
end
Run Code Online (Sandbox Code Playgroud)

它在父目录中运行,而不是在within块设置的目录中运行.

有人可以对此有所了解吗?谢谢!

ruby capistrano ruby-on-rails composer-php capistrano3

30
推荐指数
4
解决办法
2万
查看次数

Capistrano 3 sudo任务

我想用Capistrano 3编写一个配方,用sudo在远程服务器上执行任务.

使用Capistrano 2,可以这样做:

default_run_options[:pty] = true

task :hello do
  run "#{sudo} cp ~/something /something"
end
Run Code Online (Sandbox Code Playgroud)

有了Capistrano 3,我发现:

set :pty, true
Run Code Online (Sandbox Code Playgroud)

但我无法执行使用sudo运行的任务.

如何使用sudo运行任务?

capistrano ruby-on-rails capistrano3

30
推荐指数
3
解决办法
2万
查看次数

SSH代理转发无法正常工作

我正在努力配置Capistrano 3.1以部署托管在Github上的应用程序.

我正在关注Capistrano文档,我已成功完成第一步(从工作站到服务器的SSH密钥)和第二步(从我们的服务器到存储库主机)我能够成功运行ssh -A deploy@one-of-my-servers.com 'git ls-remote git@github.com:my_user/my_repo.git':

18f38afz261df35d462f7f4e2ca847d22f148a06    HEAD
18f38afz261df35d462f7f4e2ca847d22f148a06    refs/heads/master
Run Code Online (Sandbox Code Playgroud)

然而,ssh deploy@one-of-my-servers.com 'git ls-remote git@github.com:my_user/my_repo.git'失败了:

Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

Capistrano医生建议

如果您收到错误"主机密钥验证失败".登录到您的服务器并以部署用户ssh git@github.com命令运行,将github.com添加到已知主机列表中.

所以,我试过但是我明白了

ssh git@github.com
Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts.
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

我基本上无法成功访问Github仓库.

SSH文档说明:

-A      Enables forwarding of the authentication agent connection.  This
         can also be specified on a per-host basis in a configuration
         file.
Run Code Online (Sandbox Code Playgroud)

如何在配置文件中基于每个主机指定?

我的本地机器运行Mac OSX Mavericks.VPS运行Ubuntu 12.04 …

ssh github capistrano3

29
推荐指数
3
解决办法
2万
查看次数

如何将Capistrano与Docker集成进行部署?

我不确定我的问题是否相关,因为我可能会尝试混合不应混合的工具(Capistrano和Docker).

我最近使用Capistrano部署了一个部署的应用程序.Docker compose用于开发和登台环境.

这就是我的项目的样子(应用程序文件未显示):

Capfile
docker-compose.yml
docker-compose.staging.yml
config/
    deploy.rb
    deploy
        staging.rb
Run Code Online (Sandbox Code Playgroud)

Docker Compose文件创建了所有必要的容器(Nginx,PHP,MongoDB,Elasticsearch等),以便在开发或登台环境中运行应用程序(因此定义了一些特定的参数docker-compose.staging.yml).

使用以下命令将应用程序部署到登台环境:

cap staging deploy
Run Code Online (Sandbox Code Playgroud)

服务器上的文件夹架构是Capistrano之一:

current
releases
    20160912150720
    20160912151003
    20160912153905
shared
Run Code Online (Sandbox Code Playgroud)

已在current登台服务器的目录中运行以下命令,以实例化运行应用程序所需的所有容器:

docker-compose -f docker-compose.yml -f docker-compose.staging.yml up -d
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.在下一次部署时,事情变得更加复杂:current符号链接将指向目录的新releases目录:

  • 如果deploy.rb定义了需要在容器内执行的命令(比如docker-compose exec php composer installPHP),Docker会告诉容器尚不存在(因为现有的容器是在前一个发行版文件夹中创建的).
  • 如果docker-compose up -d在Capistrano部署过程中执行命令,由于端口冲突(前面的容器仍然存在),我会收到一些错误.

您对如何解决此问题有所了解吗?我是否应该离开卡皮斯特拉诺并做些不同的事情?

我们的想法是保持Capistrano提供的(近乎)零停机时间部署以及Docker容器的灵活性(例如,为同一服务器上的各种应用程序提供多个PHP版本).

deployment docker capistrano3 docker-compose

20
推荐指数
2
解决办法
8076
查看次数

Capistrano 3 SSHKit :: Runner :: ExecuteError:在host [hostname]代理上执行时发生异常无法使用请求的身份对数据进行签名

我将rails应用程序部署到ubuntu服务器时出现以下错误,我已正确设置ssh密钥,我可以ssh到服务器但是当我尝试做时我得到以下内容

 cap production deploy
Run Code Online (Sandbox Code Playgroud)

这是错误消息

cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing on host xxxxxx.xxxxxxx.xxx: agent could not sign data with requested identity
Run Code Online (Sandbox Code Playgroud)

自从我之前部署以来,我无法弄清楚我做错了什么,我只需要将我的应用程序更新为我所做的更改.自从我上次部署以来,我没有更改deploy.rb,Capfile或deploy/production.rb文件

ssh capistrano ruby-on-rails capistrano3

19
推荐指数
1
解决办法
9077
查看次数