Поэтому мне нужно иметь возможность иметь итерации dev / stage / production (на отдельных серверах) для веб-сайта WordPress. Обычно я использую git, но это явно не сработает с сайтами WordPress из-за зависимости базы данных от основных. конфигурация ... ну почти все.
Итак, мой вопрос, как вы, ребята, делаете это? У меня был быстрый Google и я увидел, что там было несколько плагинов, это единственный способ? Какие из них делают работу лучше всего с точки зрения простоты использования, скорости, надежности, пользовательского интерфейса и т. Д.?
svn
version-control
staging
deployment
Роб Вермеер
источник
источник
Ответы:
У меня есть установка, которой я очень горжусь, и она отлично работает для моей команды.
Общая структура
Я держу всю установку под мерзавцем. Все изменения, будь то обновление системы, добавление / обновление плагина, добавление / обновление темы, проходят через тот же рабочий процесс. Изменения могут быть отменены в любой момент. У меня есть сервер развертывания (старый рабочий стол 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 разработчиков, которые работали над этой структурой больше года, и работать с ней было мечтой. Надежный, безопасный, быстрый, функциональный и гибкий, вы не можете требовать гораздо большего!
источник
Во-первых, я считаю важным рассмотреть, что вы собираетесь использовать для контроля версий. Я рекомендовал бы против положить весь каталог 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, чтобы обновить этот репо при каждом коммите. Это будет синхронизировать. (Считайте это непрерывной интеграцией бедняка.)
Производство: Проверьте именованный тег версии, представляющий окончательного кандидата. Когда вам нужно будет использовать новую версию, переключите тег и обновите репо.
источник
Недавно мы обнаружили RAMP . Примечание: это только часть всего процесса, но синхронизация баз данных контента между серверами, вероятно, самая сложная часть.
источник
Я делаю это с Git и Mercurial, просто убедитесь, что вы используете частное репо.
Опция 1.
Единственная проблема - это config.php, который вы можете указать git игнорировать при нажатии или перед init.
Используйте
.gitignore
илиgit update-index --assume-unchanged config.php
(прочитайте немного о предполагаемой неизменной команде перед ее использованием)Варианты 2.
Используйте условие в файле config.php, которое проверяет URL-адрес и применяет правильные учетные данные, в соответствии со словами «если сервер url = dev, то используйте учетные данные A, иначе используйте учетные данные B» и т. Д.
Марк объясняет это лучше, http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
пс. Вы также можете сервировать файлы напрямую из удаленного репозитория вместо традиционного «файлового сервера». (очень скучное видео, которое я сделал об этом http://www.youtube.com/watch?v=8ZEiFi4thDI )
источник