На первый взгляд перенос сайта с одного хостинга на другой выглядит просто: скопировать файлы, импортировать базу и направить домен на новый сервер. На практике больше всего проблем возникает из-за мелочей: забытой cron-задачи, другой версии PHP, почтовых ящиков, оставшихся на старом сервере, или заказов, потерянных, пока изменения DNS расходились по сети. Порядок ниже помогает выполнить переезд пошагово, не останавливая работающий сайт и сохраняя возможность вернуться назад.
1. Составьте список того, что есть на старом хостинге
Прежде чем начинать, запишите всё, что есть на старом хостинге. Переносить нужно не только файлы и базу, но и окружающие их настройки, иначе сайт на новом сервере откроется, но часть функций молча перестанет работать. Список ниже обычно покрывает все случаи:
- Сайты и поддомены, папка каждого из них.
- Базы данных: имена, пользователи, кодировка.
- Версия PHP и нужные расширения (например,
intl,gd,imagick), значенияmemory_limitиupload_max_filesize. - Cron-задачи и время их запуска.
- Почтовые ящики, пересылки (forward) и автоответы.
- Все DNS-записи домена: A, CNAME, MX, TXT (SPF, DKIM, записи подтверждения сайта).
Особенно важно полностью скопировать DNS-записи. Если забыть TXT-записи, добавленные для Google Search Console или почтовых сервисов, после переезда может сломаться подтверждение сайта или доставка писем.
2. Заранее уменьшите TTL
TTL DNS-записи определяет, сколько времени другие серверы держат её в кеше. Если TTL равен суткам, после смены IP часть пользователей ещё долго будет попадать на старый сервер. Поэтому как минимум за день-два до переезда снизьте TTL записи A до 300 секунд. Если домен обслуживается в кабинете sayt.uz, DNS-записи и их TTL управляются там, в разделе DNS домена.
dig +noall +answer example.uz A
# example.uz. 300 IN A 203.0.113.20
3. Перенесите файлы
Если на обоих серверах есть SSH, быстрее и надёжнее всего использовать rsync или архив. При повторном запуске rsync передаёт только изменённые файлы, поэтому удобно запустить его один раз заранее и ещё раз прямо перед сменой DNS. Если SSH нет, архив можно создать в файловом менеджере старой панели и загрузить в новую.
# архив на старом сервере
tar -czf site.tar.gz -C ~/www example.uz
# или напрямую на новый сервер
rsync -avz --progress ~/www/example.uz/ user@203.0.113.20:~/www/example.uz/
4. Перенесите базу данных
При экспорте через mysqldump важно явно указать кодировку, чтобы не испортить узбекские и русские тексты. Параметр --single-transaction сохраняет таблицы InnoDB в состоянии на один момент времени без остановки сайта. На новом сервере создаются пустая база и пользователь, затем импортируется дамп. Большие базы через phpMyAdmin могут упереться в ограничения по времени или размеру, поэтому по возможности используйте консоль.
mysqldump --single-transaction --default-character-set=utf8mb4 \
-u eski_user -p eski_baza > baza.sql
mysql --default-character-set=utf8mb4 -u yangi_user -p yangi_baza < baza.sql
После импорта обновите имя базы, пользователя и пароль в конфигурации сайта: в WordPress это wp-config.php, в Laravel — .env. Если домен не меняется, заменять адреса в базе не нужно.
5. Проверьте сайт до смены DNS
Самый полезный шаг переезда — проверить сайт на новом сервере, пока домен ещё указывает на старый. Для этого в файл hosts на своём компьютере добавьте домен и IP нового сервера. Тогда на новый сервер будет заходить только ваш браузер, а все остальные посетители продолжат работать со старым сайтом.
# Windows: C:\Windows\System32\drivers\etc\hosts
# Linux/macOS: /etc/hosts
203.0.113.20 example.uz www.example.uz
В таком режиме проверьте основные страницы, вход в админку, поиск, формы и загрузку изображений. Браузер может предупреждать об HTTPS, потому что сертификат ещё не выпущен, — это нормально. После проверки не забудьте удалить строку из hosts.
6. Заморозьте контент и смените DNS
Если на сайте есть заказы, комментарии или регистрации, данные, записанные в старую базу во время переключения, не попадут в новую. Поэтому выберите время с минимальной нагрузкой, ненадолго переведите старый сайт в режим технических работ, в последний раз выполните экспорт-импорт базы и ещё раз запустите rsync. После этого смените запись A на новый IP или, если новый хостинг предоставляет свои NS-серверы, замените NS домена. При смене NS все старые записи, особенно MX и TXT, должны быть заранее подготовлены в новой DNS-зоне.
7. Почта и SSL
Почту чаще всего упускают из виду. Если письма переезжают вместе с хостингом, на новом сервере заранее создаются ящики с теми же именами, а старые письма переносятся по IMAP инструментом вроде imapsync. Даже после смены MX письма ещё несколько часов могут приходить на старый сервер, поэтому перенос полезно повторить. SSL-сертификат выпускается после того, как домен начал указывать на новый сервер: Let's Encrypt проверяет, что домен действительно направлен туда.
imapsync --host1 mail.eski-hosting.example --user1 info@example.uz --password1 '***' \
--host2 mail.example.uz --user2 info@example.uz --password2 '***'
Пример: мебельный магазин в Фергане
Сайт ферганского мебельного магазина на WordPress и WooCommerce переносили с медленного зарубежного хостинга на сервер в Узбекистане. Разработчик сначала снизил TTL до 300 секунд, в пятницу перенёс файлы и базу и через файл hosts проверил каталог, корзину и страницу оплаты. В воскресенье утром он на полчаса перевёл магазин в режим технических работ, в последний раз перенёс базу и сменил запись A. Старый хостинг продержали ещё неделю, и за это время пришедшие туда последние письма тоже перенесли в новые ящики.
Проверка после переезда
- Убедитесь, что
dig example.uz Aиdig example.uz MXпоказывают новые значения. - Проверьте, что HTTPS-сертификат выпущен и перенаправление с
httpнаhttpsработает. - Убедитесь, что cron-задачи созданы на новом сервере и запускаются.
- Отправьте тестовое письмо из формы сайта и проверьте, что оно дошло и не попало в спам.
- Не удаляйте старый хостинг сразу: держите его как резерв хотя бы несколько дней.