다른 사이트에서 구성을 가져 오려면 어떻게합니까?


49

다른 사이트의 구성을 가져 오려고 할 때이 오류가 발생합니다.

준비된 구성은이 사이트와 다른 사이트에서 시작되므로 가져올 수 없습니다. 이 사이트의 복제 된 인스턴스간에 만 구성을 동기화 할 수 있습니다.

고객이 10 명인데 사이트 구성을 10 개의 서로 다른 웹 사이트와 동기화해야합니다.
사이트 UUID는 다른 웹 사이트와 구성을 공유하는 데 문제가 있습니다. 해결책이 있습니까?


1
또 다른 좋은 대답은 drupal.stackexchange.com/q/152584/39617
digitgopher

답변:


55

다음을 사용하여 UUID를 얻을 수 있습니다.

drush config-get "system.site" uuid

그리고 당신은 그것을 변경할 수 있습니다

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

그것으로 당신은 같은 사이트를 가져야합니다.


3 년 후 저를 위해 일했습니다. 감사!
mrlexington

17

구성 관리는 동일한 사이트 또는 프로젝트 간의 동기화 구성 만 허용하여 사이트 a.com에서 b.com으로 구성을 가져 오는 데 문제가 발생하지 않도록함으로써 이러한 유효성 검사를 수행합니다. Drupal 8 은 각 사이트에 대해 UUID 를 생성합니다 .

현재 사이트 UUID가 다음 명령을 실행하도록합니다.

drush cget system.site

위의 명령은 다음 목록과 유사한 출력을 갖습니다.

uuid: 236fa77c-d83e-42de-8a03-03c574c00160
name: Drupal 8
mail: user@example.com
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 명령을 사용하여 Site 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/


9
맞지만 다른 사이트를 변경하지 않고 사이트 UUID를 변경하면 drupal이 다른 UUID를 가진 모든 필드 / 노드 유형 /보기 / ...를 다른 것으로 취급하고 먼저 기존 항목을 삭제 한 다음 다시 다시 만들면 기본적으로 모든 콘텐츠가 삭제됩니다.
Berdir

감사합니다.하지만 전용 서버 및 Linux 지식이없는 사용자에게는 사용자 친화적이지 않습니다. 기본 / 초보 사용자를위한 솔루션이 있습니다 (ssh 및 명령 줄없이, ftp 서버 만). Drush에는 명령 줄이 필요하며 고객에게는 사용하기 쉽지 않습니다.
Axel Briche

내 보낸 구성과 (와 drush config-set system.site uuid "abcdef-...") 일치하도록 기존 Drupal 웹 사이트 (새 설치)의 사이트 UUID를 변경하면 정확히 어떻게 됩니까?
GiDo

1
업데이트 사이트 UUID를 복사하는 한 줄 명령입니다. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
ya.teck

10

Drupal Console 사용

— 키 를 재정 의하여 Drupal Console 에서 동일한 기능을 수행 할 수 있습니다 .system.siteuuid

$ 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  
------------------- -------------------------------------- -------------------------------------- 

1
나는 이것이 받아 들여야 할 답변이라고 생각합니다.
Badri

7

사이트 나 데이터베이스에 액세스하지 않고도 사이트 UUID를 얻을 수 있습니다.

원본 사이트 / 데이터베이스에 액세스 할 수없는 경우 제공된 구성 파일에서 계속 동기화 할 수 있습니다. 설정에는 사이트의 UUID가 포함되므로 먼저 설정해야합니다.

  1. 설정 / 동기화 디렉토리 찾기 : 이동 한 경우에서 설정 한 위치를 찾을 수 있습니다 settings.php. $config_directories['sync']경로를 나열하는을 찾으십시오 .

  2. 해당 구성 경로로 이동하여 system.site.yml 파일을 찾으십시오. 해당 파일에서 uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(다른 값을 가질 것입니다) 찾으십시오 . 해당 값을 복사하십시오.

  3. drush에서 방금 발견 한 것과 동일한 사이트로 사이트를 설정하십시오. drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. drush를 사용하여 구성 동기화 drush cim -y

  5. 오류가 발생하면을 읽으십시오 . 나는했다 :

    • 누락 된 모듈 (다운로드하여 활성화해야 함)
    • 바로 가기 모듈의 내용은 먼저 삭제해야합니다.
    • 관리> 구성> 사용자 개입> 바로 가기

내가 그렇게 한 후에 나는 cim을 되찾았고 모든 것이 매력처럼 작동했습니다!

제공된 구성에서 복원하기 전에 로컬 D8 인스턴스를 설치했습니다.


4

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. 아래로 스크롤하여 모두 가져 오기 버튼을 클릭하십시오.

0

Gucho Ca의 답변의 지침을 따랐 는데도 여전히 문제가 있으면 sync config 디렉토리에 쓰기 권한이 있는지 확인하십시오. UUID가 동일하지만 시스템에 쓰기 권한이없는 경우에도 동일한 오류 메시지가 표시됩니다.

확인하는 좋은 방법은 동기화 섹션의 가져 오기 탭을 클릭하는 것입니다. 올바른 파일 권한이 없으면 알려줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.