Top.Mail.Ru
Русский
menu
Миграция · 16 минут

Как перенести сайт на VPS без потери данных

Безопасный перенос — это не одно копирование файлов, а управляемая смена окружения: инвентаризация, backup, тест на новом адресе, финальная синхронизация, DNS и план отката. Ниже — последовательность для сайта с базой данных и внешними интеграциями.

Этапы переноса сайта со старого хостинга на новый VPS с проверкой и переключением DNS
В статьеПланИнвентаризацияНовый VPSКопированиеПроверкаDNSПосле переносаОшибкиFAQ

Выберите сценарий миграции

Для статического сайта достаточно скопировать файлы, проверить конфигурацию веб-сервера и переключить домен. Динамический проект сложнее: посетители продолжают создавать заказы, комментарии, учётные записи или сообщения, пока вы переносите базу. Если просто сделать дамп утром, а DNS сменить вечером, новые данные останутся на старом сервере.

СценарийПростойПодход
Статический сайтПрактически не нуженКопия файлов, тест, DNS
Блог с редкими изменениямиНесколько минутФинальный dump в коротком режиме обслуживания
Интернет-магазинНужно минимизироватьПредварительная копия + финальная синхронизация заказов и файлов
Высоконагруженный сервисМожет быть недопустимРепликация, двойная запись или поэтапное переключение
Смена панели/стекаЗависит от совместимостиОтдельный тест и ручная проверка конфигурации

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

Шаг 1. Составьте инвентаризацию

До заказа VPS зафиксируйте всё, от чего зависит проект. Кроме каталога сайта и основной базы часто существуют cron, очереди, Redis, загружаемые файлы, TLS-сертификаты, почтовые ящики, DNS-записи, переменные окружения, webhook, внешние API и доступы к object storage. Пропущенный пункт проявится уже после переключения.

Снимите текущие метрики CPU, RAM, диска и трафика хотя бы за рабочую неделю. Они помогут выбрать новый тариф без гадания. Если статистики нет, начните с небольшого запаса и возможностью быстрого апгрейда; полезны общая методика выбора VPS и таблица CPU/RAM по задачам.

Шаг 2. Сделайте проверяемую резервную копию

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

Проверьте архив: откройте список файлов, убедитесь, что uploads не исключены ошибочным шаблоном, а dump содержит нужные таблицы. Лучший тест — развернуть копию во временном окружении. Backup, который никогда не восстанавливали, остаётся предположением.

Контрольная точка: до переключения DNS у вас должны быть две независимые копии, известный способ восстановления и доступ к старому серверу. Снимок панели сам по себе не закрывает все риски.

Шаг 3. Подготовьте новый VPS

Установите поддерживаемую ОС, создайте отдельного пользователя с sudo и настройте вход по SSH-ключу. Отключать парольный вход следует после проверки, что ключ работает во второй сессии. Обновите пакеты, включите firewall и откройте только необходимые порты.

Разверните веб-сервер, runtime и базу совместимых версий. При большом скачке версии сначала проверьте документацию приложения и миграции. Например, старый PHP-проект может использовать удалённые функции, а новая СУБД — более строгие настройки. Лучше сначала повторить близкое окружение, перенести сайт и только потом обновлять компоненты по одному.

Настройте время и часовой пояс осознанно: приложение, база и логи желательно хранить в согласованной временной зоне. Создайте каталоги, пользователей БД и конфигурацию, но не открывайте базу всему интернету. Для WordPress есть отдельное руководство по подготовке VPS под CMS, для контейнеров — материал про Docker на VPS.

Шаг 4. Перенесите файлы и базу

Первую копию можно сделать заранее, пока старый сайт работает. Инструмент файловой синхронизации должен сохранять структуру и при необходимости владельцев, но после переноса всё равно проверьте права. Не делайте весь каталог доступным на запись веб-процессу: приложению обычно нужны только отдельные uploads, cache или runtime-директории.

Импортируйте базу в отдельного пользователя с минимальными правами. Проверьте кодировку, collation, timezone и sql mode. Если домен или абсолютный путь меняется, не выполняйте слепую текстовую замену по бинарному dump: сериализованные данные некоторых CMS требуют специального инструмента.

