本番環境へのLaravelデプロイ完全ガイド【GitHub Actions × AWS】

Laravel AWS

Laravelプロジェクトを本番環境にデプロイする際、手作でファイルをアップロードしたり、FTPで送信したりするのは非実用的です。

現代の実務では、CI/CDツールを使って自動化するのが常識になっています。

本記事では、GitHub Actionsを使って AWS上のEC2サーバ に Laravel 12 / PHP 8.4のプロジェクトをデプロイする方法を完全ガイドします。


環境の前提

  • 開発環境:
    • Laravel 12.x
    • PHP 8.4
    • MySQL 8.x
  • 本番環境:
    • AWS EC2 (Amazon Linux 2023)
    • Nginx
    • PHP-FPM
    • RDS (MySQL)
  • CI/CD:
    • GitHub Actions
    • 移行手順: GitHub → EC2

1. サーバ構築 (本番環境)

EC2インスタンス作成

AWSコンソールからEC2インスタンスを作成します。

  • Amazon Linux 2023 を選択
  • t3.small 以上を推奨
  • 入れるセキュリティグループを設定

PHP / Nginx インストール

sudo dnf update -y
sudo amazon-linux-extras enable php8.4
sudo dnf install php php-fpm php-mysqlnd nginx git unzip -y

→ サーバを起動:

sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

2. GitHub Actions の設定

GitHub Secrets に情報登録

GitHubリポジトリのSettings > Secrets and variables > Actions に以下を登録します:

  • HOST : EC2のグローバルIP
  • USER : EC2のログイン用ユーザ (ec2-user など)
  • PRIVATE_KEY : SSH秘密鍵
  • APP_ENV : production

GitHub Actions Workflow 作成

.github/workflows/deploy.yml

name: Deploy to EC2

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Setup SSH Key
      run: |
        mkdir -p ~/.ssh
        echo "$PRIVATE_KEY" > ~/.ssh/id_rsa
        chmod 600 ~/.ssh/id_rsa

    - name: Deploy to EC2
      run: |
        ssh -o StrictHostKeyChecking=no $USER@$HOST << 'EOF'
          cd /var/www/your-app-directory
          git pull origin main
          composer install --no-dev --optimize-autoloader
          php artisan migrate --force
          php artisan config:cache
          php artisan route:cache
          sudo systemctl restart php-fpm
          sudo systemctl restart nginx
        EOF
      env:
        HOST: ${{ secrets.HOST }}
        USER: ${{ secrets.USER }}
        PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}

ポイント

  • composer install で production 用ビルド
  • php artisan migrate --force で本番データベースにマイグレーション
  • cache clear と cache build を自動化

3. 実務で使うコツ

  • 本番マイグレーションは --force が必須
  • .env.production を作成してEC2に配置
  • ComposerやPHPは本番環境に合わせてバージョンを絞る
  • デプロイ後にサービス再起動

4. 注意点・ベストプラクティス

  • EC2のセキュリティルールを必ず限定(IP制限)する
  • GitHub Secrets に作業悪用されないよう、正しく設定する
  • 毎回「git pull」前にバックアップを検討
  • 本番データベースのスナップショットを矩形的に取得

5. まとめ

GitHub Actionsを使った自動デプロイフローにより、Laravelプロジェクトの本番送信をスピーディに行うことができます。

本記事を参考にして、安定した本番環境構築に挑戦してみてください!

最後までお読みいただき、ありがとうございました!


【参考資料】

コメント

タイトルとURLをコピーしました