Как обновить Wordpress и плагины при развертывании с использованием Capistrano? - PullRequest
7 голосов
/ 24 февраля 2012

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

Основы:

  • У меня есть локальный проект WordPress Multisite, для которого я использую GIT и Capistrano для развертывания на удаленных промежуточных и производственных серверах.в wp-контенте) находятся под контролем версий.Да, ядро ​​WordPress, темы, плагины и т. Д. Обновляются локально, фиксируются, отправляются и развертываются.Это означает, что я должен сначала войти в систему и активировать плагины - они просто устанавливаются через Capistrano deploy
  • Базы данных по разработке, подготовке и производству отличаются, и я не беспокоюсь о попытке синхронизировать их

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

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

Мои вопросы:

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

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

Мэтт

1 Ответ

4 голосов
/ 03 мая 2012

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

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

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

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

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 в плагине, и это должно привести к тому, что все будет происходить внутри приложения. Важно то, что очевидно, что все эти функции должны быть доступны, поэтому вы не можете просто запустить их как в независимом скрипте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...