Как избежать проблем при миграции WordPress на новый сервер

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

Подготовка к миграции WordPress: что нужно знать заранее

Перед переносом сайта важно проверить несколько ключевых моментов. Во-первых, убедитесь, что на новом сервере установлена совместимая версия PHP и MySQL, соответствующая требованиям вашей версии WordPress и плагинов. Во-вторых, проверьте наличие необходимых расширений PHP (например, mbstring, curl, zip), так как их отсутствие может привести к ошибкам при работе сайта.

Также стоит заранее определить, как вы будете переносить файлы и базу данных. Для файлов сайта обычно используют SFTP или SSH-ключи, а для базы данных — экспорт через phpMyAdmin или команду mysqldump. Однако, есть более удобные способы с помощью плагинов.

Использование плагинов для миграции WordPress

Самый простой и надёжный способ переноса — использование специализированных плагинов. Рассмотрим два популярных решения:

1. All-in-One WP Migration

Этот плагин позволяет экспортировать весь сайт, включая базу данных, медиафайлы, плагины и темы, в один файл, который затем импортируется на новом сервере. Плюсы — простота и минимальные настройки, минусы — ограничение размера файла в бесплатной версии.

Пример использования:

1. Установите и активируйте плагин на старом сайте.
2. Перейдите в раздел «Экспорт» и сохраните файл экспорта.
3. На новом сервере установите WordPress, затем плагин и импортируйте файл.
4. Проверьте работоспособность сайта и обновите постоянные ссылки.

2. Duplicator

Duplicator создаёт архив сайта и пакет установки, который можно загрузить на новый сервер. Этот плагин подходит для сайтов с большим объёмом данных и даёт больше контроля над процессом миграции.

Преимущества — возможность ручной настройки и устранения проблем с путями после переноса, недостаток — требует больше времени на подготовку.

Основные проблемы при миграции и как их решить

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

1. Неправильные URL после переноса

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

Для массовой замены URL используйте плагин Better Search Replace или выполните SQL-запрос:

UPDATE wp_options SET option_value = replace(option_value, 'http://starij-site.ru', 'http://novyj-site.ru') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://starij-site.ru','http://novyj-site.ru');
UPDATE wp_posts SET post_content = replace(post_content, 'http://starij-site.ru', 'http://novyj-site.ru');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://starij-site.ru','http://novyj-site.ru');

2. Ошибки подключения к базе данных

Проверьте файл wp-config.php на новом сервере — там должны быть актуальные данные для подключения: имя базы, пользователь, пароль и хост.

Пример функции для автоматической проверки подключения в теме wpcom:

function wpcom_check_db_connection() {
    $link = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if (!$link) {
        wp_die('Ошибка подключения к базе данных: ' . mysqli_connect_error());
    }
    mysqli_close($link);
}

3. Отсутствие медиафайлов или проблемы с правами доступа

После копирования файлов убедитесь, что папка wp-content/uploads и её содержимое имеют правильные права доступа (обычно 755 для папок и 644 для файлов). Это позволит серверу корректно читать и записывать файлы.

Автоматизация миграции с помощью пользовательских скриптов

Если вы часто переносите сайты или хотите интегрировать процесс миграции в CI/CD, можно написать простой скрипт для экспорта и импорта базы данных с заменой URL.

Пример PHP скрипта для экспорта базы с заменой URL:

<?php
// wpcom-export-db.php
$old_url = 'http://starij-site.ru';
$new_url = 'http://novyj-site.ru';
$db = new mysqli('localhost', 'user', 'password', 'dbname');
if ($db->connect_error) {
    die('Ошибка подключения: ' . $db->connect_error);
}
$sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'dbname'";
$tables = [];
$result = $db->query($sql);
while ($row = $result->fetch_assoc()) {
    $tables[] = $row['table_name'];
}
$dump = '';
foreach ($tables as $table) {
    $res = $db->query("SELECT * FROM `" . $table . "`");
    while ($row = $res->fetch_assoc()) {
        $values = array_map(function($v) use ($old_url, $new_url) {
            return str_replace($old_url, $new_url, $db->real_escape_string($v));
        }, $row);
        $dump .= "INSERT INTO `$table` (`" . implode('`,`', array_keys($row)) . "`) VALUES ('" . implode("','", $values) . "');\n";
    }
}
file_put_contents('dump.sql', $dump);
echo 'Экспорт базы данных с заменой URL завершён.';
?>

Такой подход позволяет адаптировать данные под новый домен без ручного поиска и замены.

Рекомендации по тестированию и отладке после миграции

После переноса сайта важно проверить его работоспособность. Для этого:

  • Пройдитесь по основным страницам сайта и убедитесь, что контент отображается корректно.
  • Проверьте загрузку изображений и медиафайлов.
  • Проверьте работу форм и интерактивных элементов.
  • Используйте инструменты разработчика в браузере для выявления ошибок JavaScript и проблем с загрузкой ресурсов.
  • Проверьте логи ошибок сервера и PHP для выявления скрытых проблем.

Если после миграции вы хотите улучшить производительность, обратите внимание на плагин Clearfy Pro, который поможет оптимизировать ваши настройки и ускорить загрузку сайта.

Сервис определения шаблона и плагинов на сайте