Моя команда и я работаем с клиентом, у которого есть существующий сайт WordPress с достаточным количеством контента и собственной темой, которую они создали. Это групповой блог, то есть в нем есть несколько блоггеров по всему миру, которые постоянно добавляют и редактируют контент.
Наша задача — создать совершенно новую тему с множеством новых функций. Для некоторых из этих функций потребуются новые настраиваемые виджеты, плагины и поля базы данных.
В настоящее время мы работаем на наших собственных машинах для разработки и интегрируем их в единый сервер разработки. Весь код версии в SVN. Наш назначенный администратор базы данных прямо сейчас вручную объединяет любые изменения базы данных с базой данных разработчиков, хотя, надеюсь, он сможет автоматизировать это в ближайшее время.
Мы только начали говорить о нашем процессе выпуска продукции. Значение: как только мы закончим, как мы собираемся перенести весь наш пользовательский код на рабочий (рабочий) сервер плавно и с минимальными перерывами?
У нас есть несколько планов, но я хотел бы услышать, как другие тоже решили эту проблему. Существуют ли какие-либо передовые методы, которым следует следовать, или известные ловушки, которых следует избегать?
Если вы последуете совету SethMerrick, вы можете значительно сократить время переключения, снизив TTL для соответствующих записей DNS до 5 минут или около того за несколько часов (в зависимости от текущего значения TTL) перед сменой IP-адреса.
Делая это, вы указываете удаленным DNS-серверам кэшировать адрес только на 5 минут. Как только вы измените IP, вы можете увеличить TTL до того, что было раньше. Чтобы еще больше свести к минимуму эффект, выполняйте переключение в период низкого трафика.
Мы только начали это делать, по стечению обстоятельств. Это определенно помогает. Мы не можем позволить себе длительный период развертывания. Спасибо за добавление этого совета!
Обратите внимание, что вы должны изменить TTL задолго до фактического изменения IP. Другими словами, если TTL составляет одну неделю, вы должны изменить TTL на 5 минут за одну неделю до смены IP, чтобы при этом у всех был новый TTL.
В этом случае вы бы сделали старый сайт фактически доступным только для чтения, пока DNS находится в процессе перехода, чтобы предотвратить изменения на сайте, которые не будут перенесены?
Это альтернативный подход, позволяющий просто предотвратить добавление новых данных в базу данных старого сайта во время перехода. Однако подход, о котором я упоминал выше, оставляет старый сайт активным во время перехода, а затем вручную объединяет все дополнительные записи базы данных, появившиеся во время перехода (новые сообщения, комментарии и т. д.), в новый сайт. редактировать: просто хотел упомянуть, что предложение актера о TTL Records — фантастический совет.
Мы сделали что-то похожее на это. Не бесшовно, но, эй, это работает.
WP Migrate Webhosts звучит как очень нужный плагин. Спасибо, что поделились этим и за этот отзыв!
Да, я так думаю. Я надеюсь получить сотрудничество, чтобы я и другие могли развить его, чтобы он был очень полезным! Спасибо за голосование.
Я не уверен, применимо ли это, но я только что прошел аналогичный процесс одновременной миграции и обновления сайта с высокой посещаемостью.
Основная стратегия заключалась в том, чтобы работать на промежуточном сервере, затем, когда все было готово, сделать дамп mysql на рабочем сервере, импортировать его на промежуточный сервер, выполнить любую необходимую очистку, а затем указать записи DNS на промежуточный сервер, вызывая промежуточный сервер, который станет новым рабочим сервером.
Хитрость заключается в том, чтобы затем объединить все данные, которые накапливаются во время распространения DNS, с промежуточным сервером (который теперь является рабочим сервером). Другими словами, если между тем, когда вы делаете дамп/обновление DNS mysql, и завершением распространения DNS, проходит 30 часов, вам придется выборочно объединить 30 часов записей со старого сайта на новый.
Это не гладкий процесс, но к тому времени, когда у нас была неделя в пути, все перегибы сгладились сами собой.
@Mike Lee: Отличный вопрос и один из святых Граалей WordPress (или любой из основных CMS с открытым исходным кодом, с которыми я знаком, например, Drupal, Joomla и т. д.)
Хотя это, конечно, не предназначено для вашего варианта использования, ознакомьтесь с моим ответом на связанный вопрос, в котором описывается плагин бета-уровня, который я только что сделал доступным через WordPress Answers Exchange под названием WP Migrate Webhosts (да, я отстой, когда дело доходит до творческого именования.)
Но я также хочу решить вариант использования, который вы описываете, с помощью плагина, и в настоящее время я думаю о том, как это сделать. Я думаю, что способ подойти к этому — отказаться от общего решения и вместо этого обратиться к известным шаблонам, существующим в WordPress, а затем позволить кому-либо еще « подцепить » мой плагин для особых случаев использования. Я также думаю, что подход состоит в том, чтобы сериализовать данные и структуры в WordPress как данные в файле PHP, чтобы будущий плагин мог применять эти изменения как дельты, точно так же, как система управления исходным кодом применяет дельты, чтобы получить текущую версию исходного кода. код.
Поэтому, хотя я не отвечаю на вашу проблему или не решаю ее полностью, я надеюсь, что даю вам хорошую пищу для размышлений, а также надеюсь, что вы или кто-то еще захотите сотрудничать в окончательном решении.