「Laravel - 設定」の版間の差分
(→概要) |
|||
193行目: | 193行目: | ||
* ファイルアップロード機能を実装する際 | * ファイルアップロード機能を実装する際 | ||
* 本番環境へのデプロイ時 | * 本番環境へのデプロイ時 | ||
<br><br> | |||
== アセットコンパイル == | |||
==== Laravel 9 / 10 (Viteの使用) ==== | |||
* Viteを使用して、より高速なビルドを行うことが可能である。 | |||
* HMR (Hot Module Replacement) に対応している。 | |||
* vite.config.jsファイルで設定する。 | |||
* ブレードテンプレートでの読み込み方が変更できる。 | |||
<br> | |||
また、Laravel 9 / 10でもLaravel Mixを使用することは可能である。<br> | |||
<br> | |||
# package.jsonの依存関係インストール | |||
npm install | |||
# 開発サーバ起動 | |||
npm run dev | |||
# 本番環境向けビルド | |||
npm run build | |||
<br> | |||
<syntaxhighlight lang="js"> | |||
/* 設定ファイル: 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, | |||
}), | |||
], | |||
}); | |||
</syntaxhighlight> | |||
<br> | |||
==== Laravel 8 (Laravel Mixの使用) ==== | |||
* Laravel Mix (Webpackのラッパ) を使用する。 | |||
* webpack.mix.jsファイルで設定する。 | |||
* <code>npm run watch</code>コマンドでファイル変更監視が可能である。 | |||
<br> | |||
# package.jsonの依存関係インストール | |||
npm install | |||
# 開発環境向けコンパイル | |||
npm run dev | |||
# 本番環境向けコンパイル (ミニファイ化) | |||
npm run prod | |||
# ファイル変更の監視 | |||
npm run watch | |||
<br> | |||
<syntaxhighlight lang="js"> | |||
/* 設定ファイル : webpack.mix.js の例 */ | |||
const mix = require('laravel-mix'); | |||
mix.js('resources/js/app.js', 'public/js') | |||
.sass('resources/sass/app.scss', 'public/css') | |||
.version(); // キャッシュバスティング | |||
</syntaxhighlight> | |||
<br> | |||
==== ブレードテンプレートでの読み込み方の違い ==== | |||
* Laravel 9 / 10 (Viteの使用) | |||
<syntaxhighlight lang="html"> | |||
<!-- CSS & JavaScript --> | |||
@vite(['resources/css/app.css', 'resources/js/app.js']) | |||
<!-- または個別に --> | |||
@vite('resources/css/app.css') | |||
@vite('resources/js/app.js') | |||
</syntaxhighlight> | |||
<br> | |||
* Laravel 8 (Laravel Mixの使用) | |||
<syntaxhighlight lang="html"> | |||
<!-- CSS --> | |||
<link href="{{ mix('css/app.css') }}" rel="stylesheet"> | |||
<!-- JavaScript --> | |||
<script src="{{ mix('js/app.js') }}"></script> | |||
</syntaxhighlight> | |||
<br> | |||
Viteへの移行は比較的簡単で、公式ドキュメントにガイドがある。<br> | |||
Laravel 9 / 10では、開発時のビルド速度が大幅に改善されており、Laravel 10では、Viteの設定がより柔軟になっている。<br> | |||
<br><br> | <br><br> | ||
2024年11月3日 (日) 11:43時点における版
概要
主要な設定ファイルは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
- モデルファクトリ
- migrations
- routes
- web.php
- Web用ルート定義
- api.php
- API用ルート定義
- web.php
- resources
- views
- Bladeテンプレート
- css
- CSSファイル
- js
- JavaScriptファイル
- views
- public
- 公開ディレクトリ
- index.php
- エントリーポイント
- アセットファイル
- 画像、CSS、JS等
- storage
- app
- アプリケーションが生成するファイル
- logs
- ログファイル
- framework
- フレームワークが生成する一時ファイル
- app
.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の設定がより柔軟になっている。