web-dev-qa-db-ja.com

Develモジュールが実稼働環境にインストールされないようにする方法

新しいDrupal 8構成マネージャーを使用して、特定の環境にDevelモジュールがインストールされないようにするにはどうすればよいですか?私の知る限り、ローカルにインストールすることは、次回構成をエクスポートするときを意味しますそれを他の環境(dev、test、prod)に移動すると、自動的に有効になります。

25
cambraca

メソッド:Drush

  • Drushは、構成を同期するときに拡張機能の有効な状態を無視できます。

    drush cex --skip-modules=devel

    drush cim --skip-modules=devel

  • Drush CMIツール を使用すると、無視する構成のリストを操作できます。

    drush cexy --ignore-list=/path/to/config-ignore.yml

    drush cimy --delete-list=/path/to/config-ignore.yml

メソッド:モジュール

  • 次のことを可能にする Configuration Split モジュールを使用できます。

    1. 一部の構成を専用フォルダーに分割
    2. ブラックリスト構成
    3. 一連の構成を無視する
    4. 構成エンティティーによって構成されます
  • 構成読み取り専用モード モジュール

    このモジュールを使用すると、Drupal管理UIを介して行われた構成変更をロックできます。これは、たとえば構成変更を本番環境では行わず、ステージングまたはローカルでのみ行う必要があるシナリオで役立ちます。環境。

    $settings['config_readonly'] = TRUE;

  • また、別のモジュールは Environment Config で、環境ごとに構成をオーバーライドできます。

18

更新:以下で説明する機能は最近削除されました https://www.drupal.org/project/config_split/issues/2926505 =


展開プロセスでdrushを使用している場合は、次のことができます。

drushrc.phpと同じディレクトリにsettings.phpファイルを作成し(例:docroot/sites/default)、次のように記述します。

$drush_ignore_modules = array(
  'devel',
  'webprofiler',
  'devel_generate',
  'kint',
  'yaml_editor',
);

$command_specific['config-export']['skip-modules'] = $drush_ignore_modules;
$command_specific['config-import']['skip-modules'] = $drush_ignore_modules;

つまり、drush cex/drush cimコマンドを操作して、モジュールの処理中にモジュールをスキップできます。

Drush 8での設定モジュールフィルターの使用 の詳細を読むことができます。

6
ssibal

drush cex --skip-modulesは、これで説明されているようにconfig_splitに置き換えられて削除されました issue したがって、drushに基づいたここでのソリューションは私にとってうまくいきませんでした。

config_exclude モジュールを使用したDuncanmooソリューションに基づくソリューションは次のとおりです

1. Composer require --devを使用してconfig_excludeをインストールし、構成します

$ composer require --dev drupal/config_exclude
$ drush en config_exclude -y
$ nano sites/default/setting.php

ローカルの開発環境でsettings.phpを使用できるようにします

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}

ローカルファイルにconfig_exclude設定を追加する

$ nano sites/default/setting.local.php

ここにいくつかのサンプル設定があります

$settings['config_exclude_modules'] = [
    'devel', 
    'config_exclude',
    'config_filter',
    ...
    'stage_file_proxy',
];

注1:config_filterはconfig_excludeの依存関係であるため、本番環境が必要ない場合は、上記で除外できます

注2:settings.local.phpは必須ではありません。 VCSによって制御されているかどうかによって異なります。

2. Composer require --dev

純粋に開発用のモジュールを有効にする場合は、-devフラグを使用します。

$ composer require --dev drupal/devel

これにより、それらの依存関係がrequire-devの下のcomposer.jsonファイルに追加されます。

...
    "require-dev": {
        "drupal/twig_xdebug": "^1.0",
        "drupal/devel": "^1.0@RC"
    }
}

したがって、使用する開発モジュールなしでサイトをインストールする場合:

$ composer install --no-dev

注:ステージング環境と製品環境では、常に--no-devを実行する必要があります

3.通常使用しているように、drush cexを使用します

$ drush cex 

除外されたモジュール設定をエクスポートしません

注:core.extension設定が変更されているようです上記のコマンドを実行した後、対応する.ymlがハードドライブに書き込まれないため(will be deleted and replaced with the active configを確認した後も)、コミットするものは何もないので、config_excludeモジュール

5
GiorgosK

composerでコミットされた開発モジュールで終了し、これらのモジュールの構成が構成エクスポートに追加されない(2つの部分がある))、これを行うためのきちんとした方法があります。

1。 Composer require --dev開発専用のモジュールを有効にする場合は、-devフラグを使用します。

$ composer require --dev drupal/devel

これにより、それらの依存関係がrequire-devの下のcomposer.jsonファイルに追加されます。

