Перенести базу данных на другой хостинг на вордпресс

Сегодня я расскажу о переносе сайта на WordPress с хостинга на хостинг или c хостинга на денвер, а так же на новый домен или в другую папку.
Содержание статьи:

Рано или поздно каждому из нас приходится столкнуться с переездом, для этого существует ряд причин. Самая распространенная из них – недовольства хостингом, когда терпеть уже нет сил, начинаешь думать о смене хостинг-провайдера. Хотя в этом случае проще оставить заявку в техподдержку на перенос вашего сайта (любой приличный хостинг предоставляет такую услугу бесплатно). Мне приходилось менять хостинг сотню раз, пока однажды, наконец, не повезло, теперь я пользуюсь хостингом Beget и вам советую.

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

Да мало ли какие причины заставили вас заняться переносом сайта на вордпресс. Лично мне понадобилось развернуть локальную версию сайта у себя на денвере (читайте как установить денвер), потому что работать с локальным сайтом быстрее и удобнее. На нем можно экспериментировать с настройками блога и плагинами, не боясь за работоспособность сайта. Поэтому я советую каждому иметь локальную версию, пусть будет.

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

Чтобы попасть в эту папку, можно зайти по FTP (я использую программы Total Commander или File Zilla) или через файловый менеджер хостинга (этот способ удобнее, как мне кажется). Скачайте полученные архивы к себе на компьютер. Распакуйте базу данных.

Если по какой-то причине вы не смогли сделать бэкапы, существует второй способ:

Зайдите в менеджер файлов вашего хостинга, выделите папку, в которой лежит ваш сайт и кликните «создать архив». После завершения архивации, скачайте архив на свой компьютер. Не пытайтесь перекачивать файлы блога в не архивированном виде через ftp, это займет очень много времени, обязательно будут ошибки в процессе скачки и какие-то файлы могут вообще не скачаться. Если вам посчастливилось столкнуться с хостингом, у которого нет архиватора (или вообще файлового менеджера!), читайте как архивировать данные на сервере.

Далее зайдите в раздел управления базами данных вашего хостинга, выберите phpMyAdmin. В колонке слева выберите название вашей базы данных из списка. Перейдите на вкладку Экспорт (Export) и щелкните Ок(Go). Сохраните сгенерированный файл.

Итак, дамп БД в виде файла с расширением .sql и архив со всеми файлами блога находятся на нашем компьютере и готовы к переносу на другой хостинг.

В разделе «базы данных» нового хостинга добавьте нового пользователя БД и новую БД, придумайте ей пароль и запомните его. У меня это выглядит так:

Внимание! Если вы так же меняете доменное имя, то сейчас необходимо выполнить пункт «работа с базой данных», затем вернитесь и продолжайте по порядку.

Откройте phpMyAdmin, найдите в списке слева вашу базу данных, перейдите на вкладку Импорт (Import). Закачайте ранее скачанный на компьютер дамп базы данных с разрешением .sql и нажмите ОК (Go).

Теперь залейте архив с файлами на ftp и разархивируйте его. Следите, чтобы в итоге файлы оказались в правильной папке, на моем хостинге это папка public_html, так же она может называться httpdocs, www или иначе, в зависимости от хостинга. Проверьте, чтобы эта папка была пустой, прежде чем распаковывать в нее архив.

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

/** Имя базы данных для WordPress */ define(‘DB_NAME’, ‘имя_вашей_базы_данных’); /** MySQL имя пользователя */ define(‘DB_USER’, ‘имя_пользователя_базы_данных’); /** MySQL пароль базы данных */ define(‘DB_PASSWORD’, ‘пароль_к_базе_данных’);

Установите права (атрибуты) 777 для папки wp-content/uploads и всех вложенных папок. Это делается по ftp или в файловом менеджере:

