BackEnd

Deployerで複数の環境やサーバにデプロイするには

投稿日:2020年12月21日 更新日:

はじめに

Deployerを使用する場合、よくあるケースとしてプロダクション・ステージング環境があったり、プロダクション環境が冗長化されているなど、1つのソースを複数のサーバにデプロイしなければならないことがあると思います。
今回は、そのような場合にDeployerでデプロイする方法を紹介します。Deployerの初期設定が済んでいない場合は、こちらの記事を参考にセットアップしてみてください。

hosts.ymlファイルの作成

前回の記事ではdeploy.phpに hosts() 関数を使用してデプロイ先を定義していましたが、今回は複数のデプロイ先を定義しやすくするため、ymlファイルに分けます。
hosts.ymlファイルを作成して、以下のように設定します。

.base: &base では、各デプロイ先で共通の設定を記述します。 prod-app01: がデプロイ先の名前で、共通の設定を継承しています。
設定内容は、一旦前回 host() 関数で設定した内容を、設定しておきます。

上記のymlファイルを読み込むため、hosts.ymlに次のように追記します。

deploy.phpに host() 関数を使用したデプロイ方法が実装されている場合は、削除しておきましょう。

プロダクション・ステージング環境を分ける

プロダクション・ステージング環境を分けるにはstageを使用します。

ymlファイルの記載

先ほどのymlファイルに追記する形で、ステージング環境を追加してみます。

stg-app01 を追加しました。 stage: staging と指定するため、先ほどのプロダクション環境と別々にデプロイできるようになりました。

デプロイコマンド

この場合のデプロイコマンドは次のようになります。

複数台のサーバに同時リリースする

プロダクション環境では、複数のサーバで冗長構成を取っている場合が多いと思います。1回のデプロイで、複数のサーバにデプロイする設定を紹介します。

ymlファイルの記載

例として、2台のプロダクション環境を想定して、2環境分の設定をしました。同じstageを設定することで、同時にデプロイされます。

デプロイコマンド

デプロイコマンドは先ほどと同じです。

このように、複数サーバがデプロイされます。

デプロイ先によってタスクを変更する

特定のサーバでのみ実行したいタスクがある場合は、サーバにrole(役割)を設定することで、それぞれの専用タスクを実行することができます。
SPAサイトで、フロントエンドとバックエンドが別々のサーバで、同時にデプロイいすることを例に、紹介します。

ymlファイルの記載

次のroleをそれぞれのサーバに割り振ります。

  • web フロントエンドのサーバ。デプロイ時にJS/CSSのコンパイルを行う。
  • app バックエンドのサーバ。デプロイ時にDBマイグレーションを行う。

これでyamlファイルの設定は完了です。

deploy.phpの実装

定義したroleでのみ実行するタスクを定義します。

タスクの定義に onRoles() を設定することで、hosts.ymlで定義したロールのサーバに対してのみ、タスクが実行されます。

さいごに

hosts.ymlの定義の組み合わせで、実際によくありそうなデプロイ設定をすることができるので、ぜひ試してみてください。

おすすめ書籍

PHPフレームワークLaravel入門 第2版 PHPフレームワーク Laravel実践開発 PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 よくわかるPHPの教科書 【PHP7対応版】

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Go言語

go:embedとGo 1.16、1.17での変更点まとめ

1 はじめに1.1 変更点一覧2 go:embedとは3 go:embedの使い方3.1 基本的な使い方3.2 複数のファイルを埋め込む3.3 異なるディレクトリのファイルを埋め込む3.4 ディレクト ...

php logo

PHP入門 〜文字列と数値の操作〜

1 はじめに2 基本ルール2.1 開始と終了のタグ2.2 ホワイトスペース2.3 大文字と小文字の区別2.4 コメント2.5 変数の定義3 文字列の操作3.1 文字列の定義3.2 無駄なスペースを削除 ...

markdownで書けるドキュメントツールのGitbookを試す

1 はじめに2 Gitbookとは3 nvm4 node.jsインストール5 Gitbook導入5.1 インストール5.2 初期化5.3 ローカルでブラウザから確認6 作成と編集6.1 見出し編集7 ...

laravel logo

Laravel N+1検出ツールの紹介

1 はじめに2 インストール3 設定4 通知方法の追加5 テスト6 検知結果6.1 画面上アラート6.2 コンソール6.3 ログファイル7 ちなみに8 さいごに9 おすすめ書籍 はじめに DB利用した ...

rails

関連するモデルのレコードを一緒に作成する方法

1 はじめに1.1 前提条件2 実装2.1 モデルの作成2.2 コントローラの作成2.3 Viewの作成3 さいごに はじめに フォームからレコードを作成する際に、関連するモデルのレコードを一緒に作成 ...

フォロー

blog-page_side_responsive

2020年12月
 12345
6789101112
13141516171819
20212223242526
2728293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。