Laravel - 設定

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

主要な設定ファイルはconfigディレクトリに格納されており、中心となるのは.envファイルである。
.envファイルには、環境固有の設定 (データベース接続情報やAPIキー等) を記述する。

設定の基本的な構造として、configディレクトリ内の各ファイルは特定の機能や要素に対応している。

  • app.php
    アプリケーションの基本設定を管理する。
    タイムゾーン、ロケール、プロバイダの設定等が含まれる。
  • database.php
    データベース関連の設定を行う。
    接続情報やマイグレーション設定等を管理できる。
    特に、実際の接続情報は.envファイルから読み込まれる。
  • cache.php
    キャッシュの設定を管理する。
    Redisやmemcached等、複数のキャッシュドライバを切り替えることが可能である。
  • session.php
    セッション管理を行う。
    ドライバの選択やセッションのライフタイム等を設定する。


設定値へのアクセス方法としては、configヘルパー関数を使用する。

 // タイムゾーンを取得する場合
 
 $value = config('app.timezone');


環境別の設定管理について、重要な点がある。
本番環境と開発環境で異なる設定を使用する場合、.envファイルを環境ごとに用意することで柔軟に対応することができる。
例えば、セキュリティの観点から、機密情報 (APIキーやデータベースパスワード等) は必ず.envファイルで管理して、バージョン管理システムにコミットしないようにすることが推奨される。

設定のキャッシュ機能も活用すべき重要な機能である。
本番環境においては、以下に示すコマンドで設定をキャッシュすることにより、パフォーマンスを向上させることができる。

php artisan config:cache



ディレクトリ構造

詳細は、Laravel - Laravelの構造のページを参照すること。

  • app
    アプリケーションのコアコードを配置する。
    • Http/Controllers
      コントローラクラス
    • Models
      Eloquentモデル
    • Providers
      サービスプロバイダ
  • config
    設定ファイルを格納する。
    • app.php
      アプリケーションの基本設定
    • database.php
      データベース接続設定
    • auth.php
      認証設定
  • database
    • migrations
      データベースマイグレーションファイル
    • seeders
      データベースシーダ
    • factories
      モデルファクトリ
  • routes
    • web.php
      Web用ルート定義
    • api.php
      API用ルート定義
  • resources
    • views
      Bladeテンプレート
    • css
      CSSファイル
    • js
      JavaScriptファイル
  • public
    公開ディレクトリ
    • index.php
      エントリーポイント
    • アセットファイル
      画像、CSS、JS等
  • storage
    • app
      アプリケーションが生成するファイル
    • logs
      ログファイル
    • framework
      フレームワークが生成する一時ファイル



.env

.envファイルの配置

Laravelのプロジェクトディレクトリ直下にenvディレクトリを作成する。

cd <Laravelのプロジェクトディレクトリ>
mkdir env


次に、以下に示すような本番向け、開発向け等に名前を分けてディレクトリを作成する。

cd env
mkdir dev     \  # 開発向け
      staging \  # 評価・試験向け
      prod       # 本番向け


この時、プロジェクトディレクトリ直下に存在する.envファイルを、各ディレクトリにコピーする。
また、プロジェクトディレクトリ直下にある既存の.envファイルは削除すること。

.envファイルの切り替え

.envファイルの読み込みは、Laravelのプロジェクトディレクトリ直下にあるbootstrap/app.phpファイルで指定する。

サーバ情報からホスト名を取得して切り替える。

 // bootstrap/app.phpファイル
 
 // 追記
 switch ($_SERVER['HTTP_HOST'] ?? 'localhost') {
    case 'localhost':              // 開発向け
       $app->loadEnvironmentFrom('env/dev');
       break;
    case 'staging.maydomain.com':  // 評価・試験向け
       $app->loadEnvironmentFrom('env/staging');
       break;
    case 'prod.maydomain.com':     // 本番向け
       $app->loadEnvironmentFrom('env/prod');
       break;
 }


キャッシュの更新

キャッシュを更新 (configのキャッシュ再生成) して、各環境で正常に画面が表示されることを確認する。

php artisan config:cache


.envファイルの設定

