Intereting Posts
W3 Total Cache Minify Rewrite Error with WordPress on nginx Сделать скрипт на странице Отключить ширину / высоту форматирования таблицы TinyMCE Добавление простой (одной кнопки) аудиоплеера с использованием пользовательских полей? Отключить аутентификацию администратора CP (или автоматический вход в систему) Как остановить отображение меню на статической домашней странице Тема не хочет загружать файлы локализации Перенаправление на первый ребенок в пользовательском типе сообщений (без шаблона) Лучший способ закончить запрос ajax для WordPress и почему? Интеграция Paypal Содержимое WordPress на не-WP-сайте, находящемся в удаленном домене, – как отображать сообщения? Action hook для новых ожидающих сообщений? Как обновить существующую таблицу при обновлении плагина? Может ли кто-нибудь объяснить, что такое wp_session_tokens, и для чего они используются? Пользовательский запрос, несколько пользовательских ключей

Как: Легко перемещать установку WordPress от разработки к производству?

Я делаю разработку на одной коробке и использую вторую для производства. Сейчас я просто удаляю базу данных, а затем нахожу замену для изменений URL; затем скопируйте файлы и импортируйте новый SQL.

Есть ли лучшие способы сделать это?

@ Insanity5902 : Развертывание сайта WordPress из одной коробки в другую было PITA с первого дня, когда я начал работать с WordPress. (По правде говоря, это была PITA с Drupal в течение 2 лет, прежде чем я начал с WordPress, поэтому проблема, конечно, не исключительно в WordPress.)

Меня беспокоило, что каждый раз, когда мне нужно было перемещать сайт, мне пришлось бы тратить так много дублирующихся усилий, и это мешало мне развертывать для тестирования так часто, как я бы предпочел. Итак, около 4-6 месяцев назад я начал работать над плагином для решения проблемы миграции веб-хостинга, и я упомянул о своих идеях на форуме WP Tavern .

Хорошо быстрая перемотка вперед к сегодняшнему дню, и я в значительной степени получил ее работу, и я просто называю ее « WP Migrate Webhosts ». Несмотря на то, что плагин по-прежнему очень бета-версии (возможно, даже альфа), учитывая ваш вопрос, я думаю, что я готов позволить людям начать стучать по нему.

Предполагаемый вариант использования:

  1. сначала разработчик обрабатывает загрузку всех измененных тем и файлов плагинов через FTP,
  2. затем загружает базу данных разработки MySQL на тестовый сервер целиком и, наконец,
  3. затем запускает плагин для переноса любых ссылок из предыдущего домена в новый. (Мой плагин не пытается решить слияние новых полей или таблиц базы данных с живыми данными, это гораздо более серьезная проблема, и я не уверен, как ее решить.)

Вы можете загрузить плагин с моего сайта и разархивировать его в свой каталог плагинов (если вы не знаете, как это сделать, то этот плагин не для вас, потому что для этого требуется кто-то, кто знает, что он делает). держите этот плагин онлайн, пока я не отпишу его на WordPress.org, после чего вы должны его искать.

