Đơn vị với, nhiều cơ sở dữ liệu


11

Có thể thực hiện một cài đặt và từ cài đặt này để tạo nhiều cửa hàng với các cơ sở dữ liệu khác nhau không?

Một cái gì đó giống như tôi sẽ thực hiện một cài đặt trên domain.1 với cơ sở dữ liệu và từ quản trị viên, tôi sẽ tạo một trang web mới và một cửa hàng trên một số cơ sở dữ liệu mới cho domain.2 .

Tôi biết rằng nhiều cửa hàng có thể đạt được với một cơ sở dữ liệu. Nhưng nó có thể giống nhau với các cơ sở dữ liệu khác nhau.


Bạn có thể giải thích tại sao bạn cần 2 cơ sở dữ liệu? Đây có phải là cấu hình chính / phụ hay chỉ muốn có 2 cơ sở dữ liệu riêng biệt?
Marius

Tôi chỉ muốn có 2 cơ sở dữ liệu riêng biệt. Tôi cần hai cửa hàng khác nhau với một cài đặt nhưng cơ sở dữ liệu riêng biệt.
Mike

Câu trả lời:


3

Câu trả lời tuyệt vời slarek. Chúng tôi đã làm một cái gì đó rất giống nhau. Thay vì chỉnh sửa index.php, chúng tôi thiết lập các thư mục riêng biệt bên ngoài cơ sở mã của magento và bao gồm mage.php từ các thư mục đó, sau đó chỉnh sửa etc_dir (và các thư mục khác) như trong phương pháp của bạn ở trên.

cấu trúc thư mục:

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

Bên trong mỗi thư mục máy khách là:

  • /www/clientx/etc/local.xml (với cơ sở dữ liệu duy nhất được xác định và db redis duy nhất)
  • / www / clientx / etc / mô-đun (đây là liên kết sym đến / www / magento / app / etc / mô-đun)
  • /www/clientx/index.php

trong /www/clientx/index.php

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

... (Phần còn lại của index.php là công việc như bình thường) ...

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

Chúng tôi thiết lập

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

5

Tôi không nghĩ rằng điều này là có thể ra khỏi hộp. Magento hỗ trợ cấu hình cơ sở dữ liệu chủ / nô lệ, nhưng bạn phải có chúng cho tất cả các cửa hàng.
Và tôi không nghĩ rằng điều này có thể được thực hiện dễ dàng với mã hóa tùy chỉnh vì các cửa hàng được giữ trong cơ sở dữ liệu.

Vì vậy, tùy thuộc vào chế độ xem cửa hàng, bạn cần biết cơ sở dữ liệu nào để kết nối, nhưng để biết chế độ xem cửa hàng, bạn cần truy vấn cơ sở dữ liệu. Vì vậy, bạn chạy xung quanh trong vòng tròn.


3

Bạn muốn có một vài cửa hàng riêng biệt với cơ sở dữ liệu riêng bằng cách sử dụng một cơ sở mã?

Chà, không có cách nào đơn giản và được đề nghị để làm điều đó. Điều đó đang được nói chúng ta có thể thấy những gì CÓ THỂ được thực hiện:

Thông tin cơ sở dữ liệu đến từ một tệp xml duy nhất: app / etc / local.xml Tệp này đang được tải từ app / Mage.php, vì vậy nếu bạn thay đổi tệp đó, về mặt lý thuyết bạn có thể quyết định tệp cấu hình nào bạn sẽ tải (dựa trên mong muốn điều kiện, chẳng hạn như tên miền). Voila, tên miền khác nhau, cơ sở dữ liệu khác nhau. Bây giờ đến phần Tin xấu (tm).

  1. Bạn đang ghi đè mã lõi và vì thế được gọi là "lớp thần". Đây được coi là một thực hành RẤT RẤT trong thế giới Magento! Mỗi khi bạn nâng cấp các thay đổi của bạn sẽ được ghi đè.
  2. Nội dung chồng chéo. Không phải tất cả nội dung của bạn được lưu trữ trong cơ sở dữ liệu, còn có thư mục phương tiện và thư mục phiên (var / session) bạn cần tìm cách khắc phục (ví dụ: đường dẫn tùy chỉnh dựa trên cơ sở dữ liệu) hoặc lưu trữ cả hình ảnh và phiên trong cơ sở dữ liệu (trước đó bạn hỏi: ừ, điều này là có thể).
  3. Bộ nhớ cache. Bạn chắc chắn không muốn các cửa hàng khác nhau chia sẻ thư mục bộ đệm (var / cache). May mắn thay, có thể sử dụng bộ nhớ cache bên ngoài, chẳng hạn như memcached thay vì lưu trữ tệp vào thư mục đó. Tuy nhiên, bạn phải chắc chắn rằng ID bộ nhớ cache của bạn sẽ không trùng lặp, bởi vì nếu có, bạn sẽ ở trong thế giới bị tổn thương.
  4. Bạn không thể sử dụng trình biên dịch (dù sao tính năng này không được dùng nữa).
  5. Có lẽ một cái gì đó khác tôi đang quên. Bất kỳ ai?

2

tôi vừa tìm thấy tiện ích mở rộng này:
https://github.com/steverobbins/Magento-Multi_Client

Magento Multi Client
Lưu trữ nhiều máy khách trên cùng một cơ sở mã Magento.

Mỗi máy khách có tệp local.xml riêng và etc / Module.xml. Điều này cho phép bạn chỉ định các cơ sở dữ liệu và dịch vụ lưu trữ riêng biệt cho mỗi khách hàng, cũng như bật / tắt các mô-đun theo yêu cầu.

Mỗi khách hàng duy trì tính độc lập của họ nhưng chia sẻ một cơ sở mã.

Đây có thể được coi là một cách tiếp cận Magento Go-esque để lưu trữ các trang web Magento.


2

Bạn chỉ cần tạo một thư mục mới để chứa các tệp cấu hình và trong tệp index.php, bạn thêm một mảng các tùy chọn vào Mage :: Run ().

Trong thư mục đó, bạn sẽ có tất cả nội dung giống như ứng dụng / etc / bao gồm thư mục mô-đun.

Tên miền đầu tiên:

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

Tên miền thứ hai:

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

điều này sẽ cho Magento biết các tập tin cấu hình cho miền.


1

Mục tiêu chính của bạn là gì? Khu vực quản trị khác nhau hoặc xử lý mã nguồn dễ dàng hơn?

Tôi sẽ làm điều đó với một hỗn hợp các thư mục và tệp "cục bộ" và các thư mục và tệp chung được liên kết (ln -s)

/ www / chung / www / shop1 / www / shop2

chung

  • ứng dụng /
  • js /
  • lib /
  • ...

"địa phương"

  • / var /
  • index.php
  • .htaccess
  • ứng dụng / etc / local.xml

Nhưng có thể là một chút bối rối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.