AWS EC2へのLaravelアプリケーションのデプロイ方法

AWS EC2へのLaravelアプリケーションのデプロイ方法

AWS EC2インスタンスにLaravelアプリケーションをデプロイするための包括的なガイド。サーバー設定、データベース構成、デプロイのベストプラクティスを網羅しています。

Subash Rijal
Subash Rijal
Software Developer
2025年5月27日
2 分で読めます
Share:

Table of Contents

はじめに

Laravelアプリケーションのデプロイは、特にローカル開発環境から本番サーバーに移行する場合、複雑な作業になることがあります。AWS EC2は、アプリケーションをホストするための柔軟でスケーラブルなソリューションを提供します。このガイドでは、AWS EC2インスタンスにLaravelアプリケーションをデプロイするプロセスを順を追って説明します。

前提条件

始める前に、以下のものがあることを確認してください。

  • AWSアカウント。
  • Linuxコマンドの基本的な知識。
  • デプロイ準備ができたLaravelアプリケーション(例:Gitリポジトリにプッシュ済み)。

ステップ1:EC2インスタンスの起動

  1. AWSマネジメントコンソールにログイン: EC2ダッシュボードに移動します。
  2. インスタンスの起動: 「インスタンスの起動」をクリックします。
  3. Amazonマシンイメージ(AMI)の選択: Ubuntu Server AMI(例:Ubuntu Server 22.04 LTS)を選択します。
  4. インスタンスタイプの選択: アプリケーションのニーズに基づいて適切なインスタンスタイプを選択します(例:テスト用のt2.micro)。
  5. インスタンス詳細の設定: ほとんどの設定はデフォルトのままにします。「パブリックIPの自動割り当て」が有効になっていることを確認します。
  6. ストレージの追加: 基本的なLaravelアプリには、デフォルトのストレージ(8GB)で十分です。
  7. タグの追加: (オプション)Name: LaravelAppServerなどのタグを追加します。
  8. セキュリティグループの設定: 新しいセキュリティグループを作成するか、既存のものを選択します。以下のポートが開いていることを確認してください。
    • SSH(ポート22): インスタンスに接続するため。
    • HTTP(ポート80): ウェブトラフィック用。
    • HTTPS(ポート443): セキュアなウェブトラフィック用(推奨)。
  9. 確認と起動: 設定を確認し、「起動」をクリックします。
  10. 新しいキーペアの作成: .pemファイルをダウンロードします。このキーはSSHアクセスに不可欠です。

ステップ2:EC2インスタンスへの接続

ターミナルを開き、以下のコマンドを使用してインスタンスに接続します。your-key.pemをキーペアファイルに、your-instance-ipをEC2インスタンスのパブリックIPアドレスに置き換えてください。

chmod 400 your-key.pem
ssh -i "your-key.pem" ubuntu@your-instance-ip

ステップ3:ウェブサーバー(Nginx)、PHP、Composerのインストール

接続後、パッケージリストを更新し、必要なソフトウェアをインストールします。

sudo apt update
sudo apt upgrade -y

# Nginxのインストール
sudo apt install nginx -y

# PHPと拡張機能のインストール(必要に応じてバージョンを調整、例:php8.1-fpm)
sudo apt install php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-bcmath php8.1-curl php8.1-zip php8.1-gd -y

# Composerのインストール
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

ステップ4:MySQLサーバーのインストール

sudo apt install mysql-server -y
sudo mysql_secure_installation

プロンプトに従ってMySQLのインストールを保護します。rootパスワードを覚えておいてください。

ステップ5:Laravelアプリケーションのデプロイ

  1. リポジトリのクローン: /var/www/に移動し、Laravelプロジェクトをクローンします。
sudo mkdir -p /var/www/your-laravel-app
cd /var/www/your-laravel-app
sudo git clone https://github.com/your-username/your-laravel-app.git .
  1. パーミッションの設定: NginxとPHP-FPMが適切なパーミッションを持っていることを確認します。
sudo chown -R www-data:www-data /var/www/your-laravel-app
sudo chmod -R 775 /var/www/your-laravel-app/storage
sudo chmod -R 775 /var/www/your-laravel-app/bootstrap/cache
  1. Composer依存関係のインストール: プロジェクトルート(/var/www/your-laravel-app)から。
composer install --no-dev --optimize-autoloader
    ```

4.  **.envファイルの構成**: `.env.example``.env`にコピーし、データベースの認証情報を更新します。

    ```bash
sudo cp .env.example .env
sudo nano .env
    ```

    `DB_DATABASE``DB_USERNAME``DB_PASSWORD`を更新します。

5.  **アプリケーションキーの生成**: 

    ```bash
php artisan key:generate
    ```

6.  **マイグレーションとシーダーの実行**: 

    ```bash
php artisan migrate --seed
    ```

## ステップ6:Nginxの設定

Laravelアプリケーション用の新しいNginx設定ファイルを作成します。

```bash
sudo nano /etc/nginx/sites-available/your-laravel-app

以下の内容を追加します。

server {
    listen 80;
    server_name your-instance-ip your-domain.com;
    root /var/www/your-laravel-app/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

サイトを有効にし、Nginxを再起動します。

sudo ln -s /etc/nginx/sites-available/your-laravel-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

ステップ7:データベースの設定

MySQLに接続し、Laravelアプリケーション用のデータベースとユーザーを作成します。

sudo mysql -u root -p
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
EXIT;

これらの新しい認証情報で.envファイルを更新することを忘れないでください。

まとめ

AWS EC2インスタンスにLaravelアプリケーションを正常にデプロイしました。このガイドでは、インスタンスの起動からウェブサーバーとデータベースの設定までの重要な手順を説明しました。本番環境では、SSL、ドメイン名、およびより堅牢なセキュリティ対策の追加を検討してください。

関連投稿

Continue your learning journey with these handpicked articles

Laravelアプリケーションをデプロイする方法
Tutorials

Laravelアプリケーションをデプロイする方法

Laravelアプリケーションを本番環境にデプロイするためのステップバイステップガイド

1 分で読めます
Read More →
Astroチュートリアル: 多言語ブログのセットアップ
Tutorials

Astroチュートリアル: 多言語ブログのセットアップ

Astroを使用して多言語ブログをセットアップするためのステップバイステップガイド

1 分で読めます
Read More →
売上データから週次マーケティングメールを自動生成するAIアシスタントの作り方
Tutorials

売上データから週次マーケティングメールを自動生成するAIアシスタントの作り方

Python、OpenAI GPT、Google Sheets APIを使用して、売上データを魅力的なコンテンツに変換する自動化の方法を学びましょう。

3 分で読めます
Read More →