2014-06-16 55 views
10

你如何部署到只有一台服务器与Capistrano v3?我在那里发现的所有解决方案都部署到了每台服务器上,因此,我会假设他们是针对v2的。如何将Capistrano v3部署到一台服务器?

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

+0

什么是“你找到的所有解决方案”?请提供一些提示,说明什么将不工作,以防止时间浪费在无用的答案上。 –

+1

看起来你需要HOST和ROLE过滤器。您是否尝试过以下链接中提到的内容? http://capistranorb.com/documentation/advanced-features/role-filtering/类似的问题也发现在下面的链接:http://stackoverflow.com/questions/20783552/can-capistrano-v3-specify-hosts- in-command-line-like-v2-does?rq = 1 – leenasn

+0

我的答案适合你吗? – gpupo

回答

5

正如指出的那样,在Capistrano 3中,将应用的特定部分部署到单个服务器的方法是利用HOST filtering。让我们想象一下,你直接到生产部署,如果你想只部署到您的webserver1你有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] 


此配置之后,你只需运行命令:

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

我正在运行cap --host = foo生产部署,然而,capistrano,在部署此rails应用程序结束时,连接到bar以运行某个任务并失败,因为release目录不存在。 – Pablo

1

您必须使用设置多级

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

我已经在使用多阶段。我不想部署到一个阶段,我只需要在一个阶段中部署到多个服务器中的一个。 – Pablo

相关问题