2009-09-04 2 views
33

Я ищу настройку развертывания для высоко настраиваемого сайта Magento и задавался вопросом, как это делают другие люди.Рекомендации по развертыванию Magento

Я буду настраивать среду разработки, UAT и prod. Все файлы Magento будут находиться в источнике управления (SVN). На этом этапе я не вижу никаких требований к изменению БД, поэтому 3 базы данных будут поддерживаться вручную.

В частности,

  • Как применить обновления Magento? (Индивидуально в каждом env или на dev затем выкатывается или просто отказываетесь от апгрейдов?)
  • Какие файлы/папки остаются в покое в каждой среде (например, magento/app/etc/local.xml)
  • Do вы запрещаете разработчикам редактировать определенные файлы/папки?
  • Вы ограничиваете дизайнеров темы редактированием определенных файлов/папок?
  • Как вы управляете изменениями базы данных?

Theme Designer файлов/папок

Проектировщики могут ограничиваться редактирования следующих folders-

app/design/frontend/your_interface/your_theme/layout/ 
app/design/frontend/your_interface/your_theme/template/ 
app/design/frontend/your_interface/your_theme/locale/ 
skin/frontend/your_interface/your_theme/ 

Extension Разработчик файлов/папок

разработчики расширений могут редактировать следующие папки/Files-

/app/code/local 
/app/etc/modules/<Namespace>_<Module>.xml 

управления окружающей средой базы данных

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

  • Переопределение базового url в php. Blog article on setting up dev and staging databases
  • Изменение базового url в базе данных после копирования. (Где хранятся?)
  • Выполнение MySQLDump или резервное копирование, а затем замена на URL в файле SQL.
+0

Возможно, вы захотите удалить «лучший ответ» снизу, так как он даже не отвечает на ваши основные вопросы. – Oddman

+0

Справедливая точка. Я думаю, что этот ответ имеет большое значение, но он счастлив, что голосование решит вопрос о выдаче ответов. – Spongeboy

+0

Не беспокойтесь - я просто рисую ответ, который на самом деле отвечает на вопрос, тот, который должен быть «лучшим ответом», независимо от голосов. Если ответ никоим образом не разрешает проблему, это не очень хороший ответ :) – Oddman

ответ

9

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

+10

Аминь, чтобы «не менять файлы ядра» – Spongeboy

+1

Я проголосовал за это, потому что он никоим образом не адресует ни одну из точек оригинального вопроса, в отличие от некоторых других ответов здесь. – Oddman

7

Я использую git для управления всеми моими проектами и развертываниями Magento. Гораздо проще объединить новые версии, особенно если вы используете зеркало Magento, которое я поддерживаю на github.(GitHub Magento Mirror)

Как для вас конкретный вопрос о том, где базовый URL хранится в БД, попробуйте следующее:

SELECT * FROM core_config_data WHERE path = "web/secure/base_url" OR path = "web/unsecure/base_url"; 
+2

404 на ссылке Github ... –

+0

@JonathanDay существует несколько репозиторий «magento-mirror»: https://github.com/search?q=magento-mirror&p=1&ref=searchbar&type=Repositories&l=, хотя dunno, как все они сравниваются/связаны с тем, который указан в ответе. –

3

Вы можете избежать DB-Manipulation (на немецком языке): http://blog.tudock.de/startseite/beitrag/2010/09/17/deployment-prozess-eines-magento-shops.html

+0

Так хорошо! Там также прилагается английский перевод. Это потрясающе! Btw вместо магазинов вы также можете сделать это на веб-основе области действия: ' Http: //whatever.url/ https: // независимо .url/ ' – workflow

+0

@workflow Вы можете помочь с версией английского перевода, так как вы сказали, что нашли ее. Я не могу его найти. –

+1

