2011-02-09 37 views
5

Chúng tôi có một thiết lập cửa hàng Magento và dưới sự kiểm soát phiên bản, chúng tôi muốn thiết lập một cửa hàng dàn dựng sử dụng cùng mã nhưng chi tiết kết nối khác nhau. ví dụ. Chi tiết trực tiếp cho cửa hàng trực tiếp và cơ sở dữ liệu dàn dựng để dàn dựng.Nhiều môi trường Magento

Điều này có thể xảy ra với Magento, có vẻ như không phải là cách để làm điều đó theo mặc định?

Trả lời

6

Tom,

Vì bạn đang sử dụng kiểm soát phiên bản, tôi khuyên bạn không nên có cùng một tệp cho cả dàn dựng và sản xuất. Đó thường là một ý tưởng tồi. Lý tưởng nhất, bạn nên có một môi trường khác nhau cho dàn dựng và sản xuất, cả hai đều có bộ tệp riêng của họ và cơ sở dữ liệu của riêng họ. Bằng cách này, bạn không phải lo lắng về rào cản mà bạn đang gặp phải bây giờ.

+0

Làm thế nào điều này sẽ xem xét, chúng tôi sẽ giữ cho tập tin cấu hình cho mỗi môi trường trong một chi nhánh riêng biệt và hợp nhất các thay đổi trong? – Tom

+7

Một cách để tiếp cận điều này là xóa hoàn toàn ứng dụng/etc/local.xml khỏi điều khiển nguồn. Sau đó, thêm một tệp local.xml.dev, local.xml.stage và local.xml.prod vào điều khiển nguồn. Khi bạn triển khai đến giai đoạn, bạn cũng có một kịch bản sao chép phiên bản local.xml thích hợp khi cần thiết (ví dụ: cp local.xml.stage local.xml). – shaune

+0

Tôi giữ tên tập tin giống nhau cho mỗi phiên bản (thân cây, sân khấu, v.v.) và sau đó sử dụng '.svn-ignore' để ngăn các tên phát triển ghi đè lên các phiên bản sản xuất. Nó cũng ngăn chặn các thay đổi ngẫu nhiên của bất kỳ loại nào. Một số máy chủ nhận biết Magento như Nexcess khá giỏi về việc quản lý các chi tiết 'local.xml' và tôi không muốn ghi đè lên công việc khó khăn của họ. – clockworkgeek

0

Bạn có thể thực hiện việc này.

Bạn cần tập trung vào tệp local.xml trong thư mục v.v. và đặt cài đặt db cho phù hợp.

Cũng thay đổi giá trị trường url cơ sở an toàn và không bảo mật trong bảng core_config_data.

+0

Bạn có liên kết về cách thực tế điều này có thể trông như thế nào không? – Tom

+0

cho baseurl và securebaseurl của trang dàn dựng, sử dụng "localhost" và giữ môi trường dàn dựng trên máy của riêng bạn (bạn có thể làm điều đó bằng máy chủ zend hoặc wamp/lamp chạy trên máy của bạn tùy thuộc vào hệ điều hành của bạn. đến máy dàn dựng của bạn) – serdarsenay

+0

Tôi vừa đăng một thông tin chi tiết hơn như một câu trả lời dưới đây. – serdarsenay

0

Không chắc chắn nếu điều này là có thể.

Bạn có thể tạo tệp PHP có câu lệnh IF sau đó sẽ phản hồi XML có liên quan cho môi trường hay không. Sau đó, bạn sẽ phải làm cho điều này có thể truy cập như local.xml thông qua .htaccess.

Sau khi điều này đã được thực hiện, đảm bảo rằng nó không có sẵn từ thế giới bên ngoài.

12

Có rất nhiều cách, một trong những đơn giản nhất mà không yêu cầu phải mở rộng thêm là

-> tạo

  • /app/etc/local.xml.dev
  • /app/etc/local.xml.live
  • /app/etc/local.xml.stage

và không điều khiển phiên bản local.xml

và symlink file ngay tại từng môi trường theo cách này bạn có thể giữ tất cả các thông tin kết nối trong svn hoặc git,

+0

Wow, thật khó để tin rằng Magento mất hỗ trợ môi trường ZF đã ra khỏi hộp, nhưng tôi có lẽ sẽ kết thúc với phương pháp tiếp cận này, cảm ơn. – quickshiftin

+0

Tôi đồng ý quickshiftin. Nó có vẻ vô lý mà không có hỗ trợ cho các cấu hình môi trường. – Artistan

0

nhân đôi cửa hàng để phát triển dễ dàng với Magento.

Như bạn có mã của bạn trong kiểm soát phiên bản, bạn chỉ cần làm theo các bước sau:

