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言語

gorpを使ってDBを操作する

1 はじめに1.1 GoのORM1.2 gorpの紹介2 gorpの基本操作2.1 insert2.2 select2.3 update2.4 delete3 構造体のmapping4 テーブルの作成 ...

MySQLでバルクアップデート処理

1 はじめに2 使用するテーブル3 パターン数が少ないシンプルな更新4 パターン数が多い場合4.1 FIELD関数4.2 ELT関数4.3 組み合わせ4.4 パフォーマンス5 さいごに6 おすすめ書籍 ...

laravel logo

Laravel Sail 環境に Laravel Breeze を導入してみた

1 はじめに2 Laravel Sail とは3 Laravel Breeze とは4 Laravel Breeze のインストール4.1 Composer4.2 npm5 マイグレーション6 確認7 ...

Go言語

Go言語で使えるORMライブラリ

1 はじめに2 ORMライブラリ2.1 GORM2.2 SQLBoiler3 GORMを使ってみる3.1 導入3.2 migration3.3 insert3.4 select3.5 update3. ...

Go言語

Go言語の基礎〜Go 1.11 開発環境構築とパッケージバージョン管理〜

1 はじめに2 Go言語(Golang)とは2.1 シンプルな構文2.2 コンパイル言語2.3 並行処理2.4 その他の特徴3 Go開発環境の構築3.1 Goのインストール3.1.1 1. homeb ...

フォロー

blog-page_side_responsive

2020年12月
 12345
6789101112
13141516171819
20212223242526
2728293031  

アプリ情報

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