如何使用Capistrano v3只部署到一个服务器?

12

如何使用Capistrano v3只部署到一个服务器?我在网络上找到的所有解决方案都是部署到每个服务器,因此,我会认为它们适用于v2。

我不想部署一个阶段,我已经在使用多阶段,并且我想在其中一个阶段只部署到一个服务器。


你所找到的“所有解决方案”是什么?请提供一些提示,以防止浪费时间在无用的答案上。 - tobias_k
1
看起来你需要HOST和ROLE过滤器。你是否尝试了下面链接中提到的方法?http://capistranorb.com/documentation/advanced-features/role-filtering/同样的问题也可以在以下链接中找到:https://dev59.com/GHrZa4cB1Zd3GeqP46Xv?rq=1 - leenasn
我的回答对您有用吗? - gpupo
2个回答

7

正如指出的那样,在Capistrano 3中,将应用程序的特定部分部署到单个服务器的方法是利用HOST过滤。假设您直接部署到生产环境,并且在config/deploy/production.rb中有此配置:

set :stage, :production


server "webserver1.example.com”,         roles: [:web]

server "appserver1.example.com",         roles: [:app]                   
server "appserver2.example.com",         roles: [:app]                   
server "appserver3.example.com",         roles: [:app]                        

server “dbserver1.example.com”,          roles: [:db]
server “dbserver2.example.com”,          roles: [:db]


如果您只想部署到您的Web服务器1,则只需运行以下命令:

cap --hosts=webserver1.example.com production deploy

1
我正在运行 cap --host=foo production deploy,然而,在部署这个 Rails 应用的最后阶段,Capistrano 连接到 bar 执行某些任务并失败,因为发布目录不存在。 - pupeno

1

您必须使用设置multistage

默认情况下,Capistrano 3.x是多阶段的

在其中一个阶段中,您仅定义要使用的服务器。

set :stage, :staging

server 'staging.zodiacmedia.co.uk', roles: %w{web app db}, port: 22

set :deploy_to, '/var/www/staging.example.com'

运行命令:

cd /home/deploy/capistrano/example
cap staging something:to:do

这个tutorial可能有些旧,但可能会对你有所帮助。

1
我已经在使用多阶段部署了。我不想部署到一个阶段,我想要部署到某个阶段中的众多服务器中的一个。 - pupeno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接