Sheensay → WordPress → Перенос Wordpress

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

19.09.2018

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

Кстати, инструкция по настройке https на WordPress

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

  • Создаём резервную копию файлов сайта
  • Как создать архив с файлами сайта
  • Создаём резервную копию базы данных сайта
  • Как создать резервную копию базы данных с помощью PhpMyAdmin, Adminer
  • Создание копии базы данных с помощью mysqldump
  • Перенос с локального сервера на хостинг
  • Перенос файлов сайта
  • Перенос базы данных
  • Как изменить адрес WordPress
  • Используем Search-Replace-DB
  • Как сделать 301 редирект со старого домена на новый

Создаём резервную копию файлов сайта

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

  1. Воспользоваться плагином, например, UpdraftPlus WordPress Backup Plugin или Duplicator
  2. Сделать это вручную

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

Ещё хочу добавить про плагины — они могут не до конца запаковать все файлы. Я, например, сталкивался с тем, что 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. Его надо скачать, в нём содержится архив файлов вашего сайта

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

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

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

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

Создаём резервную копию базы данных сайта

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

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

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

Как создать резервную копию базы данных с помощью PhpMyAdmin, Adminer

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

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

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

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

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

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

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

На выходе на скачивание получаем файл 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 нового хостинга и импортируем дамп нашей базы данных

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

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

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

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

Всё, импорт на этом почти завершён. Осталось подключить сайт к базе данных.
Для этого находим в корне сайта файл 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 — пользуемся WP-CLI
Для безопасного внесения изменений в базу данных WordPress можно воспользоваться утилитой WP-CLI.
Например, команда для консоли 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

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

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

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

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

    В строку 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



Так себеНеплохоНормальноХорошоОтлично (5 оценок, в среднем: 4,80 из 5)
Загрузка...


  • WordPress ошибка: требуется обновление базы данных
  • WP-CLI — управление WordPress из консоли
  • Резервные копии WordPress — UpdraftPlus WordPress Backup Plugin
  • Ошибка php Maximum execution time of 30 seconds exceeded
  • Как восстановить пароль администратора в WordPress

WordPress

Перенос Wordpress

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие комментарии

  • Sheens к записи Что такое SSL и TLS, как установить и настроить
  • Геомант к записи Что такое SSL и TLS, как установить и настроить
  • Sheens к записи Last-Modified в WordPress
  • Артур к записи Last-Modified в WordPress
  • Sheens к записи EWWW Image Optimizer — плагин для сжатия png, jpeg, gif анимации без потери качества
  • Telegram
  • Вконтакте
  • Facebook
  • Twitter
  • Google+
  • Одноклассники
  • Мой Мир Mail.ru
  • RSS

Copyright © 2025 · Sheensay on Genesis Framework · WordPress · Log in