Drupal: 동기화 구성

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

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

포함 사항



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

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

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

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

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

    힘내 워크플로우



    이러한 변경에 대한 이상적인 흐름은 코드 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 사이트에 표시된 구성 파일을 다른 사이트로.

    좋은 웹페이지 즐겨찾기