APP_NAME=<アプリケーション名>
APP_ENV=local
APP_KEY=<自動生成される>
APP_DEBUG=<true または false  開発向けはdebugを指定する>
APP_URL=<WebサイトのURL  例: http://localhost>

DB_CONNECTION=<データベース  例: mysql>
DB_HOST=<データベースのホスト名  127.0.0.1>
DB_PORT=<データベースに接続するポート番号  例: 3306>
DB_DATABASE=<データベース名>
DB_USERNAME=<データベースのユーザ名>
DB_PASSWORD=<データベースのパスワード>



アプリケーションキーの生成

Laravelアプリケーションの暗号化キーを生成する。

php artisan key:generate


.envファイル内のAPP_KEYの値を設定する。
これは、32文字のランダムな文字列が生成される。

アプリケーションキーは以下に示す用途で使用される。

  • セッションデータの暗号化
  • クッキーデータの暗号化
  • その他の機密データの暗号化


※重要性

  • アプリケーションのセキュリティに不可欠である。
  • アプリケーションを初めて設定する際に必ず実行する必要がある。
  • キーが設定されていない場合、アプリケーションは安全に動作しない。



データベースのマイグレーション

データベースの構造を作成・更新する。

php artisan migrate


database/migrationsディレクトリ内のマイグレーションファイルを実行する。
テーブルの作成、修正、削除等のデータベース構造の変更を行う。

また、マイグレーションの実行履歴をデータベースのmigrationsテーブルで管理する。

特徴

  • データベース構造をバージョン管理できる。
  • チーム開発時にデータベース構造を共有できる。
  • ロールバック可能
    php artisan migrate:rollback
  • 開発環境と本番環境で同じ構造を保証できる。



ストレージディレクトリのシンボリックリンク作成

パブリックからアクセス可能なストレージへのシンボリックリンクを作成する。

php artisan storage:link


public/storageからstorage/app/publicへのシンボリックリンクを作成する。
アップロードされたファイルへのパブリックアクセスを可能にする。

使用例と重要性

  • ユーザーがアップロードした画像を表示する。
  • パブリックにアクセス可能なファイルを管理する。
  • セキュアなストレージ構造を維持しながら、必要なファイルへのアクセスを提供する。


実行するタイミング

  • アプリケーションの初期セットアップ時
  • ファイルアップロード機能を実装する際
  • 本番環境へのデプロイ時



アセットコンパイル

Laravel 9 / 10 (Viteの使用)

  • Viteを使用して、より高速なビルドを行うことが可能である。
  • HMR (Hot Module Replacement) に対応している。
  • vite.config.jsファイルで設定する。
  • ブレードテンプレートでの読み込み方が変更できる。


また、Laravel 9 / 10でもLaravel Mixを使用することは可能である。

# package.jsonの依存関係インストール
npm install

# 開発サーバ起動
npm run dev

# 本番環境向けビルド
npm run build


 /* 設定ファイル: vite.config.js の例 */
 
 import { defineConfig } from 'vite';
 import laravel from 'laravel-vite-plugin';
 
 export default defineConfig({
    plugins: [
       laravel({
          input: ['resources/css/app.css', 'resources/js/app.js'],
          refresh: true,
       }),
    ],
 });


Laravel 8 (Laravel Mixの使用)

  • Laravel Mix (Webpackのラッパ) を使用する。
  • webpack.mix.jsファイルで設定する。
  • npm run watchコマンドでファイル変更監視が可能である。


# package.jsonの依存関係インストール
npm install

# 開発環境向けコンパイル
npm run dev

# 本番環境向けコンパイル (ミニファイ化)
npm run prod

# ファイル変更の監視
npm run watch


 /* 設定ファイル : webpack.mix.js の例 */
 
 const mix = require('laravel-mix');
 
 mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css')
   .version();  // キャッシュバスティング


ブレードテンプレートでの読み込み方の違い

  • Laravel 9 / 10 (Viteの使用)
 <!-- CSS & JavaScript -->
 @vite(['resources/css/app.css', 'resources/js/app.js'])
 
 <!-- または個別に -->
 @vite('resources/css/app.css')
 @vite('resources/js/app.js')


  • Laravel 8 (Laravel Mixの使用)
 <!-- CSS -->
 <link href="{{ mix('css/app.css') }}" rel="stylesheet">
 
 <!-- JavaScript -->
 <script src="{{ mix('js/app.js') }}"></script>