@VinuD Не могу найти его - думаю, что он был в комментарии и, вероятно, был потерян в движении или что-то в этом роде. Автор утверждает, что magento обычно переопределяет ваши настройки local.xml с теми, что указаны в DB. Однако вы можете использовать трюк для указания параметров в local.xml для развертывания: Задайте значения (в дБ) для вашего хранилища по умолчанию (область по умолчанию) и оставьте их пустыми для всех видов веб-сайтов/магазинов/магазинов. Теперь вы можете использовать local.xml для переопределения значений по умолчанию для определенных магазинов или веб-сайтов, например, в примере в нижней части сообщения в блоге. Свяжитесь со мной, если вам нужно знать больше. – workflow

14

Я рекомендую использовать git над SVN. Более легкое разветвление и слияние означает, что все эти точки будут более гладкими для вас.

Применение обновлений: Сделайте это в dev. Создайте ветку (именно там git действительно сияет), применяйте файлы исправлений или даже лучше, распакуйте новую версию Magento и укажите ее в свою старую базу данных. Пока нет расширений. Откройте администратора в новой установке Magento, надеясь на лучшее. Модификация между младшими версиями, вероятно, не будет проблемой. Вероятно, вам придется переиндексировать после установки нового материала. Сделайте фиксацию, как только это будет стабильно, затем постепенно добавьте в ветку ваши расширения и темы, внесите какие-либо корректировки кода, а затем совершите фиксацию после каждого шага, доказывая стабильность.

Файлы, зависящие от окружающей среды: .htaccess и приложение/etc/local.xml. Я делаю отдельную версию для каждого: local.dev.xml, Htaccess-DEV local.staging.xml, Htaccess-постановка local.production.xml, Htaccess производство

... а затем сделать softlinks в их для каждой среды:

ln -s htaccess-dev .htaccess 
cd app/etc/ 
ln -s local.dev.xml local.xml 

и так далее.

Ограничение доступа к определенным разработчикам: Я этого не делаю. Однако вы можете разработать стратегию развертывания в git, которая позволяет менеджеру выпуска решить, что происходит, а что нет.

Управление изменениями базы данных: Это самая сложная часть. Мы просто используем mysqldump с производства и имеем готовые файлы «env-setup.sql» для каждой среды. Что-то вроде этого (ваши идентификаторы могут различаться):

UPDATE core_config_data SET value='http://magento.dev/' WHERE config_id IN (3,4); 

Я обычно добавляю еще несколько инструкций, которые изменят платежные шлюзы к тестовой среде, изменить исходящие сообщения электронной почты и т.д. Большинство из них вы найдете в core_config_data.

Помните, что модули обычно вносят свои изменения в db, поэтому применение хорошо сделанного модуля обычно заботится о себе. В любом случае никогда не применяйте непроверенные изменения в prod, всегда делайте «репетиции» в локальных и промежуточных средах.

Вы можете получить данные CMS (страницы и статические блоки) из базы данных путем сброса и загрузки только таблиц cms_ * из любой среды разработки.

Удачи вам!

+0

Есть ли шанс, что вы можете отправить пример одного из ваших env-setup.sql? –

+2

FYI, Magento globs и загружает все файлы '* .xml' в каталог' app/etc', поэтому лучше называть их чем-то вроде 'local.xml.dev' (или помещать их в другой каталог). Таким образом, они не будут загружены в другие среды. – webbiedave

3

После многих проб и ошибок, мы придумали с рабочим процессом, который подходит нам хорошо:

http://www.dhmedia.com.au/blog/perfect-magento-workflow-using-git

Включает управление базами данных, весь код под контролем источника (с Git), развертывание, места разработки и разработки, несколько разработчиков, несколько сред и т. д.

Надеюсь, это поможет кому-то!

+0

Было бы неплохо, если бы вы дали свой ответ здесь, если срок действия вашей ссылки истек. – versedi

+1

Ссылка была истек. – versedi

+1

Возможно, это одно: http://doghouse.agency/article/perfect-magento-workflow-using-git – asiviero

Смежные вопросы