Magento & Subversion (SVN) - Началась разработка среды разработки?
Я работаю над созданием сайта Magento, и это, безусловно, самый гигантский пакет, с которым я когда-либо работал. Я решил создать надлежащий сервер разработки и использовать Subversion для управления версиями. Я бегу в пару блокпостов и нуждаюсь в некоторой помощи.
Что я сделал до сих пор:
- Настройте веб-хостинг на хосте, использующем cPanel. Мой сайт "Live" (mysite.com) будет находиться в ~/public_html/.
- Создал субдомен "Разработка" (dev.mysite.com), который указывает на ~/public_html/dev/.
- Начал репозиторий SVN внутри ~/svn/. В моем репозитории есть папки с папками | теги | Ствол.
- Импортировал свежезаваренный неаргированный пурпурный архив (v.1.3.2.4) в мое репо на туловище /magento.
- Созданы две базы данных a. mysite_live и b. mysite_dev.
- Выбрал код magento из моего репо в ~/public_html/dev/(dev.mysite.com)
- Отредактируйте начальный установщик Magento, который заполнил мой mysit_dev Db и создал некоторые файлы конфигурации (приложение/etc/local.xml - единственное, что я знаю - могут быть другие?).
Здесь, где я застрял:
Итак, у меня есть полнофункциональная Magento Install в моем пространстве dev. То, что я хочу сделать сейчас, - это установить мой сайт в реальном времени, идентичный моему сайту dev, в качестве отправной точки. Поскольку в файле app/etc/local.xml другая версия отличается; плюс Magento хранит значение для {{base_url}} внутри базы данных, это не так просто, как обновление моей svn-магистрали с моего сайта-разработчика, а затем экспорт/импорт db.
По мере того, как я продвигаюсь дальше, я хочу, чтобы там был простой путь, чтобы проталкивать все на моем сайте dev через SVN и на мой живой сайт, а также поддерживать синхронизацию баз данных, за исключением значения {{ base_url}}. Я прочитал пару сообщений на форуме в другом месте, ссылаясь на использование svn: ignore, чтобы избежать определенных файлов и каталогов, зависящих от среды, но не знаю, как настроить на моем сайте и убедиться, что все правильно синхронизировано.
Должен ли я просто проверить копию базового кода из trunk/magentoo из моего репо на мое пространство в реальном времени, а затем запустить установку, а затем установить svn для игнорирования local.xml и предположить, что они идентичны, за исключением локальные различия?
В этот момент я просто не знаю, как действовать дальше, и я не хочу делать какие-либо догадки, если это приведет к тому, что вам нужно будет стереть все и начать снова в ближайшем будущем.
В качестве побочного примечания - мне также нужно создать ветвь "Demo" кода для другого поддомена; чтобы показать людям как доказательство концепции. Я, вероятно, просто перейду через этот мост, когда приду к нему. Может быть, все это будет иметь смысл к тому моменту, когда я займусь этой задачей.
tl; dr версия - как мне управлять Magento development & live code & Db с SVN?
Спасибо всем, что нашли время, чтобы прочитать и ответить!
Ответы
Ответ 1
Первое, что нужно сделать, это проверить установленную версию программы. Таким образом, копия программы в репо является рабочей, которую вы действительно можете использовать. Затем вам нужно будет игнорировать некоторые файлы и каталоги, чтобы вы могли запускать другие среды. local.xml
- хороший пример, но также игнорировать следующее:
/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-копию сайта, так как это поможет синхронизировать вашу базу данных. Если вы внесете изменения в живую копию, не задумываясь, по крайней мере, отражая их в dev, вы, вероятно, случайно перезапишете их позже одной из дампов, а затем задаетесь вопросом, куда ваши функции пошли.
Надеюсь, что это поможет. Если у вас есть другие конкретные вопросы, дайте мне знать.
Спасибо,
Джо
Ответ 2
Я понимаю, что это не совсем то, о чем вы просили, а просто хотите рассказать вам о моей настройке, потому что я считаю нецелесообразным продолжать синхронизацию базы данных dev с продукцией после того, как вы начнете жить. Вероятно, вы захотите внести изменения в свою базу данных dev для тестирования, которые не всегда легко вернуть. Создавая свой контент (продукты и т.д.) В живой среде и время от времени копируя базу данных обратно в развитие, я нахожу работу очень хорошо.
В моем проекте я построил свою живую среду, установив Magento с нуля и просто проверил каталоги из SVN в этих точках:
/app/code/local/MyOrg
/app/design/frontend/default/myorg
/skin/frontend/default/myorg
Любые настройки, которые вы делаете, должны находиться в одном из этих каталогов.
Я управляю этим каталогом вручную на реальном сервере:
/app/etc/modules
Вам нужно создать файл там, если вы сами создаете новый модуль.
Ответ 3
Я написал Module Manager специально для решения этих проблем.
Я не рекомендую приложение для управления версиями /etc/local.xml, чтобы каждая среда могла иметь разные учетные данные базы данных, но я рекомендую управлять версиями все остальное, используя modman. Кроме того, я рекомендую, чтобы modman запускал script, который очищает кеш Magento и применяет обновления базы данных, такие как найденный здесь.
При правильном использовании вы можете "svn совершить" на свою магистраль и просто запустить "modman update-all" в других средах (включая live) для обновления. Для более безопасного обновления на 1.4 вы можете запустить
touch maintenance.flag; sleep 2; modman update-all; rm maintenance.flag
Ответ 4
мы используем разные файлы local.xml. Именование зависит от вас, но рекомендуется использовать local.xml.qa или local.xml.live, имеющие специальную строку подключения: -)
одно примечание: magento обрабатывает все *.xml файлы в папке приложения /etc, поэтому будьте осторожны при именовании
Ответ 5
Вот bash script, который позволяет установить значения свойств svn:ignore
для проекта Magento.