Magento & Subversion (SVN) - Начало среды разработки? - PullRequest
19 голосов
/ 13 января 2010

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

Что я сделал до сих пор:

  1. Настройка веб-хостинга на хосте, который использует cPanel. Мой «живой» сайт (mysite.com) будет находиться в ~ / public_html /.
  2. Создан поддомен 'Development' (dev.mysite.com), который указывает на ~ / public_html / dev /.
  3. Запустил SVN-репозиторий внутри ~ / svn /. Мой репо содержит папки веток | теги | Ствол.
  4. Импортировал только что неиспользованный архив magento (v.1.3.2.4) в мой репозиторий в trunk / magento.
  5. Создано две базы данных а. mysite_live и б. mysite_dev.
  6. Извлек magento-код из моего репозитория в ~ / public_html / dev / (dev.mysite.com)
  7. Запустил первоначальный установщик Magento, который заполнил мою базу данных mysite_dev и создал несколько файлов конфигурации (единственное, что я знаю - app / etc / local.xml - могут быть и другие?).

Вот где я застрял :

Итак, у меня есть полностью функциональная установка Magento в моем пространстве разработчика. Что я хочу сделать сейчас, так это развернуть мой действующий сайт, идентичный моему сайту разработчика, в качестве отправной точки. Потому что конфиг отличается в файле app / etc / local.xml; Кроме того, Magento хранит значение для {{base_url}} внутри базы данных, это не так просто, как обновить мой ствол SVN с моего сайта разработчика, а затем экспортировать / импортировать БД.

По мере того, как я буду продвигаться дальше по этому пути, я хочу, чтобы был прямой путь для передачи всего на моем сайте разработчика через SVN и на мой действующий сайт, наряду с синхронизацией баз данных, за исключением значения {{ base_url}}. Я прочитал пару постов на форумах, где упоминается использование svn: ignore, чтобы избежать определенных специфичных для среды файлов и каталогов, но я не знаю, как настроить мой живой сайт и убедиться, что все правильно синхронизировано.

Должен ли я просто извлечь копию базового кода из trunk / magentoo из моего репо в пространство моего живого сайта, затем запустить установку, затем установить svn, чтобы игнорировать local.xml, и предположить, что они идентичны, кроме местные различия?

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

В качестве дополнительного примечания - мне также нужно создать ветвь кода 'Demo' для другого субдомена; показать людям как доказательство концепции. Я, наверное, просто перейду этот мост, когда подойду к нему. Может быть, все это будет иметь смысл, когда я доберусь до этой задачи.

tl; dr версия - как мне управлять разработкой Magento и живым кодом и БД с SVN?

Спасибо всем, что нашли время, чтобы прочитать и ответить!

Ответы [ 5 ]

21 голосов
/ 14 января 2010

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

/var/report/*
/var/log/exception.log
/var/log/system.log
/var/locks/*
/var/session/*
/var/cache/*
/var/tmp/*
/media/tmp/*

Возможно, есть и другие, но это должно дать вам хорошее начало. Если вы считаете, что можете внести изменения в local.xml (и вы можете это сделать), скопируйте local.xml в local.xml.dist и проверьте версию .dist в репозитории. Когда вы переходите на другие сайты, вам все равно придется вносить изменения вручную, но их будет легче отслеживать.

Для базы данных распространенной практикой является создание mysqldump в среде dev и сохранение его в хранилище.

mysqldump -u user -p database > mysqldump.sql

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

Помните, что когда вы делаете это (и каждый раз, когда вы обновляете базу данных в репозитории, а затем хотите обновить изменения в других средах), вам нужно будет изменить {base_url} и {secure_url} в базе данных. Я видел некоторые среды, в которых разработчики создавали сценарии для автоматического выполнения этого.

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

Надеюсь, это поможет. Если у вас есть другие конкретные вопросы, дайте мне знать.

Спасибо, Джо

9 голосов
/ 28 января 2010

Я понимаю, что это не совсем то, что вы просили, но просто хочу рассказать вам о моей настройке, потому что я думаю, что нецелесообразно продолжать синхронизацию базы данных dev с производством, когда вы начнете работать. Возможно, вы захотите внести изменения в свою базу данных для тестирования, которые не всегда легко вернуть. Создание вашего контента (продуктов и т. Д.) В реальной среде и иногда копирование базы данных обратно в разработку, я считаю, работает очень хорошо.

Для своего проекта я создал свою живую среду, установив Magento с нуля, и только что проверил каталоги из SVN в следующих точках:

/app/code/local/MyOrg
/app/design/frontend/default/myorg
/skin/frontend/default/myorg

Все ваши настройки должны находиться в одном из этих каталогов.

Я управляю этим каталогом вручную на живом сервере:

/app/etc/modules

Вам нужно создать файл, только если вы создаете новый модуль самостоятельно.

4 голосов
/ 08 июля 2010

Я написал Диспетчер модулей специально для решения этих проблем.

Я не рекомендую управлять версиями приложения / etc / local.xml, чтобы каждая среда могла иметь разные учетные данные базы данных, но я рекомендую управлять всеми остальными версиями с использованием modman. Кроме того, я рекомендую, чтобы modman запустил скрипт, который очищает кеш Magento и применяет обновления базы данных, такие как , найденный здесь .

При правильном использовании вы можете «svn commit» в транк и просто запустить «modman update-all» в других средах (включая живые) для обновления. Для более безопасного обновления 1.4 вы можете запустить

touch maintenance.flag; sleep 2; modman update-all; rm maintenance.flag
0 голосов
/ 12 июля 2012

Вот скрипт bash , который помогает установить svn:ignore значения свойств для проекта Magento.

0 голосов
/ 12 февраля 2012

мы используем разные файлы local.xml. Именование зависит от вас, но рекомендуется local.xml.qa или local.xml.live, имеющие строку подключения для конкретной среды: -)

одно примечание: magento обрабатывает все * .xml файлы в папке app / etc, поэтому будьте осторожны с именами

...