it-swarm-ko.tech

새 컨텐츠를 잃지 않고 사이트의 개발 사본에서 실제 사이트로 변경 사항을 병합하려면 어떻게해야합니까?

사이트의 개발 사본에서 수행 한 작업을 실제 프로덕션 사본에 병합하는 가장 좋은 절차는 무엇입니까? 개발이 최신 기능으로 시작된 이후 종종 사이트에 새로운 콘텐츠가 많이 추가되었습니다. 그리고 대부분의 사이트 추가에는 데이터베이스 변경이 포함됩니다. 새 파일을 복사하는 것은 쉽지만 데이터베이스는 어떻습니까? 마지막으로 프로덕션 사이트를 업데이트 한 이후에 추가 된 새 컨텐츠를 잃지 않고 변경 사항을 기존 프로덕션 데이터베이스와 병합하는 방법은 무엇입니까? 이것에 도움이되는 모듈이 있습니까?

40
Chaulky

개발자 사이트의 컨텐츠 유형,보기 및 구조 변경은 Features 를 사용하여 데이터베이스를 코드로 내보내는 방법을 살펴보십시오.

컨텐츠 마이그레이션에는 여러 가지 옵션이 있지만 단일 솔루션은 아닙니다. 한 가지 예는 Deployment suite 입니다.

16
budda

나는 기본적으로 두 개의 사고 학교를 채택했습니다 (데이터베이스 diffs를 수행하는 세 번째 사고 학교는 복잡성이 높기 때문에 논의하지 않습니다).

1) 프로덕션 데이터베이스를 삭제하고 개발 데이터베이스의 mysqldump를 가져 와서 배포하십시오. 선택적으로 SQL 덤프의 dev URL을 참조하는 하드 코딩 된 절대 링크에서 미리 정규식 찾기/바꾸기를 실행하십시오. dev db를 prod로 가져온 후에는 자동으로 SQL 문 (일반적으로 스크립트를 통해)을 실행하여 prod와 다른 설정을 변경합니다 (예 : 변수 테이블에 필요한 외부 시스템에 연결하기위한 일부 연결 설정이있을 수 있음) dev 버전이 아닌 prod 외부 시스템을 가리 키도록 변경하십시오.

2) 관리자 설정에 대해 budda에서 언급 한 것처럼 Features 모듈을 사용하고 Node Export 모듈을 컨텐츠 내보내기/가져 오기에 =와 함께 사용하십시오. 모두 삭제 모듈. 워크 플로는 다음과 같습니다.

  1. node_export 및 기능을 사용하여 노드/기능을 파일로 내보내기
  2. 선택적으로 (그리고 희망적으로) 버전 관리
  3. Prod 시스템에서 파일로드
  4. Drush 또는 관리 인터페이스를 사용하여 기능로드
  5. Drush delete-all 또는 관리 인터페이스를 사용하여 가져올 유형의 모든 노드를 삭제하십시오.
  6. Drush ne-import 또는 관리 인터페이스를 사용하여 내 보낸 노드 파일에서 노드를 가져 오십시오.

한 가지 참고 사항은 콘텐츠가 한 방향으로 만 진행되는 표준 워크 플로를 채택하는 것이 좋습니다. Dev-> Prod 또는 Prod-> Dev 중 하나입니다.

나는 이것을 해왔고 꽤 큰 결과를 얻은 일부 큰 시스템 에서이 작업을 수행하고 있지만 항상이 애플을 슬라이스 할 수있는 많은 방법이있을 것입니다.

2
coderintherye

SQL 파일에서 라이브 사이트 사본 및 개발 사이트 사본의 데이터베이스를 덤프하십시오 (두 덤프에 동일한 매개 변수 및 설정 사용).
그런 다음 작은 비교 도구 ExamDiff 를 사용하여 두 SQL 파일을 비교하십시오. 파일 차이가 다른 색상과 나란히 표시됩니다. 스크롤없이 차이점으로 바로 이동할 수 있습니다. 라이브 사이트의 SQL 파일에 차이를 추가하고 줄을 추가/편집하십시오. 해당 파일에 개발 환경의 절대 경로/URL이 없는지 확인하십시오. 끝났습니다! 라이브 사이트의 데이터베이스를 복원 할 시간입니다.
인생을 더 편하게 만드십시오 : 첫 번째 단계에서 변경된 테이블 만 덤프하십시오. 예를 들어, 별도의 테이블을 대상으로하는 개발 사본에서 모듈을 편집 한 경우이 테이블 만 덤프하십시오. 특정 테이블에 대해 잘 모르면 전체 데이터베이스 덤프가 좋습니다.

1
user931