環境設定

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 を開発環境に指定しています。

[ui-tabs] [ui-tab title="Apache 2"]
<VirtualHost 127.0.0.1:80>
    ...

    SetEnv GRAV_ENVIRONMENT development
</VirtualHost>
[/ui-tab] [ui-tab title="NGINX php-fpm"]
location / {
    ...

   fastcgi_param GRAV_ENVIRONMENT development;
}
[/ui-tab] [ui-tab title="NGINX php-cgi"]
location / {
   ...

    env[GRAV_ENVIRONMENT] = development
}
[/ui-tab] [ui-tab title="Docker"]
web:
  environment:
    - GRAV_ENVIRONMENT=development
[/ui-tab] [ui-tab title="PHP"]
// Set environment in setup.php or make sure it runs before Grav.
define('GRAV_ENVIRONMENT', 'development');
[/ui-tab] [/ui-tabs]

カスタム環境パス

Grav 1.7 からは、環境の場所を変更することもできます。すべての環境に共通の場所を設定するか、1 つずつ定義するかの 2 つの方法があります。

すべての環境に対応するカスタム・ロケーション

もし、何かしらの理由で環境のデフォルトの user/env の場所に満足できない場合は、環境変数 GRAV_ENVIRONMENTS_PATH を使って変更することができます。

GRAV_ENVIRONMENTS_PATH の値は GRAV_ROOT の下にある既存のパスでなければなりません。末尾のスラッシュは付けないでください。

次の例では、すべての環境は user/sites/GRAV_ENVIRONMENT に配置されます。GRAV_ENVIRONMENT は自動的に検出されるか、サーバー構成で手動で設定されるかのどちらかです。

[ui-tabs] [ui-tab title="Apache 2"]
<VirtualHost 127.0.0.1:80>
...

    SetEnv GRAV_ENVIRONMENTS_PATH user://sites
</VirtualHost>
[/ui-tab] [ui-tab title="NGINX php-fpm"]
location / {
    ...

fastcgi_param GRAV_ENVIRONMENTS_PATH user://sites;
}
[/ui-tab] [ui-tab title="NGINX php-cgi"]
location / {
...

    env[GRAV_ENVIRONMENTS_PATH] = user://sites
}
[/ui-tab] [ui-tab title="Docker"]
web:
  environment:
    - GRAV_ENVIRONMENTS_PATH=user://sites
[/ui-tab] [ui-tab title="PHP"]
// Set environments path in setup.php or make sure that the following code runs before Grav.
define('GRAV_ENVIRONMENTS_PATH', 'user://sites');
[/ui-tab] [/ui-tabs]

現在の環境のためのカスタム・ロケーション

環境に応じてカスタム・ロケーションを用意すると便利な場合があります

GRAV_ENVIRONMENT_PATH の値は GRAV_ROOT の下にある既存のパスである必要があります。末尾のスラッシュは付けないでください。

次の例では、既定の環境だけが user/developmentに配置されることになります。

[ui-tabs] [ui-tab title="Apache 2"]
<VirtualHost 127.0.0.1:80>
...

    SetEnv GRAV_ENVIRONMENT_PATH user://development
</VirtualHost>
[/ui-tab] [ui-tab title="NGINX php-fpm"]
location / {
    ...

fastcgi_param GRAV_ENVIRONMENT_PATH user://development;
}
[/ui-tab] [ui-tab title="NGINX php-cgi"]
location / {
...

    env[GRAV_ENVIRONMENT_PATH] = user://development
}
[/ui-tab] [ui-tab title="Docker"]
web:
  environment:
    - GRAV_ENVIRONMENT_PATH=user://development
[/ui-tab] [ui-tab title="PHP"]
// Set environment path in setup.php or make sure that the following code runs before Grav.
define('GRAV_ENVIRONMENT_PATH', 'user://development');
[/ui-tab] [/ui-tabs]

GRAV_ENVIRONMENT_PATHGRAV_ENVIRONMENT とは別なので、現在のドメイン名と自動的に一致するように環境名を設定させたくない場合は、環境名も設定することに注意します。

さらなるカスタマイズ

環境は、このページで紹介した以外にも、さまざまなカスタマイズが可能です。

詳しくは、次ページにお進みください。マルチサイトのセットアップ


オリジナル : https://learn.getgrav.org/17/advanced/environment-config