4

Capistranoは複数のサーバーへの展開をサポートしていると聞きましたが、実用的な設定方法が見つかりませんでした。複数のサーバーとは、実稼働環境で同じアプリケーションを実行しているサーバーを意味します。それが現在使用しているものであれば、いつでも5台または10台のサーバーに展開したいと思います。

ありがとうございました。

4

2 に答える 2

9

複数のサーバーを使用することは、単に手作業で行うのではなく、capistranoを使用する主な理由の1つです。

deploy.rbは、どのサーバーがどの役割に属するかを設定することによって実行される、どのサーバーで実行する必要があるアクションを定義する必要があるだけです。独自のロールを作成できますが、組み込みのcapistranoレシピでは、次の3つのロールを定義する必要があります。

  • app:アプリケーションコードが実行される場所
  • ウェブ:ウェブフロントエンド
  • db:移行が実行される場所

これら3つが同義語であるのは珍しいことではありません。すべてapache+passengerを実行している同一のサーバーが多数ある場合、それらはすべてアプリサーバーとWebサーバーです。それらの1つにdbロールを与える必要があります。

deploy.rbファイルでロールを定義します。最も単純な場合、これはIPアドレスまたはホスト名のリストです。

role :app, [192.168.1.1,192.168.1.2]

ブロックにすることもできます。たとえば、ec2にデプロイする場合、デプロイ先のサーバーのリストを取得するapi呼び出しを挿入できます。私は通常、サーバーにタグを割り当てることによってこれを行います。

role :app do
  ec2.instances.tagged('app').map(&:ip_address)
end

そのロールをappタグを使用してec2インスタンスにマップする(capistranoはこの情報をキャッシュし、ブロックを1回だけ実行します)

于 2012-07-21T18:38:12.747 に答える
0

Rails4では別の構文を使用する必要がありました。

role :app, %w{s01.app.com s02.app.com}
role :web, %w{s01.web.com s02.web.com}
于 2016-05-27T17:05:07.473 に答える