У меня есть установка, которой я очень горжусь, и она отлично работает для моей команды.
Общая структура
Я держу всю установку под мерзавцем. Все изменения, будь то обновление системы, добавление / обновление плагина, добавление / обновление темы, проходят через тот же рабочий процесс. Изменения могут быть отменены в любой момент. У меня есть сервер развертывания (старый рабочий стол P4), на котором запущен gitosis, но вы также можете легко использовать github или gitolite . В git у меня есть две «специальные» ветки, master
и develop
(объяснено ниже). Мои производственные и промежуточные серверы основаны на облаке.
Среды разработки
Каждый разработчик запускает свой собственный сервер разработки на своей машине. С точки зрения баз данных, потребность в живых данных вряд ли когда-либо была проблемой. В основном мы используем данные тестового модуля темы . В противном случае экспорт и импорт охватывает большинство вещей. Если часть БД имеет решающее значение, вы можете настроить репликацию или настроить что-то для синхронизации по требованию. Когда я изначально настраивал эту структуру, я думал, что это будет крайне важно, поэтому я начал писать набор инструментов для этого, но, к моему удивлению, они действительно не были необходимы. (примечание: поскольку они не были необходимы, я никогда не полировал их, поэтому есть ошибки, например, он заменит домен в сериализованных данных).
Сценическая среда
Когда коммиты передаются из develop
ветки в Gitosis, они автоматически развертываются на нашем промежуточном сервере. Промежуточная база данных является подчиненной производственной базе данных.
Производственная среда
Когда коммиты отправляются в Gitosis в master
филиале, он автоматически развертывается на производственном сервере.
Проблема с wp-config.php
Вы хотите wp-config.php
быть уникальным с сервера на сервер, но вы также хотите держать его под контролем версий. Мое решение состояло в том, чтобы использовать, .gitignore
чтобы игнорировать wp-config.php
и хранить промежуточные и производственные версии как файлы с разными именами. Затем на каждом сервере, я символическая ссылка, например wp-config.php -> wp-config-production.php
. Каждый пользователь затем сохраняет свою собственную БД со своими учетными данными, со своими (не отслеживаемыми) параметрами wp-config.php.
Другие заметки
Я использую Rackspace Cloud , который феноменален и недорог. С его помощью я могу сохранить свои промежуточные и производственные серверы идентичными. Я также пишу плагины, которые используют их API, чтобы позволить мне контролировать свои сервисы прямо из WordPress, это замечательно.
Каталоги кэша, каталоги загрузки файлов и т. Д. Все это добавляется в .gitignore. Если вы хотите, вы можете настроить задачу cron, чтобы регулярно проверять загружаемые файлы и отправлять их в Gitosis, но это никогда не казалось мне необходимым.
Структура мастер / разработчик настроена на частичную имитацию модели ветвления Винсента Дриссена . Я также использую его git-расширение git-flow и очень рекомендую это сделать.
У меня было около 10 разработчиков, которые работали над этой структурой больше года, и работать с ней было мечтой. Надежный, безопасный, быстрый, функциональный и гибкий, вы не можете требовать гораздо большего!