Viteへの移行は比較的簡単で、公式ドキュメントにガイドがある。
Laravel 9 / 10では、開発時のビルド速度が大幅に改善されており、Laravel 10では、Viteの設定がより柔軟になっている。


デバッグ

Laravel Debugbar / Xdebug

Laravel DebugbarとXdebugは異なる用途で使われており、両方とも有用なツールである。

  • Laravel Debugbarの特徴
    ブラウザ上でリアルタイムに情報を表示する。
    クエリの実行時間、メモリ使用量、リクエスト情報等を可視化する。
    ルート情報、セッション変数の確認が容易になる。
    導入が簡単 (composerコマンドでインストール可能)
    本番環境では自動的に無効化される。


  • Xdebugの特徴
    コードのステップ実行が可能。
    変数の中身を詳細に確認できる。
    ブレークポイントを設定して特定の箇所で処理を止められる。
    PHPStorm等のIDEと連携して使用できる。
    より深いレベルのデバッグが可能。


推奨される使用方法を以下に示す。

  • 日常的な開発時の監視 : Laravel Debugbar
  • 複雑なバグの追跡や詳細な解析時 : Xdebug


Laravel DebugbarとXdebugの両方を導入することを推奨する。

# Laravel Debugbarのインストール
composer require barryvdh/laravel-debugbar --dev

# Xdebugのインストール (PHPの拡張機能として)
インストール - Xdebugのページを参照すること


Laravel Debugbarは開発の効率を上げる便利なツールで、Xdebugは複雑な問題を解決するための強力なツールである。
用途に応じて使い分けることにより、より効果的なデバッグが可能になる。

Laravel Debugbarの設定

Laravel Debugbarは基本的に最小限の設定で動作するが、いくつかの推奨される設定手順がある。

Laravel Debugbarをインストールした後、開発環境では自動的に有効になる。
.envファイルのAPP_DEBUGの値がtrueの場合のみ、Debugbarが表示される。

以下に示すコマンドを実行することにより、config/debugbar.phpファイルが作成して、設定をカスタマイズすることができる。

php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

* Debugbarの有効 / 無効の切り替え
* 表示する情報の選択
* キャプチャするクエリの数
* 特定のURLでの無効化


推奨される基本設定を以下に示す。

# .envファイル

# 開発環境
APP_DEBUG=true
DEBUGBAR_ENABLED=true

# 本番環境
APP_DEBUG=false
DEBUGBAR_ENABLED=false


※注意
センシティブな情報が表示される可能性があるため、本番環境では必ず無効にする。

.envファイルを設定した後、キャッシュを削除することが推奨される。
これは、Laravelは設定をキャッシュすることがあるため、.envファイルの変更が即時に反映されない場合がある。
そのため、config:clearコマンドを実行することにより、設定のキャッシュを削除して新しい設定が確実に反映されるようにする。

# キャッシュを削除する場合
php artisan config:clear

# キャッシュを完全に削除する場合
php artisan cache:clear


その後、Webブラウザをリロードすることにより、画面下部にDebugbarが表示される。


推奨される設定

キャッシュの設定

php artisan config:cache
php artisan route:cache
php artisan view:cache


コンポーザの最適化

composer dump-autoload -o


開発環境でのデバッグツールのインストール

composer require barryvdh/laravel-debugbar --dev



セキュリティ設定

以下に示す設定が完了した後、開発サーバを再起動する。

php artisan serve


CSRFトークンの有効化 (デフォルトで有効)

.envファイルのアクセス制限

セッション設定の確認 (config/session.php)

ファイルパーミッションの適切な設定

chmod -R 755 storage bootstrap/cache



追加パッケージの導入

必要に応じて、以下に示すような追加パッケージを導入することを検討する。

  • Laravel Breeze/Jetstream (認証)
  • Laravel Sanctum (API認証)
  • Laravel Socialite (ソーシャルログイン)
  • Spatie/Laravel-permission (権限管理)