1) Tạo một cơ sở dữ liệu sao lưu, xuất khẩu nó như SQL. 2) Chạy Tìm kiếm và thay thế trên tệp, thay thế yourwebsite.com bằng stage.yourwebsite.com 3) nhập cơ sở dữ liệu mới vào MySQL.

4) Thanh toán các tệp từ điều khiển phiên bản tới gốc tài liệu trang web dàn dựng của bạn. 5) sửa đổi ứng dụng/etc/local.xml - thay đổi cài đặt cơ sở dữ liệu sang cơ sở dữ liệu và tên người dùng/mật khẩu mới của bạn. 6) trống var/cache/và var/session thư mục (hy vọng bạn không bao giờ thêm chúng vào hệ thống kiểm soát phiên bản của bạn).

Hoàn thành công việc. :-)

4

Tôi phải làm điều này nhiều lần. Tôi khá nhiều sử dụng những gợi ý tương tự được liệt kê ở đây, nhưng để tóm tắt ...

/app/etc/local.xml

Trong điều khiển phiên bản tôi giữ những tập tin này, đều có riêng DB và bộ nhớ đệm dữ liệu của nó . Đây là các bản sao sửa đổi của tệp local.xml gốc: - ứng dụng/etc/production.local.xml - ứng dụng/etc/staging.local.xml - app/etc/my-dev.local.xml

Tệp local.xml được tạo bằng cách cài đặt sẽ bị xóa. Nó được thay thế bằng một local.xml softlink đến tập tin thích hợp trong từng môi trường:

cd app/etc 
ln -s production.local.xml local.xml 

Ghi chú về quản lý cơ sở dữ liệu khác nhau:

Sau đó, tôi thường tạo ra một thư mục gốc cấp mới gọi là/sql và trong đó tôi tiếp tục kịch bản như thế này được sử dụng để thay thế các môi trường thiết lập:

  • createdb.sql
  • production.setup.sql
  • staging.setup.sql
  • my-dev.setup.sql

createdb.sql được chạy như một người dùng quản trị MySQL và chỉ cần thiết lập cơ sở dữ liệu và người dùng.

create schema magentoschema; create user magentouser; 
grant all on magentoschema.* to 'magentouser'@'localhost'; 
set password for 'magentouser'@'localhost' = password('secret'); 

Một khi bạn tạo cơ sở dữ liệu bạn có thể vào cài đặt ban đầu của bạn và nhận được một mysqldump của cơ sở dữ liệu:

mysqldump -u magentouser -p -h your.host.name magentoschema > magento.dump.sql 

sau đó cài đặt nó vào bất cứ môi trường bạn đang làm việc tại:

mysql -u magentouser -p -h localhost magentoschema < magento.dump.sql 

Sau đó, bạn cần thay đổi tên máy chủ (và có thể một số tham số khác) trong core_config_data. Ngoại hình cơ bản nhất như thế này:

update core_config_data set value='http://staging.yourstore.com/' where config_id in (3,4); 

Bạn cần phải kiểm tra cài đặt Magento của bạn để xem những gì config_id là cho các mục với web/an toàn/BASE_URL và web/không an toàn/BASE_URL trong cột đường. Thật dễ dàng, jsut làm một truy vấn như thế này trên cơ sở dữ liệu:

select * from core_config_data where value like 'http%'; 

Vì vậy, tạo ra các .setup *.sql tệp với tên máy chủ chính xác cho mỗi môi trường và chạy tập lệnh trong mysql giống như bạn đã tải cơ sở dữ liệu:

mysql -u magentouser -p -h localhost magentoschema < staging.setup.sql 

Chúc may mắn!

0

Thực hiện theo các hướng dẫn tại đây http://www.magentocommerce.com/wiki/groups/227/moving_magento_to_another_server

và di chuyển môi trường sản xuất của bạn thành một máy tính cục bộ, sau khi thiết lập wamp hoặc máy chủ zend trên máy tính của bạn.

để làm điều đó, bạn cần phải có một số loại máy chủ nội bộ chạy trên máy dàn của bạn (doesnt cần phải là một máy chủ, cũng có thể sử dụng máy tính xách tay của bạn)

cho dàn thiết lập:

baseurl và cài đặt securebaseurl ở phần cuối của trang dàn dựng, sử dụng "localhost" và giữ môi trường tổ chức trên máy của riêng bạn (bạn có thể thực hiện điều đó bằng máy chủ zend hoặc wamp/lamp chạy trên máy của bạn tùy thuộc vào hệ điều hành của bạn. trên máy dàn dựng của bạn)

Các vấn đề liên quan