Есть ли у вас какие-либо эффективные стратегии для запуска версии 2 сайта WP?


Моя команда и я работаем с клиентом, у которого есть существующий сайт WordPress с большим количеством контента и пользовательской темой, которую они создали. Это групповой блог, то есть в нем есть несколько блоггеров по всему миру, которые постоянно добавляют и редактируют контент.

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

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

Мы только начали говорить о нашем процессе выпуска продукции. Значение: как только мы закончим, как мы собираемся перенести весь наш пользовательский код на рабочий (живой) сервер плавно и с минимальными сбоями, как возможно?

У нас есть несколько планов на уме, но я хотел бы услышать, как другие тоже решали эту проблему. Существуют ли какие-либо рекомендации, которым следует следовать, или известные подводные камни, которых следует избегать?

 12
Author: cjbj, 2010-08-12

3 answers

Если вы последуете совету Сетмеррика, вы можете значительно сократить время переключения, снизив TTL для соответствующих записей DNS до 5 минут или около того за несколько часов (в зависимости от текущего TTL), прежде чем менять IP-адрес.

Делая это, вы указываете удаленным DNS-серверам кэшировать адрес только в течение 5 минут. Как только вы измените IP-адрес, вы можете увеличить TTL до того, что было раньше. Чтобы еще больше минимизировать эффект, выполняйте переключение во время низкого трафика период.

 4
Author: Aaron Terry, 2010-08-12 04:18:59

Я не уверен, применимо ли это, но я только что прошел аналогичный процесс одновременной миграции и обновления сайта с высоким трафиком.

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

Сложность заключается в том, чтобы затем объединить все данные, которые накапливаются во время распространения DNS на промежуточный сервер (который теперь является действующим сервером). Другими словами, если между тем, как вы создадите дамп mysql/обновите DNS, и завершением распространения DNS пройдет 30 часов, вам придется выборочно объединить 30 часов записей со старого сайта на новый.

Это не простой процесс, но к тому времени, как мы прошли неделю по дороге, все перегибы сгладились сами собой.

 2
Author: SethMerrick, 2010-08-12 02:40:43

@Майк Ли: Отличный вопрос и один из святых граалей WordPress (или любого из основных CMSES с открытым исходным кодом, с которыми я знаком, если на то пошло, таких как Drupal, Joomla и др.)

Хотя это, конечно, не предназначено для решения вашего варианта использования, ознакомьтесь с моим ответом на соответствующий вопрос , в котором описывается плагин бета-уровня, который я только что сделал доступным через обмен ответами WordPress под названием WP Migrate Webhosts (да, я отстой, когда дело доходит до креатива именование.)

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

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

 2
Author: MikeSchinkel, 2017-04-13 12:37:38