Секреты переносите защищённым каналом и после миграции при возможности ротируйте. Не кладите production env-файл в публичный репозиторий. Если доступ к внешнему сервису ограничен IP, добавьте новый адрес заранее, не удаляя старый до окончания проверки.

Шаг 5. Проверьте сайт до смены DNS

Самый надёжный способ — временно направить домен на новый IP только на своём компьютере через hosts. Тогда браузер отправит правильный Host header, HTTPS и маршруты будут ближе к рабочим. Альтернативный тестовый поддомен тоже подходит, но приложение может вести себя иначе из-за cookies, CORS и абсолютных URL.

  1. Откройте главную, типовые внутренние страницы и страницу 404.
  2. Проверьте вход, регистрацию, поиск, загрузку файлов и формы.
  3. Создайте тестовый заказ или другую ключевую транзакцию.
  4. Убедитесь, что cron и workers запускаются ровно в одном месте.
  5. Проверьте отправку почты и заголовки сообщения.
  6. Посмотрите access/error logs и ошибки приложения.
  7. Сравните время ответа и потребление ресурсов со старым сервером.
  8. Проверьте backup и восстановление уже на новом VPS.

Не ограничивайтесь тем, что «главная открывается». Ошибки часто скрываются в админке, webhooks, генерации документов, фоновых заданиях и редких типах файлов. Составьте короткий smoke-чек именно для бизнеса проекта.

Шаг 6. Выполните финальную синхронизацию и смените DNS

За день или больше уменьшите TTL основной записи, если текущий DNS-провайдер это позволяет. Низкий TTL не гарантирует мгновенное обновление у всех резолверов, но обычно сокращает период смешанного трафика. Не меняйте nameservers и адрес сервера одновременно без необходимости: это усложняет диагностику.

В согласованное окно включите режим обслуживания или запретите операции записи, сделайте финальный dump базы и синхронизацию изменившихся файлов. Остановите cron и workers на старом сервере, запустите их на новом, затем измените A/AAAA-записи. Если используется CDN или proxy, обновите origin в его панели.

Некоторое время запросы будут приходить на оба адреса. Старый сайт должен либо оставаться в read-only, либо перенаправлять на новый, если схема это допускает. Следите за логами обоих серверов и не вносите независимые изменения в две базы.

Шаг 7. Проверки после переключения

Верните разумный TTL после стабилизации. Старый сервер держите доступным несколько дней или срок, соответствующий риску проекта, но закройте на нём запись и автоматические задания. Только после подтверждения данных и backup удаляйте услугу.

План отката

Rollback должен быть написан до миграции. Для простого сайта это возврат DNS на старый IP и запуск старых workers. Для магазина всё сложнее: если на новом сервере уже появились заказы, откат без обратной синхронизации потеряет их. Поэтому заранее определите точку, после которой возвращаться нельзя, а проблему нужно исправлять на новом окружении.

Храните контрольные суммы важных файлов, время последнего dump и журнал действий. Во время аварии короткая инструкция полезнее памяти администратора.

Частые ошибки

Частые вопросы

Сколько длится перенос сайта?

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

Можно ли перенести сайт без доступа к панели старого хостинга?

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

Нужно ли переносить SSL-сертификат?

Часто проще выпустить новый сертификат на новом сервере. Для проверки до DNS может потребоваться DNS challenge или временная схема. Закрытый ключ передавайте только защищённо.

Когда отключать старый сервер?

После завершения DNS-перехода, проверки бизнес-функций, сверки новых данных и успешного внешнего backup. Для важного проекта разумно оставить запас в несколько дней.

Как выбрать новый VPS?

Смотрите на фактическую текущую нагрузку, объём данных, локацию, возможность апгрейда и полную стоимость. Начните с каталога VPS по параметрам, отфильтровав минимальные ресурсы.

Подберите VPS для переездаСравните серверы по измеренной нагрузке, диску, локации и стоимости продления.
Открыть каталог

Если переносите CMS, дополнительно проверьте чек-лист VPS для WordPress.