dumpingを意味する「cloningWebサイト」ソリューションが好きではないデータベースとこのダンプを別の環境にインポートします。これは、同じWebサイトの複数のインスタンス(staging/prod/dev/etc)をデプロイする実際の方法の方法とは異なります。
D7では、通常、カスタムプロファイルを使用し、drushを使用してこれらのプロファイルからWebサイトをインストールしました(後で機能を使用して後でサイトを同期する場合もあります)。これにより、新しいインストールが提供され、テストコンテンツはありませんが、重要な設定が共有されました。たとえば、一般的なコンテンツの同期は移行で行われます。
同じインストールプロファイルを共有する複数のD8インスタンスを管理しようとしました。最終的な目標は、サイト構成の共有と同期です。また、インストールごとに異なるサイトUUIDがあります。インストール時にsystem.site uuid
構成変数を適用することに成功していません(もちろん、後で値を変更できますが、これは遅すぎるようで、すべてのオブジェクトがすでに異なるUUIDで作成されているため、最初の同期anightmare、デフォルトのコンテンツの一部を削除する必要がある、またはデフォルトの言語が削除できないために同期をクラッシュさせるなど)。
このUUIDを強制するために、生成されたsettings.phpファイルに$config['system.site']['uuid']
値を含めて使用しようとしましたが、大失敗しました(サイトのインストール後も、設定は完全に無視されました)。
構成インストーラー プロファイルも確認しましたが、特にこのソリューションを別のインストールプロファイルと混合する方法は完全には理解できません。
したがって、問題は、インストールプロファイルから新しいサイトを展開する最良の方法は何ですか。
機能は、UUIDの問題を回避するのに役立ちます。まだバグがあり、プロセスを完全に自動化することはできませんが、少なくとも構成を手動でシフトして維持することはできます。
機能は引き続きモジュールを作成し、指定された機能モジュールのconfig/installディレクトリに構成をエクスポートします。これは、機能をインストールするときに取得され、機能のエクスポートの変更に応じて、サイト構成を引き続き更新できます(以前のDrush機能-元に戻す機能と同様)。
また、drushを介して構成を直接インポートすることもできます。構成フォルダーの構成notを上書きしないように、必ず--partialフラグを使用してください。 --sourceを使用すると、カスタム構成フォルダーの場所を定義することもできるため、drush cim --partial --source=docroot/modules/features/myfeature/config/install
のようなことができます。
@Ivan Jarosヒントに基づいて、プロファイルのインストール時に特定の構成オプションを設定できます。明らかに、これはインストール時にのみ機能し、サイトが既にインストールされている場合には機能しません。
プロファイルの.installファイルで、hook_install()
にデフォルトの構成設定を追加できます。
\Drupal::configFactory()
->getEditable('system.site')
->set('uuid', 'this is my new uuid')
->save(TRUE);
私はこれをローカルで試しましたが、うまくいきます。サイトのUUIDを変更するためにdrush cset
を使用せずに、上記のコード(適切なUUIDを設定)を使用して、別のサイトから新しくインストールされたローカルサイトに構成をプルすることができました。
おそらく、どこかで環境のファイル、環境変数、またはサービスから取得するようにUUIDを設定できます。したがって、それらはすべて、そのプロファイルがインストールされているどのサイトでも同じになります。
私はsettings.php
から同様のことをしたいと思っていましたが、ConfigFactory
クラスはその時点では使用できず、質問で指摘したように、$config
のsettings.php
で設定すると_は影響しません。
別のオプション:
drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23