web-dev-qa-db-ja.com

別のサイトに構成をインポートするにはどうすればよいですか?

別のサイトの構成をインポートしようとすると、このエラーが発生します。

ステージングされた構成は、このサイトとは異なるサイトからのものであるため、インポートできません。このサイトの複製されたインスタンス間でのみ構成を同期できます。

私には10人の顧客がいて、自分のサイト構成を10の異なるWebサイトと同期する必要があります。
サイトのUUIDは、別のWebサイトと構成を共有するための問題です。解決策はありますか?

52
Axel Briche

UUIDは次の方法で取得できます。

drush config-get "system.site" uuid

そして、あなたはそれを

drush config-set "system.site" uuid "fjfj34-e3bb-2ab8-4d21-9100-b5etgetgd99d5"

これで、同じサイトを取得する必要があります。

64
Gucho Ca

構成管理では、サイトa.comからb.comに構成をインポートする際の問題を回避し、この検証を実現するために、同じサイトまたはプロジェクト間の同期構成のみを許可しますDrupal 8生成 [〜 #〜] uuid [〜#〜] 各サイト。

次のコマンドを実行して、現在のサイトのUUIDを取得します。

drush cget system.site

上記のコマンドでは、次のリストと同様の出力が得られます。

uuid: 236fa77c-d83e-42de-8a03-03c574c00160
name: Drupal 8
mail: [email protected]
slogan: ''
page:
  403: ''
  404: ''
  front: node
admin_compact_mode: false
weight_select_max: 100
langcode: en

構成インポートには別のUUIDがあります。次のコマンドでUUIDを確認できます

cat sites/default/config/staging/system.site.yml

そのため、次のDrushコマンドを使用してサイトUUIDの値を変更する必要があります。

drush cedit system.site

上記のコマンドを使用すると、お気に入りのテキストエディターを使用して、ステージング構成ファイルに存在する同じUUIDを設定できます。

cat sites/default/config/staging/system.site.yml

UUIDを変更して権限を変更した後、再度example.com/admin/config/development/configurationページにアクセスすると、すべての変更、削除、名前変更、および追加が表示されます。

ソース: http://enzolutions.com/articles/2014/08/27/understanding-configuration-management-in-drupal-8/

19
rpayanm

Drupalコンソールを使用する

system.siteuuidキーをオーバーライドすることにより、 Drupal Console で同じことを実現できます。

$ drupal config:override

次に、プロンプトが表示されたら、構成名system.site、構成キーuuid、適切な値を入力します。

Enter configuration name [advagg.settings]:
> system.site

Enter the configuration key [uuid]:
> uuid

Enter the configuration value:
> 656165f1-1017-45a1-9bd8-f70e31cf29ab

Configuration name system.site
------------------- -------------------------------------- -------------------------------------- 
Configuration key   Original Value                         Override Value                        
------------------- -------------------------------------- -------------------------------------- 
uuid                7622bb19-5f3f-452d-82a3-c0a88241e789   656165f1-1017-45a1-9bd8-f70e31cf29ab  
------------------- -------------------------------------- -------------------------------------- 
11
MrUpsidown

サイトまたはデータベースにアクセスせずにサイトUUIDを取得できます。

元のサイト/データベースにアクセスできない場合でも、提供されている構成ファイルから同期できます。設定にはサイトのUUIDが含まれるため、最初に設定する必要があります。

  1. Config/syncディレクトリを見つけます:移動した場合は、settings.phpで設定された場所を見つけることができます。パスをリストする$config_directories['sync']を探します。

  2. その構成パスに移動し、ファイルを探します:system.site.ymlそのファイルでuuid: 86b376c5-385e-4d13-bf00-e5e5443540e3を探します(明らかに異なる値になります)。その値をコピーします。

  3. Drushで、サイトを今発見したのと同じサイトUUIDに設定します:drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Drushを使用して構成を同期するdrush cim -y

  5. エラーが発生した場合は、それらを読み取ります。私が持っていた:

    • 不足しているモジュール(ダウンロードして有効にする必要がありました)
    • 私が最初に削除しなければならなかったショートカットモジュールのコンテンツ:
    • 管理者>構成>ユーザーインターフェース>ショートカット

それをしたら、私はcimを再実行し、すべてが魅力のように機能しました!

提供された構成から復元する前に、ローカルD8インスタンスをインストールしました。

8
Atomox

Drush csetとdrush cgetを使用して、宛先サイトのUUIDを変更できます。

最初にソースUUIDを取得します。

$ cd ~/Sites/sourcesite <-- your drupal site root
$ drush cget system.site uuid
This will return something like:
'system.site:uuid': 86b376c5-385e-4d13-bf00-e5e5443540e3 

宛先UUIDを置き換える

cd ~/Sites/destinationsite <-- your drupal site root
$ drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3 

今することができます:

  1. ブラウザーでadmin/config/development/configuration/full/importにある宛先サイトに移動します。
  2. 設定アーカイブを選択し、アップロードを選択します
  3. すべての構成アイテムのリストが表示されます
  4. 一番下までスクロールして、[すべてインポート]ボタンをクリックします。
5
Selwyn Polit

構成のインポート前にsystem.site uuidの設定を自動化する方法

これを何度も繰り返すのに飽きた人のために。これを自動的に行う方法の修正をついに手に入れました。 uuidを設定するには、drushを使用してconfig:importのプリコマンドを追加する必要があります。それについてここですべて読んでください: https://stefvanlooveren.me/blog/fixing-systemsite-uuid-config-import-problem-drupal-8

1

Gucho Caの回答の指示に従っても問題が解決しない場合は、sync configディレクトリに書き込み権限があることを確認してください。 UUIDが同じであっても、同じエラーメッセージが表示されますが、システムには書き込み権限がありません。

確認する良い方法は、同期セクションのインポートタブをクリックすることです。正しいファイル権限がない場合は、そこに表示されます。

0
MikeD