...
    "require-dev": {
        "drupal/twig_xdebug": "^1.0",
        "drupal/devel": "^1.0@RC"
    }
}

したがって、開発モジュールなしでサイトをインストールすると、次のようになります。

$ composer install --no-dev

NB:ステージング環境と製品環境では、常に--no-devを実行する必要があります

2。 config_split moduleを使用します

構成分割モジュールを使用すると、環境で有効または無効にできる構成エクスポートのグループを作成できます。

私は実際には3つの分割があります:

  1. メインサイトの構成(どこでも有効化;開発およびステージングと本番)
  2. ステージング構成(開発およびステージングで有効)-含まれています メールモジュールの再ルーティング
  3. 開発構成-開発、キントが含まれますが、ステージング構成が開発で有効になっているため、電子メールを再ルーティングしません。
2
Duncanmoo

構成の分割 は、一部の人にとって実行可能なソリューションである可能性があります。

Drupal 8構成管理は、サイト構成のセット全体をインポートおよびエクスポートするときに最適に機能します。ただし、開発者は、CMの堅牢性を無効にして、構成のスーパーセットをアクティブにしたい場合があります開発マシン上でサブセットのみをデプロイします。これの標準的な例は、開発モジュールを有効にするか、開発環境でいくつかのブロック配置またはビューを用意し、デプロイする構成のセットにエクスポートしないで、同僚と開発構成を共有できる。

https://www.drupal.org/project/config_split

2
Kevin

Drupal 8.3.xには興味深い問題があります:8.3.x: config-exportからオプトアウトすることを開発モジュールに許可する 。一般的なコンセンサスは Configuration Split です。 =現在のところ最良の解決策です。

swentel によるコメント:

Config_splitがどのように機能するかを簡単に文書化したかっただけです。configsplit configエンティティは、ブラックリストに登録するものを定義し、モジュールや構成オブジェクトをブラックリストに登録できるようにします。正規の例であるdevelには、すでに興味深いユースケースがあります。これはsystem.menu.develに付属しており、develをブラックリストに登録した場合、依存関係がないためメニュー構成ファイルは削除されません。大きな問題ではありませんが、config splitを使用すると、個別に選択できるため、環境から削除されます。

geerlingguy によるコメント:

環境固有の構成を管理するいくつかの異なる方法を試してみましたが、config_splitは、これまでのところ、最適なユーザビリティと追加のオーバーヘッドのバランスのバランスが最も優れているようです。シンプルで軽量ですが、特定の環境でのみ特定の構成をマーク(および使用し続ける)できます。

2
Wim Mostrey

これにはデプロイメントオーバーライドモジュールを使用できます。詳細については、次のリンクを参照してください。

http://dcycleproject.org/blog/46/continuous-deployment-drupal-style

ただし、これを行う最善の方法は、ローカルでモジュールを無効にしてから構成をエクスポートすることです。

Drupalはsettings.phpの構成設定をオーバーライドする方法を提供しますが、モジュールの無効化/有効化には無効です。

default.settings.phpから:

/**
 * Configuration overrides.
 *  * To globally override specific configuration values for this site,
 * set them here. 
 * 
 *
 * blah..blah...blah
 *
 *  
 * There are particular configuration values that are risky to override. For
 * example, overriding the list of installed modules in 'core.extension' is not
 * supported as module install or uninstall has not occurred. Other examples
 * include field storage configuration, because it has effects on database
 * structure, and 'core.menu.static_menu_link_overrides' since this is cached in
 * a way that is not config override aware. Also, note that changing
 * configuration values in settings.php will not fire any of the configuration
 * change events.
 */
1
kmdhrm

私はそれをすべて一度に行うための小さなスクリプトを作りました。

#!/bin/bash

drush pm-uninstall devel -y
drush pm-uninstall field_ui -y
drush pm-uninstall field_name_prefix_remove -y

drush config-export

drush en devel -y
drush en field_ui -y
drush en field_name_prefix_remove -y
1
Roebrt Brown

Config Ignore モジュールも確認できます。

このモジュールは、必要な構成を適切な場所に維持するためのツールです。

System.site構成(そのサイト名、スローガン、電子メールなどが含まれる)を、構成に関係なく、エクスポートフォルダー内のライブサイトで変更せずにそのままにしたいとします。

または、構成をインポートするたびにdevel.settingsを変更することに飽き飽きしているのではないでしょうか?

1
DRUPWAY

Drupal 8.8で導入されました。そのための設定があります: 新しいconfig_exclude_modules設定はどのように正確に機能しますか?

Develモジュールであなたを除外するには

  1. 開発関連の構成yamlファイルを削除する
  2. 追加 $settings['config_exclude_modules'] = ['devel'];をsettings.phpに、またはさらに良いことに、settings.local.phpに。
0
Erlend ter Maat