Elastic Beanstalk + Laravelで環境構築した時のメモ
概要
Elastic Beanstalk + Laravelの組み合わせでデプロイの標準的な方法が中々見つからず苦戦し、最終的にAWSのドキュメントに沿って進めることにしました。 しかし、このドキュメントだけでは500エラーの表示となってしまい色々と調べていたところ、こちらの記事を呼んで環境変数の設定が抜けていることが分かりました。
記事に沿って環境変数を設定し、無事にデフォルトのページを表示できました。 文章で書くと短いですが、普段使っているRailsに比べて情報の数自体が少なくてなんだかんだで半日近く使いました。
作業内容
環境構築
Elastic Beanstalkから新しい環境を作成(カスタマイズでmysqlも作成)
キーペアを作成して紐付け
AWS Elastic Beanstalk 環境のセキュリティ - AWS Elastic Beanstalk
SSL対応
- HTTPS を復号するよう Elastic Beanstalk 環境のロードバランサーを設定する - AWS Elastic Beanstalk
- AWS:無料でSSL証明書を取得する方法 - Qiita
確認
リダイレクト
httpからhttpsへのリダイレクト設定
[新機能]Webサーバでの実装不要!ALBだけでリダイレクト出来るようになりました! | DevelopersIO
ロードバランサへの対応
httpsリンクが生成されない問題があり、原因はロードバランサを使用していることにありました。リンクを参考に信用するプロキシの設定を行いました。
TLS/SSL証明を行うロードバランサの裏でアプリケーションが実行されている場合、アプリケーションが時々HTTPSリンクを生成しないことに、気づくでしょう。典型的な理由は、トラフィックがロードバランサにより80番ポートへフォワーディングされるため、セキュアなリンクを生成すべきだと判断できないからです。
protected $proxies = '*';
デプロイ
今回はこちらで対応しましたが検討の余地ありと感じています。
- Deployerを使用
- ec2でデプロイ用のユーザーを作成
- authorized_keysに開発メンバーの公開鍵を追加
- リポジトリは
git@github.com:xxx
を指定
Linux インスタンスでのユーザーアカウントの管理 - Amazon Elastic Compute Cloud PHP - PHP Deployerのデプロイ時のGitアカウントの入力を省略したい|teratail