Ваш сайт должен начать работать на новом хостинге, но вы пока не можете этого проверить, т.к. домен до сих пор ссылается на старый хостинг. Чтобы исправить эту ситуацию:

  • Узнайте у нового хостера его DNS сервера. Обычно они написаны в письме, отправленном вам на почту при регистрации хостинга.
  • Зайдите в личный кабинет своего регистратора доменов — сайт, где вы покупали домен. Я пользуюсь 2domains.ru и расскажу, как это делается там. Найдите раздел «Управление DNS-серверами» и измените DNS-сервера на новые:

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

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

Если помимо хостинга, вам нужно перенести сайт на другой домен, придется столкнуться с некоторыми сложностями. В отличие от большинства CMS, в вордпрессе все пути прописаны абсолютными ссылками (это неприятный минус системы) и нам предстоит бороться с ними вручную. Давайте по порядку:

Когда вы скачали дамп базы данных со старого хостинга, надо открыть ее в редакторе (я пользуюсь Dreamweaver) и заменить все упоминания о старом домене на новые:

Есть еще один способ: когда вы импортируете базу данных, зайдите на вкладку SQL совершите три запроса:

UPDATE wp_options SET option_value = REPLACE (option_value, ‘https://old_domain.ru’, ‘https://new_domain.ru’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;

UPDATE wp_posts SET guid = REPLACE (guid, ‘https://old_domain.ru’, ‘https://new_domain.ru’);

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘https://old_domain.ru’,’https://new_domain.ru’);

Найдите такие файлы в корневом каталоге сайта, найдите в них упоминания имени вашего старого домена и замените на новое.

Замечу, что этот пункт не обязательный. Если у вас все заработало, то его можно пропустить. Иногда бывает, что в теме ворпресс тоже закрадываются абсолютные ссылки на старый домен и их нужно заменять.

Можно распаковать архив с файлами вашего сайта и выполнить поиск по всем этим файлам на наличие в них старого домена. Аналогично работе с базой, смените старые ссылки на новые. Ура, с переносом wordpress на другой домен покончено.

Если вам нужно перенести блог в другую папку (например, domain.ru/blog), внесите следующие изменения в .htaccess (изменения выделены жирным):

# BEGIN WordPress
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ — [L]
RewriteCond % !-f
RewriteCond % !-d
RewriteRule . /blog/index.php [L]
# END WordPress

На случай, если ваш сайт не заработал, привожу примеры типичных ошибок. Если вашей ошибки нет в списке, оставьте комментарий, я с радостью дополню этот список:)

  1. Error establishing a database connection. Такая ошибка случается, если неверно введены данные в файле wp-config.php.
  2. Открылась страница с установкой WordPress. Подобная ситуация могла возникнуть из-за ошибки импорта базы данных. Попробуйте удалить все таблицы базы и заново импортировать дамп.
  3. Вы видите страницу вашего хостинг-провайдера с приветствием. Причиной может стать то, что вы не очистили папку public_html (httpdocs), прежде чем распаковать в нее архив. Удалите файл index.html.
  4. Forbidden. You don’t have permission to access / on this server. Возможно, вы залили файлы сайта в неправильную папку.

На этом закончим, надеюсь, что тема переноса Wprdpress раскрыта максимально подробно и у вас не осталось вопросов. А если остались, спрашивайте. И конечно не забывайте, что у хостинга существует техподдержка, задача которой помогать вам. Не стесняйтесь обращаться к ней по любым вопросам, не зря же вы платите этим людям деньги:)

Переносим WordPress на другой хостинг или на новый домен без ошибок и неприятных последствий. Если вы уже сталкивались с этой задачей, и после не работают ссылки, или вместо страницы открывается белый экран, вы явно сделали что-то не так. Ниже будет подробная инструкция, как сделать всё правильно и избежать грубых ошибок.

Для работы нам понадобится Far Manager

Для создания бекапа (резервной копии) сайта на WordPress можно пойти несколькими путями

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

