Как перенести сайт на WordPress на другой хостинг
Файлы, база и причуды самого движка: почему техдомен редиректит, что править в wp-config.php и когда в базе не надо менять вообще ничего. Пошагово на примере Beget.
Перенос WordPress выглядит страшнее, чем есть. Внутри движка всего две вещи: папка с файлами и база данных. Перевезли обе, поправили один конфигурационный файл — сайт работает на новом месте, а посетители не заметили вообще ничего.
Эта инструкция именно про WordPress с его причудами: редиректом
на техдомене, сериализованными адресами в базе, потерянным .htaccess.
Если сайт на другом движке, есть общий разбор переезда.
А если вы ещё не решили, куда переезжать, начните с другого конца:
как понять, что пора менять хостинг, и
рейтинг хостингов для WordPress с замерами скорости
и полными ценами за год. Примеры ниже показываю на Beget — он в подборке
первый для старта, и у него 30 дней теста: переезд можно отрепетировать
бесплатно и вернуться, если что-то не понравится.
Порядок, при котором сайт не ляжет
Главное правило переезда умещается в одну строку: домен переключается последним. Всё остальное — детали.
Переезд без простоя
Пока вы возитесь с копией, старый сайт спокойно работает и принимает посетителей. Ошиблись — ничего не сломали, оригинал на месте. Именно поэтому переезд не делают «переносом вживую»: сначала копия, потом проверка, и только потом DNS.
Способ первый: пусть перенесёт сам хостинг
Начну с варианта, который выбирает большинство, и правильно делает. Новому провайдеру выгодно, чтобы вы переехали, поэтому перенос у него бесплатный. У Beget заявка создаётся прямо из панели управления: передаёте доступы к старому хостингу, специалисты сами забирают файлы, базы и почту. Обычно управляются за несколько часов, в загруженные дни — к следующему утру.
От вас после этого одна обязанность — проверить результат до переключения домена. Откройте копию сайта, пройдите по разделам, зайдите в админку, отправьте тестовую заявку через форму. Поддержка переносит файлы, а не смыслы: то, что главная открывается, ещё не значит, что работает поиск по сайту или отправка писем.
Два случая, когда этот способ не подойдёт. У вас нет доступов к старой панели (только FTP или вообще ничего) — тогда часть данных придётся доставать руками. Или старый хостинг уже отключён — тогда спасает только бэкап, и дальше по инструкции ниже.
Способ второй: плагин миграции
Duplicator или All-in-One WP Migration собирают весь сайт — файлы вместе с базой — в один архив, который потом разворачивается на новом месте. Для маленького сайта это честные пятнадцать минут работы.
Есть нюансы. Бесплатные версии упираются в размер: большой архив может не собраться на старом хостинге или не влезть в лимиты загрузки на новом. Сайт на пару гигабайт медиатеки таким способом переносить мучительно. Зато у плагинов есть суперспособность, которая пригодится при смене домена: они сами заменяют старый адрес на новый по всей базе, включая сериализованные данные, где ручная замена ломает настройки тем и плагинов.
Мой вывод по опыту: плагин — лучший вариант, когда вместе с хостингом меняется и домен. При том же домене проще либо первый способ, либо руки.
Способ третий: руками, по шагам на Beget
Здесь всё то же, что делает поддержка, только сами. Заодно поймёте, как сайт устроен, — знание, которое окупается при первой же аварии.
Сначала бэкап на старом хостинге. Файлы забирайте архивом через файловый
менеджер панели, а не по FTP: WordPress — это десятки тысяч мелких
файлов, по одному они качаются часами. Проверьте, что в архив попали
скрытые файлы — прежде всего .htaccess: без него на новом месте
отвалятся постоянные ссылки, и все страницы кроме главной начнут
отдавать 404. База выгружается дампом через phpMyAdmin; откройте
скачанный файл и гляньте последние строки — оборванный на середине дамп
внешне ничем не отличается от целого.
Дальше на Beget. Добавьте сайт и домен в панели, создайте базу данных в разделе MySQL — логин, имя базы и пароль запишите. Архив файлов заливается через файловый менеджер и распаковывается на сервере, дамп импортируется в свежесозданную базу через тот же phpMyAdmin.
Остался один файл — wp-config.php в корне сайта. В нём три строки
с доступами к базе: DB_NAME, DB_USER, DB_PASSWORD — впишите
значения, которые записали при создании базы. DB_HOST на виртуальном
хостинге Beget — localhost, менять его обычно не нужно.
В самой базе при этом не меняется ничего. Домен-то остался прежним, а WordPress хранит адрес сайта, не сервер. Замены в базе — история только про смену домена, и то плагином, а не руками.
Проверка до смены DNS: причуда WordPress
У Beget каждый аккаунт получает технический адрес вида
логин.beget.tech — казалось бы, вот и способ посмотреть перенесённый
сайт. С WordPress этот фокус не проходит: движок хранит свой адрес
в базе и с техдомена средиректит вас на основной домен — то есть
на старый сервер. Вы будете смотреть на старый сайт в полной
уверенности, что проверяете новый.
Рабочий способ — файл hosts на своём компьютере. Впишите туда строку с IP нового сервера (он есть в панели Beget и в письме после регистрации) и своим доменом — и только ваш компьютер начнёт видеть сайт с нового сервера, для остального интернета ничего не изменится. Дальше обычная приёмка: страницы, картинки, админка, формы. Особое внимание отправке почты — письма с форм теряются при переезде чаще всего остального.
После проверки строку из hosts не забудьте убрать.
Переключение домена и что после него
У регистратора домена смените NS-записи на серверы Beget:
ns1.beget.com, ns2.beget.com, ns1.beget.pro, ns2.beget.pro.
Обновление расходится по интернету от пары часов до суток, и в это
время часть посетителей приходит на старый сервер, часть на новый.
День переезда — плохой день для публикации новых статей и приёма
заказов, спланируйте его на тихое время.
Когда домен указал на новый сервер, выпустите SSL-сертификат — старый не переезжает, он привязан к серверу. У Beget бесплатный Let’s Encrypt включается из панели, подробности — в разборе про SSL. Заведите почтовые ящики, если почта жила на домене, и снова проверьте формы на сайте.
Старый хостинг не удаляйте ещё неделю: если вылезет что-то пропущенное, вы просто вернёте прежние NS-записи и спокойно разберётесь. А остаток денег за неиспользованный период у старого провайдера можно вернуть по заявлению — об этом, как и о возврате, подробнее в общей статье о переезде.
Ошибки, которые я видел чаще всего
Архив без скрытых файлов — про .htaccess уже говорил, эта ошибка
уверенно держит первое место. Следом идёт оборванный дамп базы: сайт
переезжает, но без половины статей, и замечают это через неделю.
Переключение NS до проверки копии — способ устроить себе простой
на ровном месте. И почта: ящики на домене вспоминают в последнюю
очередь, когда письма уже месяц падают в никуда.
Ничего из этого списка не случается, если идти по порядку из схемы выше. А если возиться не хочется вовсе — перенесём под ключ или просто закажите бесплатный перенос у нового хостинга: подобрать его можно в рейтинге хостингов для WordPress, у половины участников перенос входит в цену любого тарифа.