Постановка и производство Magento - PullRequest
19 голосов
/ 06 февраля 2011

Я уже некоторое время занимаюсь разработкой с magento, и все начинает обретать смысл и становится намного более продуманным и организованным. Хотя один аспект все еще кажется довольно запутанным - переход сайта от разработки к производству.

Может кто-нибудь предложить несколько хороших процессов для этого - до сих пор я просто экспортировал / импортировал базу данных разработки, копировал исходные файлы, очищал тестовые заказы, клиентов и т. Д., Затем менял базовые URL, файлы htaccess и т. Д.

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

Ответы [ 2 ]

27 голосов
/ 06 февраля 2011

Мой процесс обычно управляется из репозитория управления исходным кодом (в моем случае SVN), что делает вещи намного проще (или, возможно, действительно ...).Идея состоит в том, чтобы сохранить все возможное в репо и использовать обновления и теги SVN для публикации изменений.

local.xml : я перемещаю этот файл в SVN в local.xml.dist и игнорирую фактический local.xml файл в репо.Это позволяет вам использовать разные учетные данные базы данных и хосты в ваших установках, не загрязняя базу кода.

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

настройка хоста : моя промежуточная среда и среда разработки настроены на запуск из / trunk из репозитория.Здесь происходит разработка, и ее можно периодически запускать (или по запросу) через svn up, чтобы показать клиенту новые функции и выполнить UAT.Тем не менее, производственная среда нуждается в некоторой защите от Дикого Запада магистрали, так что среда лишается тегов.Когда набор функций готов к выходу, я создаю новый тег из транка и делаю svn switch, чтобы перейти к новому набору кодов.Такое поведение также дает мне возможность легко отменить производство (переключиться обратно на последний тег).Таким образом, я удалил из своей жизни все ручные добавления файлов, и это хорошо.

Еще лучшая система (в которой я еще не нуждался) будет использовать svn export для создания полной копиидерево кодов в производственной системе, и используйте ln для переключения между ними.Примерно так:

> cd /home/apacheuser
> ls -l
www -> /home/apacheuser/tag_1.0.1
tag_1.0.1

> svn export /url/for/repo/tags/1.0.2 tag_1.0.2
... svn exports here ...

> rm www; ln -s /home/apacheuser/tag_1.0.2 www

Таким образом, изменения версии происходят мгновенно.

db sync обратно из производства : чтобы я мог работать с производственными данными,У меня настроено задание cron для выгрузки производственной базы данных и ее импорта в стадию.Пока это происходит, скрипт удалит конфиденциальные данные клиентов (и изменит адреса электронной почты клиентов, чтобы все письма отправлялись мне).Он также изменит настройки шлюза кредитной карты на тестовый шлюз и изменит параметры base_url, чтобы URL-адреса промежуточного сайта работали правильно.

new development : Вы можете заметить, что в разных средахиспользовать примерно одинаковую кодовую базу (за исключением любых новых изменений), что может показаться вам неприятным из-за того, что вы заметили об изменениях в базе данных и т. д.

Единственный способ справиться с этой сложностью (и правильный путь,в то же время!) должен убедиться, что сам код отслеживает необходимые изменения в среде.Magento поддерживает автоматическое обновление версий модулей, включая сценарии базы данных, которые вы должны использовать для внесения изменений в схему и т. Д. Это означает, что при развертывании нового кода в стадии подготовки / производства (или при получении его от другого разработчика в среде разработки),все исправления базы данных применяются автоматически.

Это также означает, что вам нужно написать новые функциональные возможности, чтобы они были максимально неразрушающими.Темы Magento, отключенные модули и тому подобное можно использовать, чтобы сделать это реальностью.Например, при создании новой темы для сайта не изменяйте поведение ядра и сохраняйте все новые ресурсы в теме, которая будет инертна в рабочей среде, до развертывания.

большеdevelopers : Эта установка основана на относительно небольшом количестве разработчиков проекта.Существует неявное предположение, что, когда вы хотите пометить новый выпуск, вы можете перевести магистраль в рабочее состояние.С большим количеством разработчиков это будет происходить все реже и реже, поэтому необходима более сложная настройка репо.Если я столкнусь с этим, я планирую перейти на использование git вместо SVN и использовать функциональные ветви для новых разработок.


Дайте мне знать, если что-то из этого было неясно.Надеюсь, это поможет!

Спасибо, Джо

0 голосов
/ 20 октября 2012

1) Скопируйте файлы.Очистите папки var / cache и var / session.

2) Экспортируйте базу данных, создайте промежуточную базу данных и импортируйте этот файл дампа.

3) Обновите приложение / etc / local.XML-файл с информацией о вашей новой промежуточной базе данных.

4) Измените базу данных с помощью такого инструмента, как PHPMyAdmin, и отредактируйте таблицу 'core_config_data', чтобы обновить базовые URL-адреса (/ web / secure и / web / unsecure)

для этого Запустите запрос:

 SELECT * FROM core_config_data WHERE path = 'web/unsecure/base_url' OR path = 'web/secure/base_url'; 

и измените значения полученных строк.

5) Если у вас есть доступ по SSH, выполните эту команду в промежуточном хранилище.корень документа:

./pear mage-setup .

6) Запустить сайт в браузере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...