Есть ли у вас какие-либо эффективные стратегии для запуска версии 2 сайта WP?
Моя команда и я работаем с клиентом, у которого есть существующий сайт WordPress с большим количеством контента и пользовательской темой, которую они создали. Это групповой блог, то есть в нем есть несколько блоггеров по всему миру, которые постоянно добавляют и редактируют контент.
Наша задача - создать совершенно новую тему с довольно большим количеством новых функций. Для некоторых из этих функций потребуются новые пользовательские виджеты, плагины и поля базы данных.
В настоящее время мы работаем над нашим собственные машины разработки и интеграция их в единый сервер разработки. Весь код версируется в SVN. Наш назначенный администратор базы данных вручную объединяет любые изменения базы данных в базу данных разработчиков прямо сейчас, хотя, надеюсь, он скоро сможет это автоматизировать.
Мы только начали говорить о нашем процессе выпуска продукции. Значение: как только мы закончим, как мы собираемся перенести весь наш пользовательский код на рабочий (живой) сервер плавно и с минимальными сбоями, как возможно?
У нас есть несколько планов на уме, но я хотел бы услышать, как другие тоже решали эту проблему. Существуют ли какие-либо рекомендации, которым следует следовать, или известные подводные камни, которых следует избегать?
3 answers
Если вы последуете совету Сетмеррика, вы можете значительно сократить время переключения, снизив TTL для соответствующих записей DNS до 5 минут или около того за несколько часов (в зависимости от текущего TTL), прежде чем менять IP-адрес.
Делая это, вы указываете удаленным DNS-серверам кэшировать адрес только в течение 5 минут. Как только вы измените IP-адрес, вы можете увеличить TTL до того, что было раньше. Чтобы еще больше минимизировать эффект, выполняйте переключение во время низкого трафика период.
Я не уверен, применимо ли это, но я только что прошел аналогичный процесс одновременной миграции и обновления сайта с высоким трафиком.
Основная стратегия заключалась в том, чтобы работать на промежуточном сервере, затем, когда все будет готово, выполнить дамп mysql на реальном сервере, импортировать его на промежуточный сервер, выполнить любую необходимую очистку, а затем указать записи DNS на промежуточный сервер, в результате чего промежуточный сервер станет новым живым сервером.
Сложность заключается в том, чтобы затем объединить все данные, которые накапливаются во время распространения DNS на промежуточный сервер (который теперь является действующим сервером). Другими словами, если между тем, как вы создадите дамп mysql/обновите DNS, и завершением распространения DNS пройдет 30 часов, вам придется выборочно объединить 30 часов записей со старого сайта на новый.
Это не простой процесс, но к тому времени, как мы прошли неделю по дороге, все перегибы сгладились сами собой.
@Майк Ли: Отличный вопрос и один из святых граалей WordPress (или любого из основных CMSES с открытым исходным кодом, с которыми я знаком, если на то пошло, таких как Drupal, Joomla и др.)
Хотя это, конечно, не предназначено для решения вашего варианта использования, ознакомьтесь с моим ответом на соответствующий вопрос , в котором описывается плагин бета-уровня, который я только что сделал доступным через обмен ответами WordPress под названием WP Migrate Webhosts (да, я отстой, когда дело доходит до креатива именование.)
Но я также хочу решить описанный вами вариант использования с помощью плагина и в настоящее время думаю о том, как это сделать. Я думаю, что подход к нему заключается в том, чтобы отказаться от его общего решения и вместо этого обратиться к известным шаблонам, существующим в WordPress, а затем позволить кому-либо другому "подключить" мой плагин для особых случаев использования. Я также думаю, что подход заключается в сериализации данных и структур в WordPress в виде данных в файле PHP, чтобы мог применяться будущий плагин эти изменения в виде дельт точно так же, как система управления исходным кодом, применяет дельты для получения текущей версии исходного кода.
Поэтому, хотя я не отвечаю и не решаю вашу проблему полностью, я надеюсь, что даю вам хорошую пищу для размышлений, а также надеюсь, что вы или кто-то другой, возможно, захотите сотрудничать в поиске окончательного решения.