덤프없이 고유 한 프로필에서 유사한 사이트를 배포 / 관리하는 방법은 무엇입니까?


15

나는 "마음에 들지 복제 것을 의미 웹 사이트"솔루션 투기 데이터베이스를 다른 환경에서이 덤프를 가져 오기. 이는 동일한 웹 사이트의 여러 인스턴스 (staging / prod / dev / etc)를 배포 하는 실제 방법과는 다릅니다.

D7에서는 일반적으로 사용자 지정 프로필을 사용하고 이러한 프로필에서 웹 사이트를 설치하기 위해 drush를 사용했습니다 (나중에 사이트 동기화를위한 기능 사용). 이를 통해 새로 설치하고 테스트 내용은 없지만 중요한 설정을 공유 할 수있었습니다. 예를 들어 일반적인 콘텐츠 동기화는 마이그레이션을 통해 수행됩니다.

동일한 설치 프로필을 공유하는 여러 D8 인스턴스를 관리하려고했습니다. 최종 목표는 사이트 구성을 공유하고 동기화하는 것입니다. 그리고 모든 설치에는 다른 사이트 UUID가 있습니다. system.site uuid설치시 config 변수를 적용하는 데 성공하지 못했습니다 (물론 나중에 값을 변경할 수는 있지만 너무 늦어서 모든 객체가 이미 다른 UUID로 생성되어 첫 번째 동기화를 악몽으로 만듭니다. 일부 기본 콘텐츠를 삭제해야하거나 기본 언어에서 동기화를 제거 할 수 없어서 충돌하는 경우 등).

이 UUID를 시행하기 위해 생성 된 settings.php 파일을 $config['system.site']['uuid']큰 실패로 사용하려고 시도했습니다 (사이트 설치 후에도 설정이 완전히 무시되었습니다).

또한 이 설치 솔루션을 다른 설치 프로필과 혼합하는 방법을 완전히 이해하지 못하는 구성 설치 프로그램 프로필을 살펴 보았습니다 .

따라서 문제는 설치 프로필에서 새로운 사이트를 배포하는 가장 좋은 방법은 무엇입니까?

  • 사이트 복제시 "웹 사이트 복제"가없고 SQL 덤프 조작 (예 : 복제 된 사이트 질문 ).
  • 내 보낸 구성 및 코드 사용하여 새로 새로 설치 (개발자 컨텐츠 가비지없이)
  • 설치 구성 기본값과 이후 동기화를 모두 관리 할 수 ​​있습니다.

답변:


3

기능은 UUID 문제를 우회하는 데 도움이 될 수 있습니다. 여전히 버그가있어 프로세스를 완전히 자동화 할 수는 없지만 구성을 수동으로 변경하고 유지할 수는 있습니다.

기능은 여전히 ​​모듈을 작성하며 지정된 기능 모듈의 config / install 디렉토리로 구성을 내 보냅니다. 기능을 설치할 때 선택되며 기능 내보내기가 변경 될 때 사이트 구성을 계속 업데이트 할 수 있습니다 (이전의 drush 기능이 되 돌린 것과 유사).

또한 drush를 통해 구성을 직접 가져올 수 있으며 , config 폴더에 없는 구성을 무시 하지 않으려면 --partial 플래그를 사용해야 합니다. --source를 사용하여 사용자 정의 구성 폴더 위치를 정의 할 수도 있으므로 다음과 같은 작업을 수행 할 수 있습니다 drush cim --partial --source=docroot/modules/features/myfeature/config/install.


좋아, 잘 이해한다면 기능을 사용하여 soime 키 기능의 웹 사이트 구성을 동기화하십시오 . 복제 된 웹 사이트의 전체 구성 동기화를 허용하지 않습니다.
regilero

2
바로 그거죠. 전체 구성 동기화의 근본적인 문제는 관리자가 변경할 수있는 설정이 하나만 있으면 충분하고 더 이상 동기화 할 수 없다는 것입니다. 변경 사항을 되돌릴 수 있기 때문입니다. 기능 영역으로 분류하면 a) 구성 집합을 유지 관리 할 수 ​​있습니다 (부분적으로는 무엇인지 이해하기 때문에). b) 나머지 기능과 구성 관리 방법에 대해 유연성을 유지합니다.
Balazs Dianiska

좋아, 이것은 아마도 확실한 대답은 아니지만 나는 당신에게 현상금을 줄 것입니다. 누군가가 나중에 업데이트 된 답변을 추가하고 싶다면 (일이 이동함에 따라) 다른 현상금을 다시 열 것입니다.
regilero

1

다른 옵션 :

drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23

1

@Ivan Jaros 힌트를 기반으로 프로파일을 설치할 때 특정 구성 옵션을 설정할 수 있습니다. 사이트가 이미 설치되어있는 경우에만 설치시에만 작동합니다.

프로파일의 .install 파일에서 다음에 기본 구성 설정을 추가 할 수 있습니다 hook_install().

\Drupal::configFactory()
  ->getEditable('system.site')
  ->set('uuid', 'this is my new uuid')
  ->save(TRUE);

나는 이것을 로컬로 시도했지만 작동합니다. drush cset사이트 UUID를 변경 하지 않고 위의 코드를 사용하여 (적절한 UUID 세트로) 다른 사이트에서 새로 설치된 로컬 사이트로 구성을 가져올 수있었습니다 .

아마도 UUID를 환경 어딘가의 파일이나 환경 변수 또는 서비스에서 가져 오도록 설정할 수 있으므로 해당 프로파일이 설치된 모든 사이트에서 모두 동일합니다.

나는에서 비슷한 일을하기를 희망 settings.php하지만 ConfigFactory클래스는 그 시점에서 사용할 수 없습니다 당신은을 통해 설정 귀하의 질문에 지적으로 $configsettings.php영향을주지 않습니다.

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