Ещё хочу добавить про плагины — они могут не до конца запаковать все файлы. Я, например, сталкивался с тем, что UpdraftPlus WordPress Backup Plugin не до конца сбекапил базу данных, пропустив кастомную таблицу (у неё префикс отличался от остальных). Поэтому, при переносе базы данных я рекомендую пользоваться старыми добрыми phpMyAdmin или Adminer.

Во втором случае, если ваш хостер предоставляет панель управления, в ней, наверняка, есть менеджер файлов. Тогда самым простым будет воспользоваться им для создания бекапа файлов сайта. Думаю, тут вы тоже сможете разобраться самостоятельно. Или, в крайнем случае, обратитесь за помощью в службу поддержки.

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

Если панели нет, либо вы имеете желание и возможность работать через консоль, переходим далее.

Во втором случае, допустим, ваш сайт располагается в директории /var/www/sheensay.ru
Авторизуетесь в вашем хостинге с помощью Far Manager или иного другого файлового или консольного менеджера (например, putty) по ssh, переходите в раздел /var/www/ вводите команду

где sheensay.ru — это директория, в которой содержится ваш сайт.
В результате, увидите файл backup.tag.gz . Его надо скачать, в нём содержится архив файлов вашего сайта

Создаём бекап файлов WordPress

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

На худой конец, просто скопируйте файлы сайта к себе через ftp или ssh, однако, этот вариант крайне неудобен и нежелателен, ибо долог.

Для создания бекапа mysql базы данных можно

  1. Воспользоваться плагинами: WP-DB-Backup, WP Database Backup и т.д.
  2. Использовать phpMyAdmin, Adminer
  3. Создать копию базы данных mysql через консоль утилитой mysqldump

Первый случай также не рассматриваю, ибо не пользуюсь. Если нужен обзор — напишите в комментариях.

Во втором случае, который я, кстати, рекомендую как самый удобный, вы просто авторизуетесь в PhpMyAdmin и создаёте дамп базы данных

Авторизуемся в phpmyadmin

Параметры настроек экспорта базы данных

  1. Находим нашу базу данных
  2. Переходим в Экспорт
  3. Выбираем режим Обычный — отображать все возможные настройки
  4. Убеждаемся, что все таблицы выделены
  5. Выбираем компрессию gzip
  6. Следим, чтобы формат был SQL
  7. Смотрим, чтобы все галочки были проставлены как надо

Параметры настроек экспорта базы данных

На выходе на скачивание получаем файл wptest.sql.gz , где wptest — название нашей базы данных.

Если у вас нет доступа к phpMyAdmin, вы можете создать дамп базы данных через консоль SSH с помощью утилиты mysqldump.
Допустим, для доступа к базе данных у нас такие параметры: логин: root , пароль: pass , название базы данных sheensay_database .
Авторизуемся на хостинг через ssh и в консоль записываем

На выходе получится файл db.sql.gz , в котором содержится дамп(упакованный бекап) базы данных

Можно упростить создание бекапа базы данных, если использовать WP CLI
Для создания бекапа достаточно 1 команды (если под рутом, добавляете ключ —allow-root ):

А чтобы развернуть дамп из бекапа, можно использовать похожую команду:

где db.sql — имя дампа базы данных.

Сжать db.sql можно комадной:

Итак, мы имеем 2 файла с бекапами нашего сайта: backup.tar.gz — с файлами сайта, и wptest.tar.gz — с дампом базы данных. Если мы будем переносить наш сайт с денвера (или иного локального сервера) на хостинг, по сути, ничего не поменяется, разве что архив с файлами сайта нужно будет собрать штатным архиватором (тот же Far Manager с помощью Shift + F1 на нужной папке с файлами прекрасно с этим справляется). Так же можно перенести сайт обратно на Денвер или любой другой хостинг, поэтому направление переноса не имеет значения.

