Переносим WordPress на другой хостинг или на новый домен без ошибок и неприятных последствий. Если вы уже сталкивались с этой задачей, и после не работают ссылки, или вместо страницы открывается белый экран, вы явно сделали что-то не так. Ниже будет подробная инструкция, как сделать всё правильно и избежать грубых ошибок.
Для работы нам понадобится Far Manager
- Создаём резервную копию файлов сайта
- Как создать архив с файлами сайта
- Создаём резервную копию базы данных сайта
- Как создать резервную копию базы данных с помощью PhpMyAdmin, Adminer
- Создание копии базы данных с помощью mysqldump
- Перенос с локального сервера на хостинг
- Перенос файлов сайта
- Перенос базы данных
- Как изменить адрес WordPress
- Используем Search-Replace-DB
- Как сделать 301 редирект со старого домена на новый
Создаём резервную копию файлов сайта
Для создания бекапа (резервной копии) сайта на WordPress можно пойти несколькими путями
- Воспользоваться плагином, например, UpdraftPlus WordPress Backup Plugin или Duplicator
- Сделать это вручную
Про первый вариант ничего не скажу, не пользуюсь им, но если нужно сделать обзор, напишите в комментариях.
Ещё хочу добавить про плагины — они могут не до конца запаковать все файлы. Я, например, сталкивался с тем, что UpdraftPlus WordPress Backup Plugin не до конца сбекапил базу данных, пропустив кастомную таблицу (у неё префикс отличался от остальных). Поэтому, при переносе базы данных я рекомендую пользоваться старыми добрыми phpMyAdmin или Adminer.
Во втором случае, если ваш хостер предоставляет панель управления, в ней, наверняка, есть менеджер файлов. Тогда самым простым будет воспользоваться им для создания бекапа файлов сайта. Думаю, тут вы тоже сможете разобраться самостоятельно. Или, в крайнем случае, обратитесь за помощью в службу поддержки.
Кстати, вот тут моя личная рекомендация. Если заведёте хостинг в Beget, служба поддержки перенесёт и настроит ваш сайт бесплатно, а также даст 30 бесплатных тестовых дней хостинга
Если панели нет, либо вы имеете желание и возможность работать через консоль, переходим далее.
Как создать архив с файлами сайта
Во втором случае, допустим, ваш сайт располагается в директории /var/www/sheensay.ru
Авторизуетесь в вашем хостинге с помощью Far Manager или иного другого файлового или консольного менеджера (например, putty) по ssh, переходите в раздел /var/www/
вводите команду
tar czvf backup.tar.gz sheensay.ru
где sheensay.ru
— это директория, в которой содержится ваш сайт.
В результате, увидите файл backup.tag.gz
. Его надо скачать, в нём содержится архив файлов вашего сайта
Также, хорошие хостеры позволяют создавать архивы с бекапами сайтов прямо из панели управления, вы можете уточнить про эту возможность в службе технической поддержки.
На худой конец, просто скопируйте файлы сайта к себе через ftp или ssh, однако, этот вариант крайне неудобен и нежелателен, ибо долог.
Создаём резервную копию базы данных сайта
Для создания бекапа mysql базы данных можно
- Воспользоваться плагинами: WP-DB-Backup, WP Database Backup и т.д.
- Использовать phpMyAdmin, Adminer
- Создать копию базы данных mysql через консоль утилитой mysqldump
Первый случай также не рассматриваю, ибо не пользуюсь. Если нужен обзор — напишите в комментариях.
Как создать резервную копию базы данных с помощью PhpMyAdmin, Adminer
Во втором случае, который я, кстати, рекомендую как самый удобный, вы просто авторизуетесь в PhpMyAdmin и создаёте дамп базы данных
- Находим нашу базу данных
- Переходим в Экспорт
- Выбираем режим Обычный — отображать все возможные настройки
- Убеждаемся, что все таблицы выделены
- Выбираем компрессию
gzip
- Следим, чтобы формат был
SQL
- Смотрим, чтобы все галочки были проставлены как надо
На выходе на скачивание получаем файл wptest.sql.gz
, где wptest — название нашей базы данных.
Создание копии базы данных с помощью mysqldump
Если у вас нет доступа к phpMyAdmin, вы можете создать дамп базы данных через консоль SSH с помощью утилиты mysqldump.
Допустим, для доступа к базе данных у нас такие параметры: логин: root
, пароль: pass
, название базы данных sheensay_database
.
Авторизуемся на хостинг через ssh и в консоль записываем
mysqldump sheensay_database -uroot -ppass | gzip > db.sql.gz
На выходе получится файл db.sql.gz
, в котором содержится дамп(упакованный бекап) базы данных
Можно упростить создание бекапа базы данных, если использовать WP CLI
Для создания бекапа достаточно 1 команды (если под рутом, добавляете ключ--allow-root
):wp db exportА чтобы развернуть дамп из бекапа, можно использовать похожую команду:
wp db import db.sqlгде
db.sql
— имя дампа базы данных.Сжать
db.sql
можно комадной:gzip db.sqlА распаковать обратно:
gunzip db.sql.gz
Перенос с локального сервера на хостинг
Итак, мы имеем 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
Распаковку производим с помощью команды
tar xfvz backup.tar.gz
Если у вас VDS/VPS, после переноса файлов не забудьте установить правильных владельцев файлов и директорий, а также права доступа к ним.
Перенос базы данных
Теперь переходим в phpMyAdmin нового хостинга и импортируем дамп нашей базы данных
База данных на новом хостинге должна уже существовать и быть пустой, то есть готовой для принятия нашего дампа
- Авторизуемся в phpmyadmin
- Переходим в раздел импорт
- Выбираем архив с дампом БД
- Следим, чтобы кодировка была правильной
- Формат должен быть
SQL
- Сохраняем
Всё, импорт на этом почти завершён. Осталось подключить сайт к базе данных.
Для этого находим в корне сайта файл wp-config.php
и записываем туда данные, предоставленные хостингом
Как изменить адрес WordPress
Если во время переноса WordPress вам понадобится изменить домен, не лезьте в базу данных менять что-либо вручную, так как есть риск переломать сериализованные строки.
Лучше воспользуйтесь одним из нижеперечисленных вариантов:
- Самый простой вариант — прописать домен в
wp-config.php
- Способ не идеальный (иногда некоторые плагины могут работают некорректно, пока не изменить домен и в базе данных тоже), но самый простой и быстрый.
Итак, находим в корне сайта, редактируемwp-config.php
. Желательно найтиdefine( 'WP_DEBUG', false );
и прописать над или под ним:define( 'WP_DEBUG', false ); // example.com заменяем на свой домен define( 'WP_HOME', 'http://example.com' ); define( 'WP_SITEURL', 'http://example.com' );
Например, команда для консоли SSH, чтобы изменить домен в базе данных с http на https:
wp search-replace 'http://example.com' 'https://example.com'
Search-Replace-DB
для внесения изменений в базу данных WordPressПользуемся специальной утилитой Search-Replace-DB
от компании Interconnect IT, это проще и безопаснее. Вам будет достаточно лишь доступа по SSH или FTP, и она сможет внести изменения в сериализованные значения правильно (инструкция ниже).
Используем Search-Replace-DB
- Скачиваем последнюю версию Search-Replace-DB
- Создаём в корне сайта папку с любым названием, распаковываем скачанный архив туда. Тут загвоздка в том, что любой открывший эту директорию получает доступ к базе данных сайта. Поэтому тут либо создаём сложноподбираемое название директории, либо воспользуемся защитой htaccess от постороннего доступа
-
В строку
replace
вносим старый домен,with
— новый. Данные для подключения к базе данных вносятся автоматом.
ОтмечаемAll tables
, потом жмёмLive Run
.
Не закрывайте страницу, пока утилита не завершит все начатые изменения!
Утилитой можно воспользоваться не только для изменения имени домена в базе данных. Она может помочь при внесении других правок, при необходимости, сделав это аккуратно и сохранив структуру данных.
По окончанию работ директорию со скриптами лучше всего удалить для безопасности. Советую удалять не с помощью кнопки delete me
, а вручную через FTP или SSH.
Как сделать 301 редирект со старого домена на новый
Допустим, сайт перенесён с домена example.org
на example.com
В .htaccess
в корне сайта прописываем:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1 [L] RewriteCond %{HTTP_HOST} ^(www\.)?example\.org RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
А вот пример, когда к смене домена добавляется переезд с http на https:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1 [L] RewriteCond %{HTTP_HOST} ^(www\.)?example\.org [NC, OR] RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
Или универсальный вариант:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] RewriteRule ^([^/]+) $1 [L] RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
И последнее: в robots.txt
в корне сайта прописываем (если файла не сущестувует, создаём):
User-agent: * Disallow: Host: example.com Sitemap: http://example.com/sitemap.xml
Свежие комментарии