Несколько сред Magento

У нас есть установка магазина Magento, и в рамках контроля версий мы хотели бы настроить промежуточный магазин, который использует тот же код, но другие детали подключения. например Актуальные сведения для живого магазина и промежуточная база данных для промежуточного хранения.

Возможно ли это с Magento, кажется, нет способа сделать это по умолчанию?


person Tom    schedule 09.02.2011    source источник


Ответы (9)


Том,

Поскольку вы используете контроль версий, я бы посоветовал вам не использовать одни и те же файлы как для подготовки, так и для производства. Это вообще плохая идея. В идеале у вас должна быть разная среда для промежуточной и рабочей среды, каждая из которых имеет свой набор файлов и собственную базу данных. Таким образом, вам не нужно беспокоиться о препятствии, которое вы испытываете сейчас.

person Prattski    schedule 09.02.2011
comment
Как это будет выглядеть, будем ли мы хранить файл конфигурации для каждой среды в отдельной ветке и объединять изменения? - person Tom; 09.02.2011
comment
Один из способов решить эту проблему — полностью удалить app/etc/local.xml из системы управления версиями. Затем добавьте local.xml.dev, local.xml.stage и local.xml.prod в систему управления версиями. При развертывании на этапе у вас также есть сценарий, который по мере необходимости копирует соответствующую версию local.xml (т. е. cp local.xml.stage local.xml). - person shaune; 09.02.2011
comment
Я сохраняю имя файла одинаковым для каждой версии (багажник, этап и т. д.), а затем использую .svn-ignore, чтобы предотвратить перезапись производственных версий. Это также предотвращает случайные изменения любого рода. Некоторые хосты, поддерживающие Magento, такие как Nexcess, довольно хорошо справляются с управлением local.xml деталями, и я не хочу перезаписывать их тяжелую работу. - person clockworkgeek; 09.02.2011
comment
@sdek Вероятно, это был подход. - person Tom; 10.02.2011
comment
в зависимости от того, какую систему управления версиями вы используете, это может быть разумно возможно ... мы используем git, а затем просто игнорируем app/etc/local.xml и app/etc/config.xml (а также другие файлы конфигурации), затем просто есть ветка для сцены и ветка для live... кажется, работает хорошо... хотя с некоторыми другими системами управления версиями это почти невозможно... и да, ДОЛЖЕН использовать отдельные базы данных, в противном случае вызывает много проблем - person sbditto85; 19.01.2012
comment
Это ужасный ответ! Любая приличная система PHP имеет возможность обрабатывать конфигурации с несколькими средами... ZF (на чем построен Magento) имеет поддержку для этого. Может быть, дебилы в Magento решили вырвать эту функцию! - person quickshiftin; 14.09.2014
comment
Не хороший ответ. Действительно. Цель промежуточной среды состоит именно в том, чтобы объединить разрабатываемый код, данные, сервисы и т. д., чтобы было легко увидеть, достаточно ли безопасен следующий шаг — выпуск в производство. Конечно, для этого вам нужно управлять различными глобальными средами — для Magento, WordPress, Symfony или чем-то еще — например, именами хостов, соединениями с базами данных, мультимедийной файловой системой и т. д. Это означает, что вы должны разработать этот уровень для интеграции вещей. - person inigomedina; 10.03.2015

Способов много, один из самых простых, не требующих дополнительных расширений —

-> создать

  • /app/etc/local.xml.dev
  • /app/etc/local.xml.live
  • /app/etc/local.xml.стадия

и НЕ управляйте версиями local.xml

и создайте символическую ссылку на нужный файл в каждой среде, таким образом, вы можете хранить всю информацию о соединении в svn или git,

person Istvano    schedule 25.01.2012
comment
Вау, трудно поверить, что Magento потерял поддержку среды, которую ZF имеет из коробки, но я, вероятно, в конечном итоге перейду к этому подходу, спасибо. - person quickshiftin; 14.09.2014
comment
Согласен, квикшифтин. Кажется смешным, что нет поддержки конфигураций окружения. - person Artistan; 22.09.2014

Мне приходилось делать это много раз. Я в значительной степени использую те же предложения, перечисленные здесь, но подытожу...

/app/etc/local.xml

В контроле версий я храню эти файлы, каждый со своей собственной БД и данными кэширования. Это измененные копии оригинального файла local.xml: - app/etc/production.local.xml - app/etc/staging.local.xml - app/etc/my-dev.local.xml

Файл local.xml, созданный при установке, удаляется. Он заменяется программной ссылкой local.xml на соответствующий файл в каждой среде:

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

Примечания по управлению различными базами данных:

Затем я обычно создаю новый корневой каталог с именем /sql и храню в нем такие скрипты, которые используются для настройки альтернативных сред:

  • созданныйb.sql
  • production.setup.sql
  • staging.setup.sql
  • мой-dev.setup.sql

createdb.sql запускается от имени администратора MySQL и просто настраивает базу данных и пользователя.

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

После создания базы данных вы можете перейти к исходной установке и получить mysqldump базы данных:

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

затем установите его в любую среду, в которой вы работаете:

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

Затем вам нужно изменить имя хоста (и, возможно, некоторые другие параметры) в core_config_data. Самое основное выглядит так:

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

Вам нужно проверить свою установку Magento, чтобы узнать, что такое config_id для записей с web/secure/base_url и web/unsecure/base_url в столбце пути. Это просто, просто сделайте такой запрос в базе данных:

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

Поэтому создайте файлы *.setup.sql с правильными именами хостов для каждой среды и запустите скрипт в mysql точно так же, как вы это делали для загрузки базы данных:

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

Удачи!

person Greg Robbins    schedule 06.09.2012


Я написал руководство специально для вас, чтобы объяснить процесс настройки среды staging/dev/live с Magento и SVN.

http://www.sonassi.com/knowledge-base/staging-development-live-svn-with-magento/

person Ben Lessani - Sonassi    schedule 07.03.2012

Ты можешь это сделать.

Вам нужно сосредоточиться на файле local.xml в папке etc и соответствующим образом установить настройки db.

Также измените значения полей безопасного и небезопасного базового URL-адреса в таблице core_config_data.

person Tommy Cox Green    schedule 09.02.2011
comment
У вас есть ссылка на то, как это может выглядеть на самом деле? - person Tom; 09.02.2011
comment
для baseurl и securebaseurl промежуточного сайта используйте localhost и сохраните промежуточную среду на своем компьютере (вы можете сделать это, используя сервер zend или wamp/lamp, работающий на вашем компьютере, в зависимости от вашей ОС, а затем скопируйте все это на свою промежуточную машина) - person serdarsenay; 03.10.2012
comment
Я только что разместил более подробную информацию в качестве ответа ниже. - person serdarsenay; 03.10.2012

Не уверен, что это возможно.

Не могли бы вы создать файл PHP с оператором IF, который затем будет отображать соответствующий XML для среды. Затем вам нужно будет сделать это доступным как local.xml через .htaccess.

После этого убедитесь, что он недоступен из внешнего мира.

person AndyDev    schedule 09.02.2011

Дублировать магазин для разработки легко с Magento.

Поскольку у вас есть код в системе контроля версий, вы просто выполняете следующие шаги:

1) Создайте резервную базу данных, экспортируйте ее как SQL. 2) Запустите поиск и замену в файле, заменив yourwebsite.com на stage.yourwebsite.com 3) импортируйте новую базу данных в MySQL.

4) Извлеките файлы из системы управления версиями в корневую папку документа промежуточного сайта. 5) изменить app/etc/local.xml - изменить настройки базы данных на вашу новую базу данных и имя пользователя/пароль. 6) пустые папки var/cache/ и var/session (надеюсь, вы никогда не добавляли их в свою систему контроля версий).

Работа выполнена. :-)

person Andrew    schedule 16.07.2012

Следуйте инструкциям здесь http://www.magentocommerce.com/wiki/groups/227/moving_magento_to_another_server

и переместите свою производственную среду на локальный компьютер после настройки сервера wamp или zend на вашем компьютере.

для этого вам нужно иметь какой-то локальный сервер, работающий на вашей промежуточной машине (это не обязательно должен быть сервер, вы также можете использовать свой ноутбук)

для постановки:

baseurl и securebaseurl в задней части промежуточного сайта, используйте «localhost» и сохраните промежуточную среду на своем компьютере (вы можете сделать это, используя сервер zend или wamp/lamp, работающий на вашем компьютере, в зависимости от вашей ОС, затем скопируйте все это на вашей промежуточной машине)

person serdarsenay    schedule 03.10.2012