На локальном хостинге (Денвере/Denwer, Open Server) не забывайте отключать плагины кеширования (WP Super Cache, W3 Total Cache, WP Rocket и подобные) и безопасности (Wordfence, All In One WP Security & Firewall и т.п.), они будут мешать работе. Если не получается отключить плагины через админку, удалите их директории вручную, это хоть и грубый, но весьма действенный метод.

Для начала, перенесём файлы сайта. Если возможно, делаем это с помощью файлового менеджера: авторизуемся по ssh и закачиваем backup.tar.gz в нужную директорию.

Архив с файлами сайта нужно залить именно на тот уровень иерархии, с которого он создавался. В нашем случае, нужно заливать в /var/www/
Впрочем, при возникновении трудностей для исправления ситуации можно воспользоваться UNIX-командой mv

Распаковку производим с помощью команды

Если у вас VDS/VPS, после переноса файлов не забудьте установить правильных владельцев файлов и директорий, а также права доступа к ним.

Теперь переходим в phpMyAdmin нового хостинга и импортируем дамп нашей базы данных

База данных на новом хостинге должна уже существовать и быть пустой, то есть готовой для принятия нашего дампа

Импортируем дамп базы данных

  1. Авторизуемся в phpmyadmin
  2. Переходим в раздел импорт
  3. Выбираем архив с дампом БД
  4. Следим, чтобы кодировка была правильной
  5. Формат должен быть SQL
  6. Сохраняем

Всё, импорт на этом почти завершён. Осталось подключить сайт к базе данных.
Для этого находим в корне сайта файл wp-config.php и записываем туда данные, предоставленные хостингом

Настройка подключения к базе данных

Если во время переноса WordPress вам понадобится изменить домен, не лезьте в базу данных менять что-либо вручную, так как есть риск переломать сериализованные строки.
Лучше воспользуйтесь одним из нижеперечисленных вариантов:

Самый простой вариант — прописать домен в wp-config.php Способ не идеальный (иногда некоторые плагины могут работают некорректно, пока не изменить домен и в базе данных тоже), но самый простой и быстрый.
Итак, находим в корне сайта, редактируем wp-config.php . Желательно найти define( ‘WP_DEBUG’, false ); и прописать над или под ним:

Вариант для любителей консоли SSH — пользуемся WP-CLI Для безопасного внесения изменений в базу данных WordPress можно воспользоваться утилитой WP-CLI.
Например, команда для консоли SSH, чтобы изменить домен в базе данных с http на https:

Специальная утилита Search-Replace-DB для внесения изменений в базу данных WordPress

Пользуемся специальной утилитой Search-Replace-DB от компании Interconnect IT, это проще и безопаснее. Вам будет достаточно лишь доступа по SSH или FTP, и она сможет внести изменения в сериализованные значения правильно (инструкция ниже).

  1. Скачиваем последнюю версию Search-Replace-DB
  2. Создаём в корне сайта папку с любым названием, распаковываем скачанный архив туда. Тут загвоздка в том, что любой открывший эту директорию получает доступ к базе данных сайта. Поэтому тут либо создаём сложноподбираемое название директории, либо воспользуемся защитой htaccess от постороннего доступа

Как правильно изменить адрес WordPress

Как правильно изменить адрес WordPress

В строку replace вносим старый домен, with — новый. Данные для подключения к базе данных вносятся автоматом.
Отмечаем All tables , потом жмём Live Run .

Не закрывайте страницу, пока утилита не завершит все начатые изменения!

Утилитой можно воспользоваться не только для изменения имени домена в базе данных. Она может помочь при внесении других правок, при необходимости, сделав это аккуратно и сохранив структуру данных.
По окончанию работ директорию со скриптами лучше всего удалить для безопасности. Советую удалять не с помощью кнопки delete me , а вручную через FTP или SSH.

Допустим, сайт перенесён с домена example.org на example.com

В .htaccess в корне сайта прописываем:

А вот пример, когда к смене домена добавляется переезд с http на https: