Drupal: 동기화 구성

Drupal: 동기화 구성

2022-10-06 last update

5 minutes reading devops drupal
내가 최근에 공유한 일련의 GitLab DevOps 게시물과 같이 개발, 스테이징 및 프로덕션 서버에서 코드를 동기화된 상태로 유지하는 워크플로를 갖는 것이 중요합니다. 그러나 구성과 콘텐츠라는 두 가지 주요 하위 범주가 포함된 데이터베이스는 동기화되지 않습니다. 또한 사용자 업로드 파일을 동기화하지 않지만 다른 게시물의 주제입니다.

다행히 Drupal 8은 사이트 사본 간에 구성을 동기화하기 위한 새로운 시스템을 도입했습니다.

포함 사항



전체 데이터베이스 백업은 아니지만 다음과 같은 대부분의 설정이 포함됩니다.
  • 확장 및 테마 활성화
  • 테마 구성
  • 조회수
  • 블록
  • 모듈 설정

  • 여기에 포함되지 않는 것은 노드 또는 엔터티 콘텐츠입니다. 사이트를 처음 구축하는 경우를 제외하고는 작업 완료에 의미 있는 적자가 없어야 합니다.

    구성과 콘텐츠 간의 이러한 구분은 몇 가지 면에서 의미가 있습니다.

    구성 변경은 일반적으로 개발 환경에서 먼저 수행되고 철저히 테스트된 다음 파이프라인을 통해 푸시됩니다. 콘텐츠에 대해서는 그렇지 않습니다. 콘텐츠는 프로덕션에서 일반 사이트 사용자가 먼저 생성하거나 편집하는 경우가 많습니다. 모든 것을 승인하고 테스트하기 위해 기술 팀이 필요하지 않으며 더 많은 사용자가 직접 수행할 수 있으며 즉시 적용됩니다.

    또한 대부분의 경우 추가 기본 페이지 노드의 유무가 테스트해야 할 새로운 항목을 충분히 테스트하는 기능에 영향을 미치지 않기 때문에 모든 콘텐츠를 동일한 방식으로 동기화할 필요가 없습니다. 구성에서 원하지 않는 방식으로 프로덕션 사이트의 콘텐츠가 개발 환경보다 앞서게 놔두어도 괜찮습니다.

    Git 워크플로



    이러한 변경에 대한 이상적인 흐름은 코드 git 흐름과 통합됩니다. dev에서 구성을 내보내고 git 저장소에 추가하고 CI/CD 체인의 다음 서버로 푸시하고 거기에서 가져올 수 있습니다. 이 중 대부분은 CI/CD 도구를 사용하여 간소화할 수 있지만 다음은 수동 단계입니다.

    구성을 내보내려면:

    drush config-export
    


    git 저장소에 추가하고 커밋합니다.

    git add sync/config/*
    git commit -m "Updated configuration"
    git push
    


    다른 서버로 전환하고 본질적으로 반대 작업을 수행합니다.

    git fetch
    git pull
    drush config-import
    


    the drush command에 대한 자세한 내용은 여기에서 볼 수 있습니다.

    수동



    한 번에 하나의 설정 그룹으로 구성을 수동으로 동기화할 수도 있습니다. 이것은 느린 프로세스이므로 개발 변경 사항을 프로덕션으로 푸시하는 일반적인 워크플로에서는 이 경로를 사용하지 않습니다.


    단일 구성 항목 가져오기 스크린샷

    인터페이스가 상당히 직관적이기 때문에 여기에서 자세히 설명하지 않겠지만 중간에 접근할 수 있습니다. 파일을 동기화하지만 동기화 탭에서 한 번에 하나씩 가져오거나 전체 동기화를 피하고 대신 수동으로 복사할 수 있습니다. 한 Drupal 사이트에 표시된 구성 파일을 다른 사이트로 이동합니다.