【後編】AWS Elastic Beanstalk使い方とLaravelデプロイ
前回で開発環境を立ち上げましたので、今回はこの環境にロードバランサー、RDSを追加します。最後には独自ドメインを設定してWeb公開まで行います。
この記事でやること
AWS Elastic Beanstalkを使用してLaravelアプリケーションをデプロイする過程の後半部分を解説します。具体的には、RDSとロードバランサーの設定、独自ドメインの取得とSSL化、そしてデプロイ後のテストと確認までを扱います。これにより、本番環境に近い、安全で拡張性のあるWebアプリケーション環境を構築することができます。
- RDS・ロードバランサー構成の構築
- 独自ドメインの取得と常時SSL化(HTTPS化)
- Laravelプロジェクトの設定
RDS・ロードバランサーの設定
RDSの設定
- インスタンスにパブリックIPアドレスを割り当てる
-
項目の説明に書かれていますが、パブリックIPを有効にしていないとロードバランサーが実行できません。私は有効化されておらずなんで?となったため、忘れないように気をつけてもらいたいです。
- データベースを有効化とサブネット選択
-
データベースを有効にするDBインスタンスを配置するサブネットを選べるようになります。このとき、外部からアクセスされたくないのでプラベートサブネットを選択します。
ロードバランサーの設定
- 負荷分散を有効にする
-
Auto Scalingグループが作成されて、インスタンス数など諸々の設定が行えます。ここでは細かく設定しませんが、各々システム要件に合わせて設定を調整してください。
- サブネットの指定
-
負荷分散を選択するとロードバランサーの項目が表示されますので、パブリックサブネットを選択します。確かこのとき2つ選択しないとエラーになりますしたので気をつけてください。
ドメインの取得
- 独自ドメインの取得
-
- お好みのドメインレジストラ(例:Route 53、Namecheap、GoDaddyなど)で独自ドメインを購入します。
- AWS Route 53のホストゾーンを作成し、ネームサーバーをドメインレジストラに設定します。
- Route 53で、Elastic Beanstalkの環境URLに対するAレコードを作成します。
- 証明書を追加する
-
証明書を作成して、検証を済ませておきます。
AWS Certificate Manager パブリック証明書 – AWS Certificate Manager パブリックに信頼できる証明書を ACM からリクエストする方法について説明します。 - リスナーを追加
-
HTTPSを受信できるように「リスナーを追加」から画像のように設定してください。この時に事前に作成したSSL証明書が利用できるかと思います。
Laravelアプリケーションの設定
- 設定ファイルの編集
-
プロジェクトによって異なりますが、独自ドメインとHTTPS向けに設定を変更します。
# URLスキーマをHTTPSに変更 APP_URL=https://example.com # HTTPS接続を持つ場合にのみセッションCookieがサーバーに返されるように変更 SESSION_SECURE_COOKIE=true
AppServiceProvider.php
のboot
メソッドでHTTPS強制-
本番環境ではhttpでアクセスされても強制的にhttpsに切り変えます。
public function boot() { if(config('app.env') === 'production') { \URL::forceScheme('https'); } }
- TrustProxiesミドルウェアの設定
-
まだ、メールアドレス確認URLが 403 | Invalid signature とエラーになってしまってアクセスできないので、をTrustProxiesミドルウェアを設定します。
protected $proxies = '*'; protected $headers = Request::HEADER_X_FORWARDED_ALL;
テストと確認
- すべてのページとフォームがHTTPSで正しく動作することを確認
- 混在コンテンツ(HTTP経由のリソース)がないか確認
- リダイレクトが正しく機能しているか確認
- SSL/TLS証明書が正しく認識されているか確認(ブラウザでの警告がないか)
終わりに
この記事では、AWS Elastic BeanstalkでLaravelアプリケーションをデプロイする過程の後半部分、特にRDSとロードバランサーの設定、独自ドメインの取得とSSL化、そしてデプロイ後のテストと確認について解説しました。これらの手順を踏むことで、安全で拡張性のある本番環境を構築することができます。
ただし、本番環境の運用には継続的なモニタリング、セキュリティ更新、パフォーマンス最適化などが必要です。また、AWSの各サービスの料金体系を理解し、コスト管理も重要です。
Elastic Beanstalkは多くの設定を自動化してくれますが、より細かな制御が必要な場合は、個々のAWSサービス(EC2、RDS、ELBなど)を直接管理する方法も検討してみてください。
今後も、AWSやLaravelの新機能や最新のベストプラクティスに注目し、継続的に改善を行っていくことが重要になります。