Laravel AWS

VPC内にElastic Beanstalk + RDS の環境を構築して Laravel アプリをデプロイする [Laravel5アプリデプロイ編]

更新日:

今後も何度か同じことを調べそうなので忘備録としてまとめておく。手順をstep by stepで記述するが、それぞれ分量が多いので以下の通り章立てを行ってエントリを分割する。

  • VPC構築編
    • VPCの作成
    • VPC、NetworkACL、SecurityGroupの確認、タグ付け
    • VPCのDNSホスト名を有効にする
    • サブネットの作成、タグ付け
    • インターネットゲートウェイの作成、タグ付け、VPCにアタッチ
    • パブリックサブネット用RoutingTableの作成
    • パブリックサブネット用RoutingTableにインターネットゲートウェイの関連付け
    • 作成したサブネットをパブリックサブネット用RoutingTableに繋ぎかえる
  • RDS構築編
    • MySQLの設定変更(DBパラメータグループの作成)
    • DBサブネットグループを作成
    • RDS用セキュリティグループの作成
    • RDSインスタンスの作成
    • エンドポイントの確認、疎通確認
  • Elastic Beanstalk構築編
    • 環境の構築
    • .ebextensionsによるカスタマイズ
  • Laravel5アプリデプロイ編(本エントリ)
    • gitリポジトリからclone
    • .envの編集
    • アプリで使うDBのダンプファイルをRDSにコピー
    • Laravelインストーラの準備
    • Laravel本体のインストール
    • ビルトインサーバでの疎通確認
    • Elastic Beanstalkへのデプロイ

gitリポジトリからclone

通常 Laravel5 にはデフォルトの .gitignore が作られており、Laravel本体は.gitignoreに登録されている。まず、アプリをcloneし、そのあとでLaravel本体をインストールする。
どこか、Laravel5の要件を満たすところでgitリポジトリからcloneする。

.envの編集

アプリケーションの設定を変更する。/config 内に各種設定ファイルが配置されているが、laravelでは.envを変更することで /config内のenv()関数に展開される仕組みになっている。だから、/config 内の各種ファイルを直接変更する必要はない。/config 内も git の構成管理に含めても良い
cloneした先でenvを編集する。.env_example をリネームすると楽。

  • APP_KEY= *** 次項で示すようにキーを生成する
  • DB_HOST : RDS編で設定したRDSエンドポイントを指定する
  • DB_DATABASE, USERNAME, PASSWORD : RDS編で設定した各種設定を指定する

キーを生成する。以下のコマンドで .env の APP_KEY が差し替わる。

アプリで使うDBのダンプファイルをRDSにコピー

本来は Migration を使うべきだが…。Migration を利用しないでDBを作ってしまった場合は泥臭くやる…;;まず、ダンプ。

RDS側にDBを作成し権限を付与しておく。

RDS上のDBにダンプしたsqlを流し込む。

Laravelインストーラの準備

composerを利用する。パスを通す。本エントリ作成時の最新は version1.3.3。

Laravel本体のインストール

composerが準備できたらcomposer installでLaravel本体をインストールする。

ビルトインサーバでの疎通確認

この状態でビルトインサーバを立ち上げ、疎通確認を行う。

Elastic Beanstalkへのデプロイ

Elastic Beanstalk構築編にて、環境の準備が出来ているものとする。
eb deploy コマンドにより、カレントディレクトリ以下のファイルをデプロイする。また、.ebextension に DocumentRoot を設定する。カレントディレクトリと DocumentRoot の組み合わせを正しく設定する必要がある。

まず、DocumentRootを設定するため、.ebextensionディレクトリを作成し、設定ファイルを作成する。

01.documentroot_config は以下の通り。YAMLとして記述する必要がある。空白とタブの扱いがシビアなので、タブが入らないように注意する。ファイルの先頭の”01″ は、ファイルが解釈される順番を表す。.ebextensions 内に、01,02,… のように設定を複数配置できる。

DocumentRoot を /project/public と設定した場合に正しい構成になるように、カレントディレクトリを移動し、eb deployを実行する。~/www に移動して、/project 以下をデプロイすれば良い。

設定が正しければ2分弱で完了する。

-Laravel, AWS

Copyright© ikuty.com , 2024 AllRights Reserved Powered by AFFINGER4.