【後編】AWS Elastic Beanstalk使い方とLaravelデプロイ

Laravel and Elastic Beanstalk deployment

前回で開発環境を立ち上げましたので、今回はこの環境にロードバランサー、RDSを追加します。最後には独自ドメインを設定してWeb公開まで行います。

目次

この記事でやること

AWS Elastic Beanstalkを使用してLaravelアプリケーションをデプロイする過程の後半部分を解説します。具体的には、RDSとロードバランサーの設定、独自ドメインの取得とSSL化、そしてデプロイ後のテストと確認までを扱います。これにより、本番環境に近い、安全で拡張性のあるWebアプリケーション環境を構築することができます。

  • RDS・ロードバランサー構成の構築
  • 独自ドメインの取得と常時SSL化(HTTPS化)
  • Laravelプロジェクトの設定
システム構成の概念図

RDS・ロードバランサーの設定

RDSの設定

インスタンスにパブリックIPアドレスを割り当てる

項目の説明に書かれていますが、パブリックIPを有効にしていないとロードバランサーが実行できません。私は有効化されておらずなんで?となったため、忘れないように気をつけてもらいたいです。

パブリックIPアドレスの割り当てを有効化
データベースを有効化とサブネット選択

データベースを有効にするDBインスタンスを配置するサブネットを選べるようになります。このとき、外部からアクセスされたくないのでプラベートサブネットを選択します。

DBインスタンスのサブネットを設定

ロードバランサーの設定

負荷分散を有効にする

Auto Scalingグループが作成されて、インスタンス数など諸々の設定が行えます。ここでは細かく設定しませんが、各々システム要件に合わせて設定を調整してください。

Auto Scalingの設定
サブネットの指定

負荷分散を選択するとロードバランサーの項目が表示されますので、パブリックサブネットを選択します。確かこのとき2つ選択しないとエラーになりますしたので気をつけてください。

ロードバランサーを配置するサブネットを設定

ドメインの取得

独自ドメインの取得
  • お好みのドメインレジストラ(例:Route 53、Namecheap、GoDaddyなど)で独自ドメインを購入します。
  • AWS Route 53のホストゾーンを作成し、ネームサーバーをドメインレジストラに設定します。
  • Route 53で、Elastic Beanstalkの環境URLに対するAレコードを作成します。
証明書を追加する

証明書を作成して、検証を済ませておきます。

リスナーを追加

HTTPSを受信できるように「リスナーを追加」から画像のように設定してください。この時に事前に作成したSSL証明書が利用できるかと思います。

HTTPSのリスナーを追加

Laravelアプリケーションの設定

設定ファイルの編集

プロジェクトによって異なりますが、独自ドメインとHTTPS向けに設定を変更します。

# URLスキーマをHTTPSに変更
APP_URL=https://example.com

# HTTPS接続を持つ場合にのみセッションCookieがサーバーに返されるように変更
SESSION_SECURE_COOKIE=true
AppServiceProvider.phpboot メソッドで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;

テストと確認

  1. すべてのページとフォームがHTTPSで正しく動作することを確認
  2. 混在コンテンツ(HTTP経由のリソース)がないか確認
  3. リダイレクトが正しく機能しているか確認
  4. SSL/TLS証明書が正しく認識されているか確認(ブラウザでの警告がないか)

終わりに

この記事では、AWS Elastic BeanstalkでLaravelアプリケーションをデプロイする過程の後半部分、特にRDSとロードバランサーの設定、独自ドメインの取得とSSL化、そしてデプロイ後のテストと確認について解説しました。これらの手順を踏むことで、安全で拡張性のある本番環境を構築することができます。
ただし、本番環境の運用には継続的なモニタリング、セキュリティ更新、パフォーマンス最適化などが必要です。また、AWSの各サービスの料金体系を理解し、コスト管理も重要です。
Elastic Beanstalkは多くの設定を自動化してくれますが、より細かな制御が必要な場合は、個々のAWSサービス(EC2、RDS、ELBなど)を直接管理する方法も検討してみてください。
今後も、AWSやLaravelの新機能や最新のベストプラクティスに注目し、継続的に改善を行っていくことが重要になります。

目次