今後も何度か同じことを調べそうなので忘備録としてまとめておく。手順を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へのデプロイ
環境の構築
Elastic Beanstalk の各インスタンスを収める「環境」を作成する。この「環境」の中に、これまで作ってきたVPCの要素を追加する。
$ eb create hoge-production
--sample # アプリケーションのデプロイは後で行う。今はSampleアプリケーションをデプロイ
--cname com-sample-production
--instance_type t2.micro
--region ap-northeast-1
--tier webserver
--vpc.ec2subnets subnet-b71eeac1 #VPCに作成したパブリックサブネット
--vpc.elbsubnets subnet-b71eeac1 #VPCに作成したパブリックサブネット(同じにする)
--vpc.id vpc-cc2b11a9
--vpc.securitygroups sg-23fe8447 #デフォルトセキュリティグループ
--vpc.publicip
--vpc.elbpublic
3分から5分程度時間を要する。
作成した環境のURLを開く
$eb open
http://com-sample-production.ap-northeast-1.elasticbeanstalk.com/
.ebextensionsによるカスタマイズ
Laravel5アプリケーションをデプロイするにあたって、環境をカスタマイズする。(qiitaを参考にした)
$ pwd
/home/ikuty/www
$ mkdir .ebextensions
$ cd .ebextensions
# timezoneを変更する
vi 01_settimezone.config
各ファイルは以下の通り。なお、各ファイルは yaml形式であり、空白とタブの扱いがシビア。タブでインデントすると簡単に謎のエラーに悩まされる。空文字はタブではなく半角スペース。
01_settimezone.config
command:
01-set_timezone:
command: cp /usr/share/zoneinfo/Japan /etc/localtime