여러 데이터베이스로 단일 설치


11

하나의 설치가 가능하며이 설치에서 다른 데이터베이스를 가진 여러 상점을 만들 수 있습니까?

나는 같은 뭔가 하나 개 설치하게됩니다 domain.1를 데이터베이스로, 그리고 관리자에서 나는 상자 새로운 웹 사이트 및 일부 새 데이터베이스에 저장합니다 domain.2을 .

하나의 데이터베이스로 여러 상점을 얻을 수 있다는 것을 알고 있습니다. 그러나 다른 데이터베이스에서도 동일 할 수 있습니다.


왜 2 개의 데이터베이스가 필요한지 설명 할 수 있습니까? 마스터 / 슬레이브 구성입니까, 아니면 2 개의 별도 데이터베이스를 원하십니까?
Marius

방금 2 개의 별도 데이터베이스를 갖고 싶습니다. 하나의 설치이지만 별도의 데이터베이스가있는 두 개의 다른 상점이 필요합니다.
Mike

답변:


3

좋은 답변 slarek. 우리는 매우 비슷한 일을했습니다. index.php를 편집하는 대신 magento의 코드베이스 외부에 별도의 폴더를 설정하고 해당 폴더에서 mage.php를 포함시킨 다음 위의 방법과 같이 etc_dir (및 기타 디렉토리)을 편집합니다.

폴더 구조 :

/ www / client1
/ www
/ client2
/ www / client3 / www / clientX
/ www / magento

각 클라이언트 폴더 안에는 다음이 있습니다.

  • /www/clientx/etc/local.xml (고유 데이터베이스 정의 및 고유 redis db)
  • / www / clientx / etc / modules (/ www / magento / app / etc / modules에 대한 심볼릭 링크)
  • /www/clientx/index.php

/www/clientx/index.php에

define('MAGENTO_ROOT', '/www/magento');

... (index.php의 나머지는 평소와 같이 비즈니스입니다) ...

$client = isset($_SERVER['CLIENT_ID']) ? $_SERVER['CLIENT_ID'] : '';] Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'../'.$client));

우리는 설정

$_SERVER['CLIENT_ID'] in Nginx with 
`fastcgi_param  CLIENT_ID clientx; `

5

나는 이것이 즉시 가능하다고 생각하지 않습니다. Magento는 마스터 / 슬레이브 데이터베이스 구성을 지원하지만 모든 상점에 대해 구성해야합니다.
그리고 상점이 데이터베이스에 보관되어 있기 때문에 사용자 지정 코딩으로 쉽게 수행 할 수 있다고 생각하지 않습니다.

따라서 상점보기에 따라 연결할 데이터베이스를 알아야하지만 상점보기를 알려면 데이터베이스를 조회해야합니다. 그래서 당신은 서클에서 돌아 다닙니다.


3

단일 코드베이스를 사용하여 자체 데이터베이스가있는 여러 개의 개별 상점을 갖고 싶으십니까?

간단하고 권장되는 방법은 없습니다. 우리가 할 수있는 일을 볼 수 있다고합니다.

데이터베이스 정보는 단일 xml 파일에서 가져옵니다. app / etc / local.xml이 파일은 app / Mage.php에서로드되므로 해당 파일을 변경하면 이론적으로로드 할 구성 파일을 결정할 수 있습니다 (원하는 내용에 따라) 도메인 이름과 같은 조건). Voila, 다른 도메인, 다른 데이터베이스. 이제 나쁜 소식 부분 (tm)이 나옵니다.

  1. 당신은 핵심 코드를 덮어 쓰고 있으며 "신 클래스"라고 불립니다. 이것은 마 젠토 세계에서 아주 나쁜 습관으로 간주됩니다! 업그레이드 할 때마다 변경 사항을 덮어 씁니다.
  2. 내용이 겹칩니다. 모든 콘텐츠가 데이터베이스에 저장되는 것은 아니며 미디어 폴더와 세션 폴더 (var / session)도 있습니다 (예 : 데이터베이스를 기반으로 한 사용자 지정 경로)에 대한 해결 방법을 찾거나 데이터베이스에 이미지와 세션을 모두 저장해야합니다 (이전에 당신은 묻습니다 : 예, 가능합니다).
  3. 은닉처. 가장 다른 저장소 공유 캐시 폴더 (var / cache)는 원하지 않습니다. 다행히도 파일을 해당 폴더에 저장하는 대신 memcached와 같은 외부 캐시를 사용할 수 있습니다. 여전히 캐시 ID가 겹치지 않도록해야합니다. 캐시 ID가 있으면 상처를 입을 수 있기 때문입니다.
  4. 컴파일을 사용할 수 없습니다 (어쨌든이 기능은 더 이상 사용되지 않습니다).
  5. 어쩌면 내가 잊어 버린 다른 것이 있습니다. 누군가?

2

방금이 확장을 찾았습니다 :
https://github.com/steverobbins/Magento-Multi_Client

Magento Multi Client
동일한 Magento 코드베이스에서 여러 클라이언트를 호스팅합니다.

각 클라이언트에는 자체 local.xml 및 etc / modules.xml이 있습니다. 이를 통해 클라이언트마다 별도의 데이터베이스 및 캐싱 서비스를 지정하고 요청에 따라 모듈을 활성화 / 비활성화 할 수 있습니다.

각 클라이언트는 독립성을 유지하지만 코드 기반은 공유합니다.

이것은 Magento 웹 사이트를 호스팅하는 Magento Go-esque 방식으로 간주 될 수 있습니다.


2

구성 파일을 포함 할 새 폴더를 만들고 index.php에서 Mage :: Run ()에 옵션 배열을 추가하면됩니다.

해당 폴더에는 모듈 폴더를 포함하여 app / etc /와 동일한 내용이 있습니다.

첫 번째 도메인 :

Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'app/domain1'));

두 번째 도메인 :

Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'app/domain2'));

이것은 도메인의 설정 파일이있는 곳을 Magento에게 알려줍니다.


1

주요 목표는 무엇입니까? 다른 관리 영역이나 소스 코드를보다 쉽게 ​​처리 할 수 ​​있습니까?

"로컬"디렉토리와 파일을 혼합하고 링크 된 (ln -s) 공통 디렉토리와 파일을 사용하여 수행합니다.

/ www / common / www / shop1 / www / shop2

흔한

  • 앱/
  • js /
  • lib /
  • ...

"현지"

  • / var /
  • index.php
  • .htaccess
  • app / etc / local.xml

그러나 약간 혼란 스러울 수 있습니다.

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