Извлечение подсайтов на WordPress из мноузловой сети может быть трудной задачей, если вы не знакомы с мультисайтовой структурой. Это руководство проведет вас через шаг за шагом, чтобы извлечь подузел из многоузловой сети с помощью WP-CLI и Bash.
Допустим andreyex.ru является многоузловым доменом.
Я хочу извлечь поддомен guides.andreyex.ru
mkdir /tmp/andreyex.ru/
mkdir /tmp/andreyex.ru/guides.andreyex.ru
Существуют основные папки для многоузлового и дочернего домена.
Введите корневую папку мультисайта, как правило, она находится по тому же пути, не забудьте изменить на свой многоузловой путь (andreyex.ru)
cd /var/www/andreyex.ru
Перед тем как получить список всех подсайтов, посмотрите основную структуру папок
Информация | Значение 1-го субдомена | Значение n-го субдомена |
---|---|---|
blog_id | 1 | n |
Префикс базы данных | wpb_ | wpb_n_ |
Папка плагинов | wp-content/plugins | wp-content/plugins |
Папка темы | wp-content/themes | wp-content/themes |
Папка загрузок | wp-content/uploads | wp-content/uploads/sites/n/ |
Получить список всех подсайтов с помощью WP-CLI
wp site list
Вы получите отформатированный вывод, имеющий решающее значение для правильного извлечения подузла WordPress.
Есть blog_id с значением 2, где префикс базы данных состоит из значения url и дочернего подузла guides.andreyex.ru
+---------+------------------------------------------+---------------------+---------------------+
| blog_id | url | last_updated | registered |
+---------+------------------------------------------+---------------------+---------------------+
| 1 | http://andreyex.ru/ | 2017-03-04 16:09:14 | 2017-02-21 05:15:14 |
| 2 | http://guides.andreyex.ru/ | 2017-03-11 21:30:15 | 2017-02-21 05:15:16 |
| 3 | http://security.andreyex.ru/ | 2017-03-11 21:30:48 | 2017-02-21 05:15:18 |
+---------+------------------------------------------+---------------------+---------------------+
WP-CLI позволяет экспортировать таблицы базы данных специфичные для каждого дочернего подузла, имитируя, что запрос пришел из дочернего URL.
wp db export --tables=$(wp db tables --url=guides.andreyex.ru --format=csv --skip-plugins --skip-themes --allow-root) /tmp/subsite.sql --allow-root
Получить префикс базы данных WordPress из wp-config.php с помощью grep
grep "table_prefix" wp-config.php
wpb_ — это префикс базы данных
$table_prefix = 'wpb_';
Приставка базы данных подсайта состоит из мультисайтового префикса wpb_ и blog_id (идентификатора дочернего сайта) равного двум для дочернего сайта guides.andreyex.ru.
Если ваш blog_id является первым, то вы должны пропустить этот шаг!
sed "s#wpb_2_:#wbp_#g" /tmp/subsite.sql > /tmp/andreyex.ru/guides.andreyex.ru/database.sql
При копировании базы данных — независимо от вашего blog_id
в удаленном месте вы можете использовать gzip.
gzip /tmp/andreyex.ru/guides.andreyex.ru/database.sql -c > /tmp/andreyex.ru/guides.andreyex.ru/database.sql.gz
Нам нужно сжать эти папки и извлечь их на новом сайте
Сожмите плагины из корневой папки вашего подузла на andreyex.ru
tar -czf /tmp/andreyex.ru/guides.andreyex.ru/plugins.tar.gz -C /var/www/andreyex.ru/wp-content/plugins/ .
Кроме того, сожмите папки theme из корневой папки подузла andreyex.ru
tar -czf /tmp/andreyex.ru/guides.andreyex.ru/themes.tar.gz -C /var/www/andreyex.ru/wp-content/themes/ .
Если ваш blog_id
является 1 то вы должны пропустить эту команду
Загрузка папки wp-content является специфичной для дочернего узла с использованием 2
в качестве blog_id
(идентификатор дочернего сайта) в подпапке 2 в папке uploads/sites
tar -czf /tmp/andreyex.ru/guides.andreyex.ru/uploads.tar.gz -C /var/www/andreyex.ru/wp-content/uploads/sites/2/ .
Если ваш blog_id
под номером 1,
то вы должны использовать эту команду, так как blog_id с номером один, это специальный и имеет свою папку загрузки в корне
Исключим вложенную папку с помощью -с uploads, и создадим архив tar для всего дочернего блога.
tar -czf /tmp/andreyex.ru/andreyex.ru/uploads.tar.gz -C /var/www/andreyex.ru/wp-content/uploads/ . --exclude=sites
Теперь у вас есть 3 архивных файла, содержащих необходимые компоненты для вашего сайта на WordPress.
/tmp/andreyex.ru/guides.andreyex.ru/plugins.tar.gz
/tmp/andreyex.ru/guides.andreyex.ru/themes.tar.gz
/tmp/andreyex.ru/guides.andreyex.ru/uploads.tar.gz
База данные SQL имеет также сжатую версию
/tmp/andreyex.ru/guides.andreyex.ru/database.sql
/tmp/andreyex.ru/guides.andreyex.ru/database.sql.gz
Эти данные будут извлечены в одном месте в следующем разделе.
Нам необходимо выполнить следующие задачи, чтобы сделать преобразованный многоузловой подузел в одночный сайт
Введите одиночный сайт WordPress, здесь в данном случае guides.andreyex.ru но если вы сделали новое доменное имя, просто замените на это значение.
cd /var/www/guides.andreyex.ru
Импорт базы данных MySQL
wp db import /tmp/andreyex.ru/guides.andreyex.ru/database.sql
Если вы хотите использовать другое доменное имя или субдомен, то сделайте поиск и замените с помощью WP-CLI.
Если вы используете субдомен, то вы можете пропустить эти следующие два шага.
Используйте guides.andreyex.ru в качестве исходной строки, чтобы найти для замены на andreyex-guides.ru
wp search-replace "//guides.andreyex.ru" "//andreyex-guides.ru" --dry-run --allow-root
Будет выполняться фактическая замена
wp search-replace "//guides.andreyex.ru" "//andreyex-guides.ru" --allow-root
Независимо от вашего выбора поддомена вы должны выполнить команду search-replace
для старого и нового домена.
Вы должны заменить многоузловой путь andreyex.ru
на новый путь сайта andreyex-guides.ru
.
Флаг —dry-run только показывает, какие замены будут сделаны.
wp search-replace /var/www/andreyex.ru /var/www/andreyex-guides.ru --dry-run --allow-root
Пожалуйста, замените многоузловой путь andreyex.ru
на новый путь сайта andreyex-guides.ru
.
Вы можете сделать фактический поиск и замену, опуская флаг —dry-run
wp search-replace /var/www/andreyex.ru /var/www/andreyex-guides.ru --allow-root
Если у вас возникли дополнительные проблемы, вы можете прочитать руководство по расширенному поиску и замены в базе данных WordPress.
Распакуйте themes.tar.gz на свой сайт
tar -xf /tmp/andreyex.ru/guides.andreyex.ru/themes.tar.gz -C /var/www/guides.andreyex.ru/wp-content/themes/
Затем извлеките plugins.tar.gz на свой сайт
tar -xf /tmp/andreyex.ru/guides.andreyex.ru/plugins.tar.gz -C /var/www/guides.andreyex.ru/wp-content/plugins/
И, наконец, извлеките uploads.tar.gz на свой новый одиночный сайт.
tar -xf /tmp/andreyex.ru/guides.andreyex.ru/uploads.tar.gz -C /var/www/guides.andreyex.ru/wp-content/uploads/
Изменить разрешения на www-data владельца user и group.
Не забудьте изменить путь установки своего нового сайта guides.andreyex.ru
sudo chown -R www-data:www-data /var/www/guides.andreyex.ru
sudo find /var/www/guides.andreyex.ru -type f -exec chmod 644 {} +
sudo find /var/www/guides.andreyex.ru -type d -exec chmod 755 {} +
Вы можете удалить эти таблицы с помощью Adminer или PhpMyAdmin
wp_blogs
wp_signups
wp_site
wp_sitemeta
wp_sitecategories
wp_registration_log
wp_blog_versions
Вот и все!