Elastic Beanstalk + Laravelで環境構築

Elastic Beanstalk + Laravelで環境構築した時のメモ

概要

Elastic Beanstalk + Laravelの組み合わせでデプロイの標準的な方法が中々見つからず苦戦し、最終的にAWSのドキュメントに沿って進めることにしました。 しかし、このドキュメントだけでは500エラーの表示となってしまい色々と調べていたところ、こちらの記事を呼んで環境変数の設定が抜けていることが分かりました。

記事に沿って環境変数を設定し、無事にデフォルトのページを表示できました。 文章で書くと短いですが、普段使っているRailsに比べて情報の数自体が少なくてなんだかんだで半日近く使いました。

作業内容

環境構築

Elastic Beanstalkから新しい環境を作成(カスタマイズでmysqlも作成)
キーペアを作成して紐付け

AWS Elastic Beanstalk 環境のセキュリティ - AWS Elastic Beanstalk

SSL対応
確認

ssl対応の独自ドメインでアクセスして画面表示を確認

f:id:tsyknsr:20181214115220p:plain

リダイレクト

httpからhttpsへのリダイレクト設定

[新機能]Webサーバでの実装不要!ALBだけでリダイレクト出来るようになりました! | DevelopersIO

ロードバランサへの対応

httpsリンクが生成されない問題があり、原因はロードバランサを使用していることにありました。リンクを参考に信用するプロキシの設定を行いました。

TLSSSL証明を行うロードバランサの裏でアプリケーションが実行されている場合、アプリケーションが時々HTTPSリンクを生成しないことに、気づくでしょう。典型的な理由は、トラフィックがロードバランサにより80番ポートへフォワーディングされるため、セキュアなリンクを生成すべきだと判断できないからです。

protected $proxies = '*';

デプロイ

今回はこちらで対応しましたが検討の余地ありと感じています。

  • Deployerを使用
  • ec2でデプロイ用のユーザーを作成
  • authorized_keysに開発メンバーの公開鍵を追加
  • リポジトリgit@github.com:xxxを指定

Linux インスタンスでのユーザーアカウントの管理 - Amazon Elastic Compute Cloud PHP - PHP Deployerのデプロイ時のGitアカウントの入力を省略したい|teratail

参考リンク