mysurik.ru

Как я переносил WordPress между серверами и ничего не потерял

Как я переносил WordPress между серверами и ничего не потерял

Переезд WordPress — это всегда стресс. База данных, файлы, плагины, темы, медиатека. Одна ошибка — и сайт лежит. Зато когда сделано правильно, чувствуешь себя богом администрирования.

Расскажу, как я переносил mysurik.ru с одного хостинга на другой и не поседел.

Подготовка — самое важное

Я не люблю сюрпризы. Поэтому перед переездом сделал дамп всего:

1. База данных: wp db export /tmp/mysurik_backup.sql
2. Файлы: tar -czf /tmp/mysurik_files.tar.gz /var/www/mysurik.ru/
3. Проверил целостность: grep -c «INSERT INTO» /tmp/mysurik_backup.sql

Это был план Б. Если что-то пойдёт не так — всегда можно откатиться.

Перенос файлов

На новом сервере создал ту же структуру директорий. Залил архив через rsync — это безопаснее, чем scp или ftp, потому что rsync докачивает файлы при обрыве:

rsync -avz /tmp/mysurik_files.tar.gz mysurik@новый-сервер:/tmp/

На новом сервере распаковал:
tar -xzf /tmp/mysurik_files.tar.gz -C /var/www/

Важный момент: права на файлы. У WordPress свои требования. Я выставил:
chown -R www-data:www-data /var/www/mysurik.ru/
find /var/www/mysurik.ru/ -type d -exec chmod 755 {} \;
find /var/www/mysurik.ru/ -type f -exec chmod 644 {} \;

Перенос базы данных

Создал новую БД и пользователя:
mysql -e «CREATE DATABASE mysurik_ru;»
mysql -e «GRANT ALL ON mysurik_ru.* TO ‘mysurik_ru’@’localhost’ IDENTIFIED BY ‘пароль’;»
mysql -e «FLUSH PRIVILEGES;»

Залил дамп:
mysql mysurik_ru < /tmp/mysurik_backup.sql Правим wp-config.php Это тот момент, где многие спотыкаются. В wp-config.php нужно поменять: - DB_NAME, DB_USER, DB_PASSWORD — под новую БД - WP_HOME и WP_SITEURL — если домен временно меняется Я ещё добавил в wp-config.php несколько строчек для отладки: define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); Это спасло, когда после переезда одна из страниц вываливала белую страницу смерти — в debug.log нашёлся конфликт плагина кеширования с версией PHP. Проверка ссылок в базе Если домен остался тем же — тут ничего делать не надо. А если меняется — придётся заменить все вхождения старого домена в базе через wp-cli: wp search-replace 'старый-домен.ru' 'новый-домен.ru' --skip-columns=guid Я не менял домен, но всё равно прогнал search-replace для подстраховки — wp-cli показал 0 замен, значит всё чисто. Акт переноса — DNS Переключил DNS-записи на IP нового сервера. TTL перед этим выставил на 300 секунд (5 минут), чтобы переключение было быстрым. Проверил через nslookup и whatsmydns.net. Через 10 минут сайт открылся на новом сервере. Зашёл в админку — работает. Проверил RSS, sitemap, все страницы — всё на месте. Что пошло не так Из ошибок: на новом сервере стояла другая версия PHP (8.1 против 8.3). Плагин кеширования ругался, пришлось обновить. Ещё imagemagick не обрабатывал webp — доустановил пакет. Итог Переезд занял около часа. Без единого потерянного комментария, файла или настройки. Секрет простой: 1. Полный бекап перед стартом 2. Проверка каждого шага 3. wp-cli как основной инструмент Теперь у меня есть инструкция и скрипт автоматизации на bash — на случай следующего переезда.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *