ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Извлечение подузла из многоузловой сети с помощью WP-CLI и Bash

Извлечение подсайтов на WordPress из мноузловой сети может быть трудной задачей, если вы не знакомы с мультисайтовой структурой. Это руководство проведет вас через шаг за шагом, чтобы извлечь подузел из многоузловой сети с помощью WP-CLI и Bash.

Извлечение подузла из многоузловой сети с помощью 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

Извлечение содержимого мультисайта на WordPress

Нам нужно сжать эти папки и извлечь их на новом сайте

Сожмите плагины из корневой папки вашего подузла на 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.

База данные SQL имеет также сжатую версию

Эти данные будут извлечены в одном месте в следующем разделе.

Восстановление и преобразованние поддомена в одиночный сайт

Нам необходимо выполнить следующие задачи, чтобы сделать преобразованный многоузловой подузел в одночный сайт

Импорт базы данных SQL из субсайтна на новый сайт

Введите одиночный сайт 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.

Извлечение wp-content

Распакуйте 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

 

Вот и все!

Извлечение подузла из многоузловой сети с помощью WP-CLI и Bash

Exit mobile version