Dev, Stage и Production Deployment для сайтов WordPress?

Поэтому мне нужно иметь итерации dev /stage /production (на отдельных серверах) для веб-сайта WordPress, я обычно использую git, но это, очевидно, не будет работать с сайтами WordPress из-за зависимости от базы данных для основной конфигурации ... ну, почти все.

Итак, мой вопрос: как вы, ребята, это делаете? У меня был быстрый Google и увидел, что есть несколько плагинов, это единственный способ? Какие из них делают работу лучше всего с точки зрения простоты использования, скорости, надежности, ui и т. Д.?

39 голосов | спросил igneosaur 18 Jpm1000000pmWed, 18 Jan 2012 21:22:43 +040012 2012, 21:22:43

4 ответа


25

У меня есть настройка, которой я очень горжусь, и она отлично работает для моей команды.

Общая структура

Я держу всю установку под git. Все изменения, будь то обновление системы, добавление /обновление плагина, добавление /обновление темы, просмотр одного и того же рабочего процесса. Изменения можно отменить в любой момент. У меня есть сервер развертывания (старый рабочий стол P4), работающий под gitosis , но вы можете так же легко использовать github или gitolite . В git у меня есть две «специальные» ветви, master и develop (объяснено ниже). Мои серверы производства и промежуточного уровня облачные.

Среда разработки

Каждый разработчик запускает собственный сервер разработки на своей собственной машине. Что касается баз данных, потребность в живых данных вряд ли когда-либо была проблемой. В основном мы используем данные тестовой единицы темы . В противном случае экспорт и импорт охватывают большинство вещей. Если бы часть БД имела решающее значение, вы могли бы настроить репликацию или настроить что-то для синхронизации по требованию. Когда я первоначально настроил эту структуру, я подумал, что это будет иметь решающее значение, поэтому я начал писать набор инструментов для сделайте это, но, к моему удивлению, они действительно не были нужны. (обратите внимание: поскольку они не были необходимы, я никогда не отлаживал их, поэтому есть ошибки, например, они заменят домен в сериализованных данных).

Окружающая среда

Когда коммиты переносятся из ветки develop на gitosis, они автоматически развертываются на нашем промежуточном сервере. Эта промежуточная база данных является подчиненной базой данных.

Производственная среда

Когда коммиты переносятся на gitosis в ветвь master , она автоматически развертывается на рабочем сервере.

Проблема wp-config.php

Вы хотите, чтобы wp-config.php был уникальным с сервера на сервер, но вы также хотите сохранить его под контролем версий. Мое решение состояло в том, чтобы использовать .gitignore , чтобы игнорировать wp-config.php и хранить промежуточные и производственные версии как файлы с иными именами. Затем на каждом сервере, например, symlink, например. wp-config.php -> сор-конфиг-production.php . Затем каждый пользователь сохраняет свою собственную БД со своими учетными данными со своими собственными настройками wp-config.php.

Другие примечания

Я использую Rackspace Cloud , что является феноменальным и недорогим. С его помощью я могу оставить свои серверы промежуточного уровня и производства одинаковыми. Я также пишу плагины прямо сейчас, используя свой API, чтобы позволить мне управлять своими услугами прямо из WordPress. Это замечательно.

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

Структура мастера /разработки настроена на частичную имитацию ветвящейся модели Vincent Driessen . Я также использую его расширение git git-flow , и я бы тоже предложил это.

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

ответил Matthew Boynes 13 FebruaryEurope/MoscowbMon, 13 Feb 2012 08:38:14 +0400000000amMon, 13 Feb 2012 08:38:14 +040012 2012, 08:38:14
4

Во-первых, я думаю, что важно рассмотреть , что вы собираетесь в Control Version. Я бы рекомендовал против поместить весь каталог WP в VC. Я думаю, что наиболее целесообразно поместить wp-content /themes /YourThemeName под VC. Для большого сайта с большим количеством сложных плагинов я мог видеть, что этот случай включал wp-content /plugins. Если вам это абсолютно необходимо, вы можете включить wp-content /uploads. Ответы ниже немного изменятся, в зависимости от того, что вы контролируете версиями.

Учитывая это, вот что я использую:

Локальный. Настройте стек LAMP на вашем компьютере. Используйте тот же URL-адрес, что и ваш сайт разработки. Используйте записи VirtualHosts и .host для имитации среды разработки с точки зрения URL. Если вы просто используете VC для своей темы, подумайте о том, чтобы использовать SSHFS для связи с wp-content /plugins, wp-content /uploads. Подумайте о том, как использовать базу данных для вашей разработки в проекте, если вы действительно не делаете тяжелый подъем.

Разработка. Оформить рабочую копию своего репо в вашу среду WP. Установите POST-COMMIT Hook в SVN, чтобы обновить это репо для каждой фиксации. Это заставит его синхронизировать. (Рассматривайте его как непрерывную интеграцию бедных).

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

ответил Ethan Seifert 19 Jam1000000amThu, 19 Jan 2012 04:48:20 +040012 2012, 04:48:20
2

Недавно мы обнаружили RAMP . Примечание. Это всего лишь часть всего процесса, но синхронизация баз данных контента между серверами, вероятно, является самой сложной его частью.

ответил lkraav 4 FebruaryEurope/MoscowbSat, 04 Feb 2012 20:56:16 +0400000000pmSat, 04 Feb 2012 20:56:16 +040012 2012, 20:56:16
2

Я делаю это с git и mercurial, просто убедитесь, что вы используете частное репо.

Вариант 1.

Единственная проблема - это config.php, который вы можете сказать git игнорировать при нажатии или перед init.

Используйте .gitignore или git update-index --assume-unchanged config.php (немного прочитайте о предполагаемой неизменной команде перед ее использованием)

Параметры 2.

Используйте условный код в файле config.php, который проверяет URL-адрес и применяет правильные учетные данные, в строках «if server url = dev», затем используйте учетные данные A, иначе используйте учетные данные B »и т. д.

Марк объясняет это лучше, http: //markjaquith. wordpress.com/2011/06/24/wordpress-local-dev-tips/

пс. Вы также можете загружать файлы непосредственно из удаленного репо вместо традиционного «файлового сервера». (действительно скучное видео, которое я сделал об этом http://www.youtube.com/watch?v=8ZEiFi4thDI )

ответил Wyck 4 FebruaryEurope/MoscowbSat, 04 Feb 2012 23:22:18 +0400000000pmSat, 04 Feb 2012 23:22:18 +040012 2012, 23:22:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132