标签: capistrano

你首选的php部署策略是什么?

我正在开始使用PHP开发一个新项目,我很乐意从其他开发人员那里获得有关他们首选的PHP部署策略的反馈.我希望自动化一些事情,以便一旦提交更改,就可以将它们快速迁移到开发或生产服务器.

我有使用Capistrano和Ruby进行部署的经验以及一些基本的shell脚本.

在我第一次独自潜水之前,听听其他人在他们的项目中如何处理这个问题会很棒.

更多的信息

目前,开发人员处理站点的本地安装并将更改提交到subversion存储库.通过从svn导出标记版本并将其上载到服务器来进行初始部署.

通常通过手动上载更改的文件来进行其他更改.

php deployment capistrano

160
推荐指数
5
解决办法
7万
查看次数

Capistrano - 清理旧版本

通常在使用capistrano时,我会从已部署的应用程序中手动删除旧版本.我知道你可以运行,cap deploy:cleanup但仍然有5个版本.这是它的目的吗?还有另一种方法可以将旧版本清理到之前的1次部署吗?

capistrano

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

使用capistrano从不同的git分支部署

我正在使用capistrano来部署RoR应用程序.代码库位于git存储库中,分支广泛用于开发.Capistrano使用deploy.rb文件进行设置,其中一个是要部署的分支.

我的问题是这样的:比方说,我创建了一个新的分支一个.部署文件将引用master分支.我编辑它,所以可以部署A来测试环境.我完成了该功能,并将分支A合并到主服务器中.由于deploy.rb从文件一个是新鲜的,它被合并了,现在deploy.rb分支引用一个.是时候再次编辑了.

这是很多看似不必要的手动编辑 - 参数应始终与当前分支名称匹配.最重要的是,每次都很容易忘记编辑设置.

什么是自动化这个过程的最佳方法?

编辑:结果已经完成了我所需要的人:

今天早上我有机会将一个git存储库的一个分支部署到一个临时服务器,但是没有最模糊的想法.通过capistrano源代码快速搜索显示我可以:branch "branch_name"在部署脚本中使用set .我尝试了它,它的工作原理.然后我想我需要对所有分支进行类似的更改.当然,我是一个懒惰的草皮,并想知道是否有更好的方法.

如果您不熟悉git,git branch命令的输出是一个带有星号的分支列表,标记当前在本地计算机上签出的星号.例如:

> git branch
* drupal_authentication
fragment_caching
master
Run Code Online (Sandbox Code Playgroud)

所以,我想,如果我只是解析输出并搜索标记为当前的分支:

set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
Run Code Online (Sandbox Code Playgroud)

现在,我可以从单个共享的部署脚本部署本地计算机上当前的任何分支.

git capistrano

120
推荐指数
8
解决办法
7万
查看次数

如何从Capistrano运行rake任务?

我已经有一个deploy.rb可以在我的生产服务器上部署我的应用程序.

我的应用程序包含一个自定义rake任务(lib/tasks目录中的.rake文件).

我想创建一个能够远程运行该rake任务的上限任务.

ruby rake capistrano

101
推荐指数
8
解决办法
6万
查看次数

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食谱中"角色"的目的和功能是什么?当我查看样本食谱时,我经常会看到这样的事情:

role :app, 'somedomain.com'
role :web, 'somedomain.com'
role :db,  'somedomain.com', :primary => true
Run Code Online (Sandbox Code Playgroud)

所以看起来角色基本上是Capistrano执行命令的服务器.如果是这种情况,那为什么它会被称为"角色"而不是"主机"或"服务器"?

在上面的例子中,角色:app:web角色之间有什么区别?

:primary => true选项有什么作用?

ruby capistrano ruby-on-rails

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

Bundler:您正在尝试在更改Gemfile后以部署模式安装

我对bundler和capistrano很新,我试图将它们一起使用.当我尝试部署时,我收到消息:

您正在尝试在更改Gemfile后以部署模式安装.在别处运行`bundle install'并将更新的Gemfile.lock添加到版本控制.

我不知道如何满足抱怨的系统,我不明白为什么抱怨会出现,因为我在文档中读到:

如果Gemfile.lock确实存在,并且您已更新Gemfile(5),则bundler将使用Gemfile.lock中的依赖项来处理您未更新的所有gem,但会重新解析您更新的gem的依赖项.您可以在CONSERVATIVE UPDATING下找到有关此更新过程的更多信息.

我认为这意味着Bundler可以处理我的Gemfile不是它预期的事实.有帮助吗?

规格:Ruby 1.9.3,Rails 3.2.3,Capistrano 2.12.0,Bundler 1.1.4,Windows 7,部署到Posix机器.

编辑:我的Gemfile包含如下逻辑块:

unless RbConfig::CONFIG['host_os'] === 'mingw32'
  # gem 'a' ...
end
Run Code Online (Sandbox Code Playgroud)

capistrano ruby-on-rails bundler

82
推荐指数
7
解决办法
5万
查看次数

为什么捆绑器不会安装JSON gem?

尝试运行时出现以下错误cap production deploy.

DEBUG [dc362284]    Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284]    An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284]    Make sure that `gem install json -v '1.8.1'` succeeds before bundling.
Run Code Online (Sandbox Code Playgroud)

值得注意的是,此部署正在运行,而不是我升级到Ruby 2.1.0以消除编码错误.我本地升级,工作正常.我跑rvm install 2.1.0,并rvm use 2.1.0随后改变了我的.ruby-version文件,以反映该红宝石升级.

bundle install命令在本地工作,但当我ssh到目标服务器并运行此命令时,会产生相同的上述错误.

如果我跑,gem list我可以在宝石列表中看到这一点.

...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...
Run Code Online (Sandbox Code Playgroud)

如果我在gem install json -v '1.8.1'本地服务器上尝试推荐的解决方案,并在目标服务器上获得以下输出:

Building native extensions.  This could …
Run Code Online (Sandbox Code Playgroud)

gem capistrano ruby-on-rails bundler

80
推荐指数
11
解决办法
11万
查看次数

如何使用capistrano回滚以前部署的版本?

我尝试使用"上限回滚"但我收到以下错误:

$ cap回滚

任务"回滚"不存在

我需要做一些额外的设置才能让回滚工作吗?

capistrano

77
推荐指数
4
解决办法
6万
查看次数

如何在Ubuntu中使用宝石?

我最近升级到Ubuntu 9.04,我有使用宝石的问题.我使用apt-get安装了Ruby,Rubygems和Rails.该rails命令确实有效.

然后我安装了capistrano和其他宝石,比如heroku.为了做到这一点,我使用了命令:

sudo gem install XXX
Run Code Online (Sandbox Code Playgroud)

当我想使用该cap命令时,它不起作用:

bash: cap: command not found
Run Code Online (Sandbox Code Playgroud)

它与其他gem命令相同.

我有特别的事情可以让gem命令工作吗?

ruby ubuntu capistrano rubygems ruby-on-rails

76
推荐指数
2
解决办法
6万
查看次数