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のグローバルIPUSER
: 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プロジェクトの本番送信をスピーディに行うことができます。
本記事を参考にして、安定した本番環境構築に挑戦してみてください!
最後までお読みいただき、ありがとうございました!
【参考資料】
コメント