문제

DEV 및 LIVE 사이트의 다른 환경을 처리 할 때 전체 데이터베이스를 내보내지 않고도 다른 환경에만 데이터베이스에만 저장되는 변경 사항을 전달하는 방법은 무엇입니까? 예를 들어 확장을 비활성화하고, 정적 블록의 내용을 변경하고, 새로운 정적 CMS 페이지를 만들고, 새로운 배송 방법, 세금 규칙, 또는 당신은 무엇을 갖는 것으로 추가되었습니다. 전체 데이터베이스를 내보내고 가져올 필요없이 라이브 사이트에 이와 같은 작은 변경 사항을 어떻게 전달합니까? 분명히 라이브 사이트에 오버라이드를 원하지 않는 정보가 있습니다.

다른 누군가가 버전 제어 을 사용할 때 특별히이를 실행해야합니다. 우리는 Git을 구현했지만 파일 수준 변경을 위해서만 작동합니다. 두 환경의 파일은 정확히 동일 할 수 있지만 데이터베이스의 일부 구성이 변경 될 수 있으므로 다르게 작동합니다.

관리 패널에서 내가 만든 모든 변경 사항을 추적 한 다음 다른 환경에서 재현 한 다음 매우 실용적으로 보입니다. 변경 사항은 우리가 지속적으로 우리의 만족을 지속적으로 조정하는 것처럼 상당히 커질 수 있습니다. 게다가 다른 개발자는 잘 작동하고 있으며, 우리는 Magento 확장 제공 업체의 개발자 및 기술 지원 환경을 설정했습니다. 나는 그들이하는 모든 것을 추적 할 수 없다.

제품 수출에 대한 게시물 톤만이므로 실제로 문제가되지 않습니다. 나는 다른 방법을 원합니다. 누군가는 제품 및 주문 및 고객 정보없이 마젠토 사이트 을 복제하는 데 필요한 모든 테이블 목록을 작성했습니다. 관리 패널에서 구성 할 수있는 모든 것만으로 구성하십시오.

은 이전에 아무도 이렇게 했습니까?


업데이트 : 독자들에게는 필요에 따라 다른 것들이 발생할 때까지 수동으로 @ mbalparda의 답변을 받아 들일 수 있습니다. 나는 의 모든 개발자의 관리자 패널의 변경 사항에 로그를 유지하는 규칙을 지속 할 것입니다. 그래서 우리는 끝에 하나의 통일 된 목록을 가지고 있습니다. 그것은 실제로 질문에 대한 답변이 아니라 더 나은 프로세스를 찾을 때까지 이것을 해결하는 데 사용할 방법입니다.

도움이 되었습니까?

해결책

core_config_data 및 core_resources는 시작할 두 가지 좋은 장소입니다. CMS_ *은 블록, CMS 및 위젯에 대한 관련 정보의 대부분을 가져야합니다. 이 테이블 옆에있는 대부분의 Core_ * 테이블은 실행중인 웹 사이트에 대한 관련 정보가 있습니다.

목록은 완전한 것으로 멀리 떨어져 있습니다.

다른 좋은 옵션은 Git에 버전 버전을 유지하고 diff 도구를 사용하여 릴리스간에 변경된 내용을 확인하지만 개인 정보가 Repo에있을 수 있으므로 보안 문제가 발생할 수 있습니다.

다른 환경에서 만든 변경 사항을 모두 저장할 수있는 수동 배포 파일을 사용하는 것입니다. 코드가 배포되면 다음 단계는 수동 배포 파일을 확인하여 무언가가 필요한지 확인하는 것입니다. 끝난. 이는 SQL / 데이터 업데이트로 모든 변경 사항을 변경할 수없는 경우에는 SQL / DATA가 변경되는 일반 MAGENTO 방법이 변경됩니다.

메모로서, 환경간에 데이터베이스를 이동하는 것은 다른 환경에서 사용중인 DB에서 복제되지 않으면 라이브 사이트에서 변경 될 수있는 관리자가 실제 사이트에서 잃어버리지 않으면 해당 데이터베이스를 이동할 수있는 것은 아닙니다.

다른 팁

Magento 데이터베이스는 일반적인 데이터베이스가 아닙니다. 크고 복잡합니다.
한 환경에서 다른 환경에서 다른 환경으로 이동하는 부분은 작은 작업이 아닙니다.
그래서 나는 일반적으로 구성 설정을 변경하거나 블록 및 / 또는 페이지를 수동으로 추가하지 않습니다.
나는 클라이언트가 라이브 서버에서만 그렇게하도록하도록 허가했다.

개발 중에해야 할 일을 개발하면서 업그레이드 스크립트를 통해 수행 할 수 있습니다.
이 방법으로 모든 것이 버전 및 휴대용입니다.
예를 들어 제품 페이지에 대한 목록 표시 모드 목록을 제거하기 위해 업그레이드 스크립트를 작성하는 것은 드래그의 종류를 알고 있지만 지금까지 더 나은 방법을 찾지 못했습니다.

업그레이드 스크립트를 통해 구성 설정을 변경할 수있는 방법에 대한 작은 예입니다.

다음은 FARTRATE 배송을 가능하게합니다 :

$path = 'carriers/tablerate/active';
$config = Mage::getModel('core/config_data')->load($path, 'path');
$config->setValue('1')->setPath($path);
$config->save();
.

sql/[resource_name_here] 내부의 업그레이드 스크립트에 넣으면이 문제가 작동 할 수 있지만 데이터 조작은 data/[resource_name_here]를 사용합니다.

여기에 정적 블록을 추가하는 다른 스크립트입니다.

$block = Mage::getModel('cms/block');
$block->setTitle('Some title here');
$block->setIdentifier('identifier_here');
$block->setContent('This is the content');
$block->setStatus(1);//enabled
$block->setStores(array(0)); //make it available in all stores
$block->save();
.

기본적으로 가지고있는 모든 엔티티에 대해이 작업을 수행 할 수 있습니다.

구성 설정을 내보내고 가져올 수있는 아름다운 도구를 찾았습니다.Harrisstreet-Impex

이것은 당신이 생각하고 나를 찾고있는 많은 것을 많이합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top