@ Insanity5902 : Развертывание сайта WordPress из одного ящика в другое было PITA с самого первого дня, когда я начал работать с WordPress. (По правде говоря, это была PITA с Drupal в течение 2 лет, прежде чем я начал работать с WordPress, поэтому проблема, конечно, не только в WordPress.)
Меня беспокоило, что каждый раз, когда мне нужно было переместить сайт, мне приходилось тратить так много раз дублированных усилий, и это мешало мне развертывать тестирование так часто, как я бы этого хотел. Так, около 4-6 месяцев назад я начал работать над плагином для решения проблемы миграции веб-хостинга, и я упомянул свои идеи на форуме WP Tavern .
Ну что ж, перенесемся на сегодняшний день, и у меня все получилось, и я удобно называть его « WP Migrate Webhosts ». Несмотря на то, что плагин все еще очень бета (возможно, даже альфа), учитывая ваш вопрос, я думаю, что я готов позволить людям начать бить по нему.
Предполагаемый вариант использования:
- сначала разработчик обрабатывает загрузку всех измененных тем и файлов плагинов через FTP,
- затем полностью загружает базу данных разработки MySQL на тестовый сервер и, наконец,
- затем запускает плагин для переноса любых ссылок из предыдущего домена в новый. (Мой плагин никак не пытаться решить слияние новых полей базы данных или таблицы с реальными данными, ЧТО это гораздо большая проблема , что я не знаю , как решить.)
Вы можете скачать плагин с моего веб-сайта и разархивировать его в каталог плагинов (если вы не знаете, как это сделать, тогда этот плагин не для вас, потому что для этого нужен кто-то, кто знает, что они делают.) Я буду держите этот плагин в сети, пока я не опубликую его на WordPress.org, после чего вы должны искать его там.
Для того, чтобы использовать его , вы берете другой подход в вашей , wp-config.php
что нормальный закомментировав четыре (4) определяет DB_NAME
, DB_USER
, DB_PASSWORD
и DB_HOST
и вместо регистрации по умолчанию для хостингов , а затем регистрировать информацию о каждом из самого хостинга. Вот как wp-config.php
может выглядеть этот сегмент (обратите внимание, что в первом разделе приведен закомментированный ненужный код, а также обратите внимание, что я настроил файл hosts на локальном компьютере с .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
действие, которое будет передаваться веб-хосту « from » и веб-хосту « to » каждый в виде массива метаданных, и вам будет разрешено выполнить все, что вам нужно сделать в базе данных, используя SQL или любые применимые функции WordPress API для выполнения миграции. Да, любой из нас мог бы сделать это без плагина, но без плагина я обнаружил, что написание всего необходимого кода было больше усилий, чем оно того стоило. С плагином проще написать эти крошечные зацепки и покончить с этим.
Вы также можете обнаружить, что мои миграции потерпели неудачу в крайних случаях, которые я не тестировал, и, возможно, вы можете помочь мне улучшить плагин? Любой, кто захочет, может написать мне по электронной почте через мой аккаунт Gmail (мой псевдоним «mikeschinkel»).
Кроме того , плагин был разработан , чтобы принять пользователем определения метаданных веб - хостов в дополнение к тем, что он признает , как database
, user
, password
, host
, и domain
т.д. Прекрасный пример может быть , googlemaps_apikey
где вы можете хранить различные ключи API для каждого домена , которому требуется плагин вашего Google Map в работать правильно (кто из вас, кто использовал плагин Google Maps, не развернул приложение на реальном сервере и забыл изменить код на правильный ключ API? Да ладно, честно ... :) С этим плагином, googlemaps_apikey
элемент в вашем register_webhost () массив и небольшой пользовательский migrate_webhosts
крючок можно эффективно устранить , что как проблема!
Ну вот и все. Я запускаю этот плагин здесь, на бирже ответов WordPress, потому что вопрос @ Insanity5902 вызвал его. Дайте мне знать, если это полезно, здесь, если необходимо, или по электронной почте, если нет.
PS Если вы решили использовать это, помните, что это альфа / бета, и это означает, что он изменится, поэтому будьте готовы к небольшим операциям, если вы хотите использовать его сейчас, а затем используйте выпущенную версию, как только она будет побита многими руками.
PPS Каковы мои цели с этим? Мне нравится видеть, как это переносится в ядро WordPress, чтобы у всех был к нему доступ. Но прежде чем это можно будет даже рассмотреть, многие люди должны быть заинтересованы в его использовании, чтобы убедиться, что он действительно решает больше проблем, чем он может создать. Так что, если вам понравилась идея, во что бы то ни стало, используйте ее и помогите мне набрать обороты для возможного включения в ядро WordPress.