こんにちは、PHP開発者の皆さん!この連載の第10回では、Laravel 10を使って構築したAPIを本番環境にデプロイし、運用管理を行う方法について詳しく解説します。デプロイと運用管理は、アプリケーションの品質とパフォーマンスを維持するために重要なステップです。それでは、始めましょう!
1. デプロイの準備
環境設定
本番環境の設定ファイルを準備します。.env
ファイルを作成し、本番環境に合わせた設定を行います。
本番環境用の設定例
APP_ENV=production
APP_DEBUG=false
APP_URL=https://yourdomain.com
DB_CONNECTION=mysql
DB_HOST=your_db_host
DB_PORT=3306
DB_DATABASE=your_db_name
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password
CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis
INIデプロイツールの選択
デプロイには様々なツールがありますが、ここでは Laravel Forge と GitHub Actions を使用する方法を紹介します。
2. Laravel Forgeを使ったデプロイ
サーバーのセットアップ
- Laravel Forgeにログインし、新しいサーバーを作成します。ForgeはDigitalOcean、AWS、Linodeなどのクラウドプロバイダをサポートしています。
- サーバーがセットアップされたら、新しいサイトを作成し、GitHubリポジトリを接続します。
環境設定の追加
- 作成したサイトの「環境設定」タブで、本番環境用の
.env
ファイルの内容を追加します。 - 「デプロイスクリプト」タブで、デプロイスクリプトを編集します。
デプロイスクリプトの例
cd /home/forge/yourdomain.com
git pull origin main
composer install --no-interaction --prefer-dist --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
npm install
npm run production
Bashデプロイの実行
サイトの「デプロイ」タブから「デプロイ」ボタンをクリックして、デプロイを実行します。
3. GitHub Actionsを使ったデプロイ
ワークフローファイルの作成
GitHubリポジトリのルートに .github/workflows/deploy.yml
ファイルを作成します。
deploy.ymlの例
name: Deploy to Production
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
extensions: mbstring, intl, redis
- name: Install Composer dependencies
run: composer install --no-interaction --prefer-dist --optimize-autoloader
- name: Install NPM dependencies
run: npm install
- name: Build assets
run: npm run production
- name: Deploy to server
env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
ssh -o StrictHostKeyChecking=no forge@yourdomain.com -i $DEPLOY_KEY << 'EOF'
cd /home/forge/yourdomain.com
git pull origin main
composer install --no-interaction --prefer-dist --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
EOF
YAMLシークレットの設定
GitHubリポジトリの「Settings」→「Secrets and variables」→「Actions」から、新しいシークレットを追加します。ここでは、DEPLOY_KEY
としてSSHデプロイキーを設定します。
4. 運用管理
ログ管理
Laravelは、デフォルトで storage/logs
フォルダにログを保存します。本番環境では、エラーログやアプリケーションログを定期的に確認しましょう。
ログの設定
config/logging.php
ファイルでログの設定を行います。例として、stack
チャンネルにSlack通知を追加します。
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily', 'slack'],
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => 'error',
],
],
PHPパフォーマンスモニタリング
パフォーマンスの監視には、New RelicやLaravel Telescopeを使用します。
Laravel Telescopeのインストール
./vendor/bin/sail composer require laravel/telescope
./vendor/bin/sail artisan telescope:install
./vendor/bin/sail artisan migrate
BashTelescopeの設定
config/telescope.php
ファイルで設定を行い、本番環境での使用を有効にします。
バックアップ
定期的なデータベースとファイルのバックアップを設定します。Laravel Backupパッケージを使用すると便利です。
Laravel Backupのインストール
./vendor/bin/sail composer require spatie/laravel-backup
./vendor/bin/sail artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
Bashバックアップの設定
config/backup.php
ファイルで設定を行い、S3などのリモートストレージを使用する場合は、適切な設定を追加します。
セキュリティアップデート
Laravelや依存パッケージのセキュリティアップデートを定期的に確認し、適用します。
Composerのアップデート
./vendor/bin/sail composer update
Bash5. まとめ
この記事では、Laravel 10を使って構築したAPIのデプロイと運用管理について解説しました。適切なデプロイ手順を踏み、運用中に必要な監視やバックアップを行うことで、アプリケーションの安定性とセキュリティを維持することができます。この連載を通して、Laravel 10でのAPI開発の基本から運用までを学んでいただけたと思います。引き続き、学びを深めていきましょう!
コメント