Grav は、開発、ステージング、本番 それぞれ、別々設定をサポートする機能を備えています。
[version=17]
Grav 1.6 までの環境設定は user/
フォルダに保存されていました。Grav 1.7 では、環境のメンテナンスを容易にするため、環境を user/env/
に移動しました。既存のサイトでは、すべての環境をこの新しい場所に移動することを強くお勧めします。
[/version]
これは何を意味するかというと、環境ごとの設定変更を必要な分だけ提供できるということです。この良い例が、Debug Bar です。デフォルトでは、新しい Debug Bar はコアとなる system/config/system.yaml
ファイルでオーバーライドして無効化されています。
user/config/system.yaml
もしこれを有効にしたい場合は、user/config/system.yaml
ファイルで簡単に有効にできますが、より良い解決策は、開発環境では localhost 経由でアクセスするときに有効にし、本番環境では無効にすることです。
その設定のオーバーライドを提供することで簡単に実現できます。
[version=15,16]
user/localhost/config/system.yaml
[/version]
[version=17]
user/env/localhost/config/system.yaml
[/version]
localhost
は環境のホスト名を指定します。(ブラウザで入力するホスト名は、例えば http://localhost/your-site です。)
debugger:
enabled: true
同様に、CSS、Link、JS、JS Module Asset Pipelining(combining + minification)を本番サイトのみ ([version=15,16]user/www.mysite.com/config/system.yaml
[/version][version=17]user/env/www.mysite.com/config/system.yaml
[/version]) で有効にすることも可能です。
assets:
css_pipeline: true
js_pipeline: true
js_module_pipeline: true
本番用サーバーが http://www.mysite.com
でアクセスできるのであれば、[version=15,16]user/www.mysite.com/config/system.yaml
[/version][version=17]user/env/www.mysite.com/config/system.yaml
[/version] にあるファイルで、その本番用サイト固有の設定を提供することもできます。
もちろん、system.yaml
の変更に限らず、site.yaml
やプラグインの設定も Grav の設定をオーバーライドすることもできます。
Scheduler を使用する場合、localhost
環境を使用するため、その設定に注意が必要です。
プラグインのコンフィギュレーション YAML ファイルをオーバーライドするには、通常のファイルをオーバーライドするのと同じ処理を行うだけです。標準のコンフィギュレーションファイルが以下の場合を説明します。
user/config/plugins/email.yaml
localhost
で使用したい特定のオプションだけをオーバーライドする設定で、これを上書きすることができます。
[version=15,16]
user/localhost/config/plugins/email.yaml
[/version]
[version=17]
user/env/localhost/config/plugins/email.yaml
[/version]
ファイルの中身を、以下のように記載します。
mailer:
engine: smtp
smtp:
server: smtp.mailtrap.io
port: 2525
encryption: none
user: '9a320798e65135'
password: 'a13e6e27bc7205'
テーマも同じように上書きすることができます。
user/config/themes/antimatter.yaml
任意の環境、例えばある本番サイト (http://www.mysite.com
) に対してオーバーライドすることができます。
[version=15,16]
user/www.mysite.com/config/themes/antimatter.yaml
[/version]
[version=17]
user/env/www.mysite.com/config/themes/antimatter.yaml
Grav 1.7
から、サーバーの設定を使って環境を設定することが可能になりました。この使用方法では、サーバーから環境変数を設定するか、Grav の前に実行されるスクリプトから、使用する環境を選択することになります。
環境を設定する最も簡単な方法は、GRAV_ENVIRONMENT
を使用することです。GRAV_ENVIRONMENT
の値は、ドメインを含むか含まないかの有効なサーバ名である必要があります。
次の例では、localhost を開発環境に指定しています。
<VirtualHost 127.0.0.1:80>
...
SetEnv GRAV_ENVIRONMENT development
</VirtualHost>
location / {
...
fastcgi_param GRAV_ENVIRONMENT development;
}
location / {
...
env[GRAV_ENVIRONMENT] = development
}
web:
environment:
- GRAV_ENVIRONMENT=development
// Set environment in setup.php or make sure it runs before Grav.
define('GRAV_ENVIRONMENT', 'development');
Grav 1.7 からは、環境の場所を変更することもできます。すべての環境に共通の場所を設定するか、1 つずつ定義するかの 2 つの方法があります。
もし、何かしらの理由で環境のデフォルトの user/env
の場所に満足できない場合は、環境変数 GRAV_ENVIRONMENTS_PATH
を使って変更することができます。
GRAV_ENVIRONMENTS_PATH
の値は GRAV_ROOT
の下にある既存のパスでなければなりません。末尾のスラッシュは付けないでください。
次の例では、すべての環境は user/sites/GRAV_ENVIRONMENT
に配置されます。GRAV_ENVIRONMENT
は自動的に検出されるか、サーバー構成で手動で設定されるかのどちらかです。
<VirtualHost 127.0.0.1:80>
...
SetEnv GRAV_ENVIRONMENTS_PATH user://sites
</VirtualHost>
location / {
...
fastcgi_param GRAV_ENVIRONMENTS_PATH user://sites;
}
location / {
...
env[GRAV_ENVIRONMENTS_PATH] = user://sites
}
web:
environment:
- GRAV_ENVIRONMENTS_PATH=user://sites
// Set environments path in setup.php or make sure that the following code runs before Grav.
define('GRAV_ENVIRONMENTS_PATH', 'user://sites');
環境に応じてカスタム・ロケーションを用意すると便利な場合があります
GRAV_ENVIRONMENT_PATH
の値は GRAV_ROOT
の下にある既存のパスである必要があります。末尾のスラッシュは付けないでください。
次の例では、既定の環境だけが user/development
に配置されることになります。
<VirtualHost 127.0.0.1:80>
...
SetEnv GRAV_ENVIRONMENT_PATH user://development
</VirtualHost>
location / {
...
fastcgi_param GRAV_ENVIRONMENT_PATH user://development;
}
location / {
...
env[GRAV_ENVIRONMENT_PATH] = user://development
}
web:
environment:
- GRAV_ENVIRONMENT_PATH=user://development
// Set environment path in setup.php or make sure that the following code runs before Grav.
define('GRAV_ENVIRONMENT_PATH', 'user://development');
GRAV_ENVIRONMENT_PATH
は GRAV_ENVIRONMENT
とは別なので、現在のドメイン名と自動的に一致するように環境名を設定させたくない場合は、環境名も設定することに注意します。
環境は、このページで紹介した以外にも、さまざまなカスタマイズが可能です。
詳しくは、次ページにお進みください。マルチサイトのセットアップ。
オリジナル : https://learn.getgrav.org/17/advanced/environment-config