今後も何度か同じことを調べそうなので忘備録としてまとめておく。手順を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する。
1 2 3 |
$ pwd /home/ikuty/www/ $ git clone ssh://servername/var/git/project.git project |
.envの編集
アプリケーションの設定を変更する。/config 内に各種設定ファイルが配置されているが、laravelでは.envを変更することで /config内のenv()関数に展開される仕組みになっている。だから、/config 内の各種ファイルを直接変更する必要はない。/config 内も git の構成管理に含めても良い。
cloneした先でenvを編集する。.env_example をリネームすると楽。
- APP_KEY= *** 次項で示すようにキーを生成する
- DB_HOST : RDS編で設定したRDSエンドポイントを指定する
- DB_DATABASE, USERNAME, PASSWORD : RDS編で設定した各種設定を指定する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
APP_ENV=local APP_DEBUG=true APP_KEY=**** APP_URL=http://hoge.com/ DB_CONNECTION=mysql DB_HOST=rds-endpoint DB_PORT=3306 DB_DATABASE=hogedb DB_USERNAME=hoge DB_PASSWORD=fuga CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync |
キーを生成する。以下のコマンドで .env の APP_KEY が差し替わる。
1 |
$ php artisan key:generate |
アプリで使うDBのダンプファイルをRDSにコピー
本来は Migration を使うべきだが…。Migration を利用しないでDBを作ってしまった場合は泥臭くやる…;;まず、ダンプ。
1 |
$ mysqldump -u hoge -p appdb > appdb.sql |
RDS側にDBを作成し権限を付与しておく。
1 2 3 4 5 6 |
$ mysql -h [rds-endpoint] -u hoge -p $ > CREATE DATABSE appdb; $ > GRANT ALL ON appdb.* to hoge@localhost; $ > FLUSH PRIVILEGES; $ > SHOW DATABSES; $ > ... |
RDS上のDBにダンプしたsqlを流し込む。
1 |
$ mysql -h [rds-endpoint] -u hoge -p -D appdb < appdb.sql |
Laravelインストーラの準備
composerを利用する。パスを通す。本エントリ作成時の最新は version1.3.3。
1 2 3 4 5 |
$ composer global require "laravel/installer=~1.1" $ echo 'export PATH=~/.composer/vendor/laravel/installer:$PATH' >> ~/.bash_profile $ source .bash_profile $ laravel Laravel Installer version 1.3.3 |
Laravel本体のインストール
composerが準備できたらcomposer installでLaravel本体をインストールする。
1 2 |
$ cd project $ composer install |
ビルトインサーバでの疎通確認
この状態でビルトインサーバを立ち上げ、疎通確認を行う。
1 2 3 |
$ cd project php artisan serve --host hoge.com Laravel development server started on http://hoge.com:8000/ |
Elastic Beanstalkへのデプロイ
Elastic Beanstalk構築編にて、環境の準備が出来ているものとする。
eb deploy コマンドにより、カレントディレクトリ以下のファイルをデプロイする。また、.ebextension に DocumentRoot を設定する。カレントディレクトリと DocumentRoot の組み合わせを正しく設定する必要がある。
まず、DocumentRootを設定するため、.ebextensionディレクトリを作成し、設定ファイルを作成する。
1 2 3 4 5 |
$ pwd /home/ikuty/www/ $ mkdir .ebextensions $ cd .ebextensions $ vi 01_documentroot.config |
01.documentroot_config は以下の通り。YAMLとして記述する必要がある。空白とタブの扱いがシビアなので、タブが入らないように注意する。ファイルの先頭の”01″ は、ファイルが解釈される順番を表す。.ebextensions 内に、01,02,… のように設定を複数配置できる。
1 2 3 4 |
option_settings: - namespace: aws:elasticbeanstalk:container:php:phpini option_name: document_root value: /project/public |
DocumentRoot を /project/public と設定した場合に正しい構成になるように、カレントディレクトリを移動し、eb deployを実行する。~/www に移動して、/project 以下をデプロイすれば良い。
1 2 3 4 5 6 7 8 |
$ cd ~/www/ $ eb deploy Creating application version archive "app-160630_130423". Uploading: [##################################################] 100% Done... INFO: Environment update is starting. INFO: Deploying new version to instance(s). INFO: New application version was deployed to running EC2 instances. INFO: Environment update completed successfully. |
設定が正しければ2分弱で完了する。