- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个生产系统,其中有多个具有多个角色的服务器。我想通过部署到特定服务器来测试新的应用程序服务器,而不必重新部署到生产中的每个服务器。有没有办法让 Capistrano 部署到特定服务器?理想情况下,我希望能够运行类似的东西
cap SERVER=app2.example.com ROLE=app production deploy
如果我只想部署到 app2.example.com。
谢谢!
[更新]我通过执行以下命令尝试了 wulong 建议的解决方案:
cap HOSTS=app2.server.hostname ROLE=app qa deploy
但除了应用程序任务之外,capistrano 似乎还尝试在该服务器上执行其他角色的任务。也许我需要更新我的 cap 版本(我正在运行 v2.2.0)?
最佳答案
我最终在 capistrano 用户列表上发布了一个问题 here ,并得到了 Jamis 的以下回复(为了清楚起见,我在这里做了一些编辑):
<小时/>尝试 HOSTS 环境变量:
cap HOSTS=app2.example.com production deploy
请注意,这样做会将 app2 视为存在于每个角色中,而不仅仅是无论它恰好在哪个角色中声明。
如果您想要进行常规部署,但仅作用于 app2,并且仅当 app2 在您的配方文件中声明时,您才可以使用 HOSTFILTER变量代替:
cap HOSTFILTER=app2.example.com production deploy
[...]
考虑这个具体的例子。假设你的脚本定义了三个服务器 A、B 和 C。它定义了一个任务“foo”,(默认情况下)想要在 A 和 B 上运行,但不在 C 上运行。如下所示:
role :app, "A", "B"
role :web, "C"
task :foo, :roles => :app do
run "echo hello"
end
现在,如果您执行 cap foo
,它将在 A 和 B 上运行 echo 命令。
如果你执行cap HOSTS=C foo
,它将在C上运行echo命令,无论任务的 :roles 参数如何。
如果你cap HOSTFILTER=C foo
,它不会运行echo命令全部,因为 (A B) 和 (C) 的交集是空集。 (那里foo 的主机列表中没有与 C 匹配的主机。)
如果您cap HOSTFILTER=A foo
,它将仅在A,因为(A B)与(A)相交是(A)。
最后,如果你执行cap HOSTFILTER=A,B,C foo
,它将运行 echo对 A 和 B(但不能对 C)执行命令,因为 (A B) 与 (A B C) 相交是(A B)。
总结:HOSTS 完全覆盖主机或角色声明任务,并强制所有内容针对指定主机运行。另一方面,HOSTFILTER 只是过滤现有主机根据给定的列表,仅选择那些已经存在的服务器任务服务器列表。
关于deployment - 如何使用 Capistrano 部署到单个特定服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429816/
我是 Capistrano 的新手,我想知道为我的项目管理 Capistrano 配置的最佳方法是什么。 具体应该在哪里config/deploy.rb与我的项目的源代码控制相关吗?我应该存储没有特定
我正在使用 Capistrano 管理在多个负载平衡服务器上运行的 Java Web 应用程序。某些任务(例如配置更改)需要重新启动服务器或重新部署应用程序,在此期间服务器变得无响应。 如果 Capi
有没有办法可以看到 capistrano 任务依赖树?我有一个大项目,有很多任务和依赖项,但我对整个画面一无所知。 帕纳约蒂斯 最佳答案 在 Capistrano 3 中,您可以添加 --trace
我有一个命名空间和一些在 deploy:updated 之后运行的命名空间中的任务。下面是一个例子: namespace :myservice do task :start do on r
我想在运行 deploy:migrate 任务之前停止一些进程。我知道我可以通过复制现有代码并在任务的开头和结尾添加停止/启动步骤来重新定义 deploy:migrate 任务。 我想知道是否有办法避
我将如何更改 Capistrano 使用的临时目录? 示例:代替 /tmp ,我想用/home/user/tmp 我现在的 VPS 有 /tmp安装为 noexec ,这使我在尝试运行时获得了权限被拒
使用 Capistrano,如何回滚到特定版本? 我服务器的文件夹有一个/release 文件夹,我如何回滚到特定的文件夹? 我是否可以在本地获取计算机上的版本列表? 我正在使用 GIT,但这不起作用
我尝试使用“cap rollback”,但出现以下错误: $ cap rollback the task `rollback' does not exist 我需要做一些额外的设置才能使回滚正常工作吗
我正在使用 Capistrano 部署 ruby on Rails 项目。我正在尝试以用户“部署”身份登录远程服务器并部署此应用程序。 当我通过 ssh 进入框进行部署并 git 克隆项目时,它可
我正在使用 Capistrano 部署 ruby on Rails 项目。我正在尝试以用户“部署”身份登录远程服务器并部署此应用程序。 当我通过 ssh 进入框进行部署并 git 克隆项目时,它可
我正在使用 capistrano、capistrano/rbenv、capistrano/bundler 和 capistrano/rails。我在 capistrano 编译 Assets 的步骤中
尝试将此代码块授予 capistrano 的版本 3 但无济于事。一切都变了。任何人都可以帮助我在正确的轨道上进行转换吗? 旧版本 2 deploy.rb: #require 'new_relic/r
我对这两种工具都是新手,还没有完全掌握。 如果我使用 Capistrano 进行部署,为什么 Gradle 是部署目标? 另见 Gradle Overview . 最佳答案 Gradle 是从 Gro
如何使用 Capistrano v3 仅部署到一台服务器?我在那里发现的所有解决方案都部署到每台服务器,因此,我认为它们适用于 v2。 我不想部署一个阶段,我已经在使用多阶段,我只想在其中一个阶段部署
在 Capistrano Multi-staging documentation set :deploy_env, 'production'用来。是 deploy_env同 rails_env其中te
部署应用程序时,我将 Capistrano 与 capistrano_rsync_with_remote_cache gem 一起使用。 使用新软件升级部署服务器后出现问题: 卡皮斯特拉诺 2.5.1
capistrano-chef 是否有替代品?厨师独奏的 gem ?主要是为了避免两次定义服务器信息。 最佳答案 我在这个话题上发现了一些新鲜而热门的东西: Roundsman gem 文件: gem
我正在尝试通过遵循 DOCS 来学习使用 Capistrano 3,并且我编写了一个简单的任务来测试我的理解。 任务在默认 task 中创建目录在 lib/capistrano/tasks : d
我有一个 capistrano 任务,它整合了 Rails 项目的多个阶段的部署。 例如: task :consolidated_task do build #creates a new re
来自 deploy.rb 的片段 task :prod1 do set :deploy_to, "/home/project/src/prod1" end task :prod2 do set
我是一名优秀的程序员,十分优秀!