Чтобы использовать его, вы придерживаетесь другого подхода в своем wp-config.php который нормализуется путем комментирования четырех (4): DB_NAME , DB_USER , DB_PASSWORD и DB_HOST и вместо этого регистрирует значения по умолчанию для веб-хостов, а затем регистрирует информацию о каждом самом веб-хосте. Вот как выглядит этот сегмент wp-config.php (обратите внимание, что первый раздел – это ненужный код, закомментированный, а также обратите внимание, что я установил файл моих хостов на моем локальном компьютере с .dev верхнего уровня .dev чтобы сделать день в-дневной разработке. На Mac VirtualHostX это дает легкий ветерок:

 // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ //define('DB_NAME', 'wp30'); /** MySQL database username */ //define('DB_USER', 'wp30_anon'); /** MySQL database password */ //define('DB_PASSWORD', '12345'); /** MySQL hostname */ //define('DB_HOST', '127.0.0.1:3306'); require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php'); register_webhost_defaults(array( 'database' => 'example_db', 'user' => 'example_user', 'password' => '12345', 'host' => 'localhost', 'sitepath' => '', // '' if WordPress is installed in the root )); register_webhost('dev',array( 'name' => 'Example Local Development', 'host' => '127.0.0.1:3306', 'domain' => 'example.dev', 'rootdir' => '/Users/mikeschinkel/Sites/example/trunk', )); register_webhost('test',array( 'name' => 'Example Test Server', 'rootdir' => '/home/example/public_html/test', 'domain' => 'test.example.com', )); register_webhost('stage',array( 'name' => 'Example Staging Server', 'rootdir' => '/home/example/public_html/stage', 'domain' => 'stage.example.com', )); register_webhost('live',array( 'name' => 'Example Live Site', 'rootdir' => '/home/example/public_html/', 'password' => '%asd59kar12*fr', 'domain' => 'www.example.com', )); require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php'); 

Надеюсь, это (в основном) объяснение. Я попытался сделать код таким же чистым, как я мог, но, к сожалению, он требует этих двух критических строк require_once() до и после блока регистрационного кода веб-хостинга, поскольку мне не удалось « запереть » WordPress до того, как wp-config.php будет называется.

Как только вы обновили свой wp-config.php вы можете просто использовать URL-адрес wp-migrate-webhosts для перехода на экран администратора так:

http://example.com/wp-migrate-webhosts

Вышесказанное приведет вас к экрану администратора, например следующему, который имеет справедливый бит текста описания и позволяет вам перенести из любого из других доменов веб-хостинга одним щелчком мыши после выбора доменов для переноса из ( ПРИМЕЧАНИЕ . В этом примере показано, что происходит DOWN от тестовых / сценарных / живых серверов до локального развития, но будьте уверены, что он может мигрировать в любой домен, где он находится. Это также означает, что плагин будет отлично подходит для использования существующего сайта и быстрого создания локальной среды разработки! ):

введите описание изображения здесь

Если не ясно, что « миграция » в этом контексте означает обновление всех ссылок в текущей базе данных, подходящих для текущего веб-хостинга (и « текущий » $_SERVER['SERVER_NAME'] .

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

Возможно, вы также обнаружите, что мои миграции терпят неудачу в крайних случаях, которые я не тестировал, и, может быть, вы можете помочь мне улучшить плагин? Любой, кто хочет, может отправить мне электронное письмо через мою учетную запись gmail (мой псевдоним – «mikeschinkel»).

Кроме того, плагин был разработан, чтобы принимать метаданные веб- host , определяемые пользователем, в дополнение к тем, которые он распознает как database , user , password , host , domain и т. Д. Прекрасным примером может быть googlemaps_apikey где вы можете хранить различные ключи API для каждого домена что ваш плагин Google Map должен работать правильно (кто из вас, кто использовал плагин Google Maps, не развернул приложение на реальном сервере и забыл изменить код на правильный ключ API? Да ладно, честно … 🙂 С помощью этого плагина, элемента googlemaps_apikey в вашем массиве register_webhost () и небольшого пользовательского migrate_webhosts вы можете эффективно устранить это как проблему!

Ну вот и все. Я запускаю этот плагин здесь на Exchange WordPress Exchange, потому что вопрос @ Insanity5902 вызвал его. Дайте мне знать, если это полезно, здесь, если это необходимо, или по электронной почте, если нет.

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

PPS Каковы мои цели? Мне очень нравится видеть, как эта миграция переходит в ядро ​​WordPress, так что каждый будет иметь доступ к ней. Но до этого можно даже подумать, что многие люди должны быть заинтересованы в использовании его, чтобы гарантировать, что он фактически решает больше проблем, чем это потенциально может создать. Поэтому, если вам нравится идея, то, во что бы то ни стало, используйте ее и помогаете мне набирать обороты вместе с ней для возможного включения в ядро ​​WordPress.

Когда это возможно, я устанавливаю WP_HOME и WP_SITEURL в wp-config.php . Это, в сочетании с дампом базы данных и импортом, является самым простым из всех решений, с которыми я знаком.

http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php

Мой любимый хак; добавьте настройку на ваш /etc/hosts чтобы производственный домен указывал на вашу область разработки, как раз на вашей машине. Для развертывания в производство вы rsync все файлы и нажмите на базу данных.

Риски этой стратегии ясны; вы можете путать среду разработки с вашей производственной средой.

Тем не менее, это все еще легко.

Я хотел что-то подобное, когда несколько месяцев назад я перешел на WP, поэтому написал довольно простой сценарий оболочки, который использует rsync и mysqldump поверх ssh:

http://snarfed.org/sync_wordpress

Это не сложный или веб-сайт, но я доволен этим.

WP Engine – это новая услуга, предлагающая «One-Click Staging»:

WPEngine имеет эксклюзивную функцию, называемую «постановка». Вот как это работает: Прежде чем совершить страшные изменения в своем блоге, нажмите кнопку «моментальный снимок». Мы делаем полную копию вашего блога и настраиваем его в отдельной безопасной зоне. Вы можете играть с чем угодно; ничто не живет. Только когда вы будете готовы сделать это вживую, вы касаетесь своего основного сайта.

Похоже, очень простой способ быстро перейти от разработки к производству, особенно с уже живым сайтом.

Duplicator Plugin: Вот плагин, над которым я работал. В настоящее время он находится в стадии бета-тестирования, но он выполняет работу для большинства сайтов. Сейчас он нацелен на более мелкие установки WordPress. http://wordpress.org/extend/plugins/duplicator/

Ресурсы: дополнительные ресурсы для плагина можно найти здесь: http://lifeinthegrid.com/duplicator/

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

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

Я лично обращаюсь к этому вопросу с моим проектом в Github, который называется Autopress . У меня пока нет идеального решения, но я становлюсь ближе, особенно с плагином wpstage от людей wpengine.

Это выглядит многообещающе. Мы работаем над некоторыми сценариями для обработки некоторых данных, например, wp-параметров, изменения путей в db, копирования на носители.

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

Кроме того, теперь, когда похоже, что параметры меню хранятся в БД, мне еще больше нужно иметь дело.

Я проверяю весь свой код на SVN и разворачиваю код через FTP с сервера (Beanstalk). Это не вносит изменения в БД для меня или активирует новые плагины.

Мой план прямо сейчас состоит в том, чтобы создать файл манифеста, пока я разрабатываю, чтобы делать все мои изменения на реальном сайте.

Например, файл имел бы читаемые человеком строки

Он будет включать в себя плагины для активации, wp-опции для перемещения, изображения для перемещения, перемещения страниц. Затем мой плагин обнаружит файл манифеста и внесут все изменения на промежуточный сайт.

Как только я проверил это и был уверен, что у меня есть все, я могу быть уверен, что он будет работать на производстве.

Этот плагин по-прежнему остается лишь идеей, но для меня есть код.

Кроме того, если вы хотите внести изменения только в URL-адрес в вашем БД, вы можете использовать следующий SQL.

просто замените $old$ старым доменом и $new$ новым

 update wp_postmeta set meta_value = replace(meta_value, '$old$' , '$new$') ; update wp_posts set post_content = replace(post_content, '$old$' , '$new$') ; update wp_options set option_value = replace(option_value, '$old$' , '$new$') ; 

Два проекта Google Summer of Code, которые имеют аналогичную цель:

  • Автоматическая миграция (GSoC 2010)
  • WordPress Move ( предложение ) (GSoC 2011)

Я использую команду экспорта subversion для установки файлов WordPress (http://core.svn.wordpress.org/tags//), а также всех плагинов в репозитории (http://plugins.svn.wordpress.org//tags //), то просто застегните тему и пользовательские плагины и установите их в обычном режиме. После того, как все это работает без содержимого, я экспортирую тестовую базу данных и выполняю поиск / замену URL-адреса и пути к файлу (хранящегося для носителя) и импортируя в пустую базу данных, а затем просто переключаю информацию о базе данных в wp-config .php. Обычно мне приходится около 10 – 20 минут.

Обычно я вхожу в phpMyadmin, загружая базу данных и редактируя содержимое wp_options> siteurl и wp_options> дома с ожидаемым доменом. Если вам необходимо обновить URL-адреса в своем сообщении и содержании страниц, вы можете выполнить поиск / замену URL-адреса и пути медиа / загрузки в файле .SQL до его загрузки. Это быстрая работа.

Хотя здесь нет недостатка в хороших решениях, в духе совместного использования я думал, что добавлю свой сценарий развертывания bash в кучу: https://github.com/jplew/SyncDB

SyncDB – это сценарий развертывания bash, предназначенный для устранения усталости от синхронизации локальных и удаленных версий сайта WordPress. Это позволяет разработчикам, работающим в локальной среде (например, MAMP) быстро «нажимать» или «вытягивать» изменения на или с их производственного сервера с помощью одной команды терминала.

Этот скрипт хорошо работает с WP-Skeleton Марка Джакита и использует mysqldump , git и rsync для синхронизации всей вашей базы данных сайта, кода и медиа-файлов в два простых шага:

 ./syncdb git push hub master 

Я использую http://wordpress.org/plugins/wp-clone-by-wp-academy/ . Он работает красиво!

Всего 3 шага:

  1. Установите плагин на обоих сайтах.
  2. Используйте плагин для создания резервной копии на старом сайте.
  3. Возьмите резервный URL-адрес, который он дает вам, и подключите его к странице плагина на новом сайте, нажмите «go», и ваша миграция завершена всего за несколько секунд!

Он автоматически настраивает все URL-адреса – в том числе сериализованные замены строк – поэтому нет риска потерять конфигурации виджетов и т. Д.

Единственные проблемы, с которыми я столкнулся, – это некоторые сайты с более крупными базами данных (~ 300 МБ), которые вызвали тайм-ауты выполнения PHP-скриптов во время импорта резервной копии сайта.

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

WP Migrate DB Pro / WP Sync DB

https://wordpress.org/plugins/wp-migrate-db/

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

  • Экспортирует вашу базу данных как дамп данных MySQL (так же, как phpMyAdmin)
  • Поиск и замена URL-адресов и путей к файлам
  • Обработка сериализованных данных
  • Позволяет сохранить его на компьютере в виде файла SQL

Я поклонник того, что мне платят за работу, которую я делаю, поэтому я рекомендую вам поддержать г-на Брэда Туеснара и купить копию лицензии на реальную вещь. WP Sync DB является репликацией, и в результате она всегда находится в поддержке. С помощью этого плагина процесс прост:

  1. Установите / активируйте плагин на локальном хосте и производственной среде
  2. Настройте перенос push с вашего сервера localhost / development на свою продукцию
  3. Заполните правила для передачи таблиц и определите правила поиска и замены для выполнения
  4. Это оно!

Поиск и замена баз данных для баз WordPress с помощью InterconnectIT

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Этот бесплатный инструмент не является плагином, но установлен в корневом каталоге вашей производственной установки WordPress. Это не так хорошо, как WP Migrate DB Pro, потому что для этого требуется несколько ручных шагов, но, тем не менее, это отличный вариант, который последовательно работает. При использовании этого подхода процесс выглядит следующим образом:

  1. Резервное копирование вашей локальной базы данных, это абсолютно необходимо, так как мы будем повторно импортировать его в ближайшее время
  2. Добавьте скрипт в папку в корневом каталоге установки.
  3. Запуск поиска и замены в базе данных
  4. Экспортируйте свою базу данных и сохраните ее для своей производственной среды.
  5. Повторно импортируйте свою резервную копию с шага # 1, чтобы восстановить свой локальный хост
  6. Подключайтесь к своей производственной базе данных и создавайте резервную копию (как всегда, прежде чем делать это)
  7. Импортируйте экспорт, который мы создали ПОСЛЕ запуска подпрограммы поиска / замены с шага №4

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

поскольку я запускаю свои сайты в IIS (я также запускаю asp.net, поэтому мне нужны окна). Я использую WebPI от Msft для установки нового экземпляра, затем копирую шаблон и использую импорт / экспорт для передачи данных.

Это не идеально, но все это занимает меньше часа.

Очевидно, было бы неплохо иметь решение с одним щелчком мыши, но это то, что я считаю самым легким для меня.

Еще одно платежное решение: Xtreme One theme framework выпустила версию 1.2 с Xtreme Backup, которая позволяет вам «экспортировать или импортировать настройки ваших Childthemes, Layouts или Widgets со всеми их настройками / контентом в виде XML-файла».

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

http://code.google.com/p/deploymint/

Возможно, это было не так, когда вы задавали вопрос, но я пользуюсь услугой Blogvault в течение пары месяцев, и это было сделано безупречно. Я, вероятно, совершил более 50 миграций (перекрестные домены, поддомены и веб-хосты), а не заминки и совсем немного времени.

Это платная услуга (за домен / месяц), но не так много.

RAMP – это новый плагин для развертывания контента от Crowd Favorite, и он выглядит очень гладко. Это 250 долларов, хотя я еще не пробовал. Мог бы просто заплатить за себя в течение времени, хотя я так и думал.

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

Сейчас я использую плагин backupbuddy. Он позволяет делать резервную копию базы данных и всех файлов, загружать ее в виде zip или отправлять ее прямо на другой сервер через FTP. Он также находит и заменяет URL-адрес для вас. Обычно мне требуется около 5 минут, чтобы пройти весь процесс. И поскольку все файлы заархивированы, процесс загрузки / загрузки выполняется намного быстрее. И нет, я не работаю для них, но этот плагин действительно упростил весь этот процесс.

Другим полезным инструментом для обработки миграций серверов для сайтов является WordPress CLI, в этой статье есть хороший обзор того, что он может сделать, но в частности раздел «Поиск и замена» полезен для поиска всех ссылок на старый URL-адрес :

Расширенное управление WordPress с WP-CLI

Если вы пытаетесь добиться непрерывной синхронизации, я предлагаю использовать rsync вместе с пользовательским заданием cron для перезаписи любых данных URL или сайта.

Позвольте мне отдать один из моих фаворитов 🙂

 // proven local<->live codefork (covers local network testing, ie from mobile devices): $GLOBALS['is_local'] = in_array( $_SERVER['REMOTE_ADDR'], array("127.0.0.1","::1")) || // simple localhost (IPv4 IPv6) $_SERVER['HTTP_HOST'] == 'local.workblog' || // call by local name (adjust) substr($_SERVER["REMOTE_ADDR"],0,8) == '192.168.'; // (mobile) device in local network $table_prefix = NULL; // ensure scope if ( $GLOBALS['is_local'] ) // LOCAL fork ------------------------ { .... } else // STAGE/LIVE fork ------------------- { 

… и тогда вы прокладываете себе путь оттуда. DB_NAME, DB_USER … table_prefix. Лично я включаю ALTERNATE_WP_CRON на локальном (чтобы избежать некоторых раздражающих предупреждений ), WP_DEBUG из обоих (если вы не разработчик) или только в режиме реального времени (если есть), другой ini_set('display_errors', '0'); для живого также может быть полезно, наконец, как указано выше: WP_HOME и WP_SITEURL для соответствующего локального / фактического URL.

Это почти все, ничего не осталось выше классического WordPress «Вот и все, перестань редактировать!» линия…

192.168. часть позволяет вам провести локальное тестирование (например, с пэдов или телефонов) в локальной сети)

$ GLOBALS ['is_local'] может пригодиться и в разработке вашей темы, для некоторого дополнительного вывода отладки и т. Д. …

После некоторого времени после этого ответа я создал свой собственный небольшой плагин – Pitta Migration . Причинами являются:

  1. Из всех рассмотренных здесь идей – проще WP_HOME WP_SITEURL параметры WP_HOME и WP_SITEURL
  2. Затем я использую их для установки двух совпадающих URL-адресов wp_options которые охватывают, когда плагины / темы игнорируют эти
  3. Это дает мне 100% уверенность в том, что меняется в моей базе данных
  4. Это также работает кросс-платформенный (все эти сценарии bash не очень хорошо воспроизводятся в Windows)
  5. Легко понять, что делает плагин
  6. Не существует конфигурации за пределами двух констант – выполните mysqldump и mysql-импорт в вашу локальную базу данных, и плагин увидит, что константа и таблица отличаются и обновляют их, чтобы они соответствовали
  7. Нет текстового поиска и замены
  8. Нет возможности издеваться над вашей базой данных – я использую объект базы данных WordPress для выполнения двух обновлений и ничего более
  9. Он отлично работает с такими вещами, как WordPress Skeleton, где вы можете иметь все в исходном управлении и настраивать локальную конфигурацию
  10. Я поместил его в каталог плагинов WordPress и на Github, чтобы он был бесплатным, полностью открытым, легким для вас вилкой и простым в установке
  11. Как только он будет установлен, вы можете забыть об этом, и он должен «просто работать» – он дает вам небольшое уведомление о том, что база данных была изменена
  12. Он должен работать с любым процессом резервного копирования / FTP / восстановления

На мой взгляд, самый простой способ, которым я следую, – это передача вручную. Просто скопируйте папку wp-content и файл wp-config.php на новый хост. Экспортируйте базу данных со старого хоста и импортируйте ее в новую базу данных нового хоста.

В новой базе данных хоста перейдите в таблицу wp-option и измените URL-адрес сайта и URL-адрес блога на новый адрес хоста со старого хоста. как из http: // localhost / wp на http://example.com

Теперь в файле wp-config просто измените информацию о базе данных и пользователе с новой информацией о хосте.

Теперь войдите в новый wp-admin и перейдите к настройкам и сохраните постоянную ссылку.

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

Я пробовал разные плагины, и у всех из них есть много проблем.

Поэтому я предпочитаю этот простой перенос вручную, который, я думаю, проще.