2012-02-24 3 views
7

Я надеюсь, кто-то сможет подтвердить, имеет ли место следующий сценарий при развертывании обновлений на сайтах WordPress, и если да, то у вас есть решение о том, как наилучшим образом управлять этим?Как обновить Wordpress и плагины при развертывании с помощью Capistrano?

Основа:

  • У меня есть локальный проект разработка WordPress Многоузлового, для которого я использовать GIT и Capistrano для развертывания на удаленную постановку и производство серверов.
  • Все EXCEPT каталогов uploads и blogss.dir (в wp-content) находятся под управлением версиями. Да, ядро ​​WordPress, темы, плагины и т. Д. Обновляются локально, исправлены, нажаты и развернуты. Это означает, что я должен войти в систему и активировать плагины изначально - они просто устанавливаются с помощью Капистрано развертывания
  • баз данных по разработке, постановке и производства различны и я не обеспокоен пытается синхронизировать эти вверх

Моей проблема:

многих обновления плагин WordPress и ядро ​​также выполнить обновление базы данных при выполнении обновления авто через администратор. Я обновляю ядро ​​WordPress и плагины локально на моей установке разработки. Код для этих обновлений заканчивается тем, что выполняется, толкается и развертывается. Однако при развертывании кода он просто добавляет/удаляет/заменяет измененные файлы на промежуточные и производственные серверы. В производстве и постановке отсутствуют какие-либо обновления базы данных, поскольку это обычно является частью процесса автоматического обновления - например, деактивировать, обновлять, активировать (запускать любые обновления в базу данных).

Моих вопросы:

  1. Является ли мое беспокойство по поводу производства и постановочных сервера, имеющих последней версии кода, но отсутствует какое-либо обновление базы данных, необходимое для последнего кода точного?
  2. Если да, есть ли у кого-нибудь мысли о том, как я могу изменить Capistrano код развертывания для деактивации/повторного включения плагинов? Как насчет изменений в WordPress, например, от 3,2 до 3,3?
  3. Если Capistrano не инструмент для этого - и мне нужно, чтобы сделать это более «вручную», войдя в админке - есть режим обслуживания инструмент/плагин, который будет несколько автоматизировать деактивации/активации плагины, поэтому любые обновления при активации запускаются?

Большое спасибо,

Matt

ответ

4

важно отметить, что вы не нужно активировать и деактивировать плагинов при обновлении ядра WordPress от версии к версии. Here is an explanation from Ryan Boren on why. В зависимости от плагина, некоторые из них могут иметь процесс обновления, встроенный в , их обновление, то есть обновление плагина, а не WordPress. Тем не менее, я рассмотрю ваши три вопроса и отвечу им как можно лучше.

1.Я беспокоюсь о том, что серверы производства и промежуточного уровня имеют последний код, но отсутствуют какие-либо обновления базы данных, необходимые для последнего кода?

Да, при обновлении при изменении схемы базы данных WordPress не будет функционировать должным образом, если не существует новой схемы. При попытке получить доступ к админ-стороне WordPress, если версия db ниже, чем ожидает ваша версия WordPress, она перенаправит вас на страницу обновления базы данных.

WordPress устанавливает глобальный называется $wp_db_version в файле /wp-includes/version.php и поддерживает каждый из сценариев переноса для обновления базы данных с приращением от каждой предыдущей версии до следующего, пока номер версии не в курсе, seen here. Ниже приведен более простой список в FAQ, показывающий, как номера ревизий коррелируют с WordPress versions..

2. Если да, есть ли у кого-нибудь мысли о том, как я могу изменить код развертывания Capistrano для деактивации/активации плагинов?

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

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

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

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

Посмотрите через весь /wp-admin/includes/plugin.php файл, чтобы увидеть, что вы могли бы оказаться полезными. Кроме того, код проверки, который фактически обрабатывает плагины в стороне администратора в /wp-admin/plugins.php - просто чтобы посмотреть, как это делается. Возможно, вы захотите остановить крючки deactivate_plugin от выключения конфигурации плагина с помощью плагинов, которые очищаются после себя, поэтому рассмотрите передачу $silent как true при отключении плагина.

Чтобы сделать это действительно пятно, вы, вероятно, хотите, чтобы захватить get_option('active_plugins'), чтобы увидеть, какие плагины уже были активированы, и только запустить скрипт на этих (убедитесь, что плагин исключает себя из процесса)

3. Как насчет изменений в WordPress, например, от 3.2 до 3.3?

Изменения от 3.2 до 3.3 следует рассматривать как ничем не отличные от каких-либо других изменений, поэтому все сказанное здесь применимо.

4. Если Capistrano не является инструментом для этого - и мне нужно сделать это более «вручную», войдя в админ - есть ли инструмент/плагин режима обслуживания, который несколько автоматизирует деактивацию/активацию плагины, поэтому любые обновления при активации запускаются?

Я не думаю, что Капистрано будет делать любой тяжелый подъем здесь, но его, конечно, тоже не так. Вам просто нужно иметь возможность просто ударить URI в плагине, и это должно заставить вещи двигаться в приложении. Важно то, что очевидно, что все эти функции должны быть доступны, поэтому вы можете просто запустить его, как в независимом скрипте.

Смежные вопросы