Руководство по миграции с Shared-хостинга на VPS

Giteqa

Приветствую, друзья!

Рано или поздно любой успешный веб-проект перерастает рамки обычного виртуального хостинга (Shared Hosting). Вы начинаете замечать, что сайт медленнее открывается в часы пик, база данных всё чаще упирается в лимиты одновременных соединений, а ограничения на размер загружаемых файлов или процессорное время в панели управления не дают развернуть нужные плагины.

Переезд на собственный VPS (Virtual Private Server) — это естественный и зрелый этап эволюции вашей ИТ-инфраструктуры. Однако для многих новичков процесс миграции кажется сложной хирургической операцией, сопряженной с риском потерять данные или «уронить» сайт на несколько дней. Конечно же, вы можете оформить услугу по одноразовому менеджменту для переноса данных, если такая услуга предусмотрена хостинг-провайдером — это сэкономит вам время и нервы.

В этом руководстве мы разберем, как правильно подготовить инфраструктуру, настроить новое окружение и перенести проект с общего хостинга на изолированный VPS абсолютно бесшовно — так, чтобы ваши клиенты даже не заметили технических работ.

Key Takeaways: Секреты успешной миграции

  • Снижайте TTL заранее: За 24 часа до миграции уменьшите значение TTL в DNS-записях вашего домена до минимальных 300 секунд (5 минут). Это позволит новому IP-адресу VPS мгновенно распространиться по сети, когда вы переключите домен.

  • Сначала окружение, потом данные: Никогда не переносите файлы на ненастроенный сервер. На VPS должен быть полностью развернут и протестирован весь стек (LAMP/LEMP или Docker) до начала импорта.

  • Режим обслуживания (Maintenance): В момент финального экспорта базы данных переведите сайт на старом хостинге в режим обслуживания, иначе вы потеряете заказы или комментарии, которые пользователи успеют оставить в процессе переноса.

  • Тестирование через hosts: Вы можете проверить работу сайта на новом VPS еще до того, как перепишете DNS-записи, просто подменив IP в локальном файле hosts на своем компьютере.

Shared-хостинг против VPS: Время менять правила

Виртуальный хостинг идеален для старта, но он жестко ограничивает свободу действий. Вы делите операционную систему с сотнями соседей. На VPS вы получаете гарантированные ресурсы, собственное ядро Linux и полные права суперпользователя (root). Как правило, люди всегда переходят на VPS спустя время использования Shared Hosting, и это связано с тем, что на VPS у вас значительно больше возможностей, места на диске, ядер и оперативной памяти. Переход на VPS сразу даст вам ощущение большей свободы и больших мощностей.

Сравнительная таблица условий размещения

Параметр инфраструктурыВиртуальный хостинг (Shared)Виртуальный выделенный сервер (VPS)Эффект для вашего проекта
Изоляция ресурсовОтсутствует. Соседи могут перегрузить CPU/диск. Также ваш IP может попасть в СПАМ из-за соседей.Полная (KVM-виртуализация квотирует RAM и ядра).Стабильный Response Time и отсутствие внезапных падений.
Параметры PHP/ОСЖесткие лимиты (memory_limit, upload_max_filesize).Полная свобода конфигурации любых конфигурационных файлов.Можно запускать тяжелые скрипты, Docker и плагины автоматизации.
Управление базамиБазовый доступ через phpMyAdmin.Полный доступ к конфигам СУБД, логам и тюнингу памяти.Ускорение обработки тяжелых SQL-запросов в разы.
Безопасность средыЗависит от общей защищенности сервера провайдера.Изолированная система + возможность поставить Fail2ban/Zeek.Минимальный риск перекрестного заражения от чужих сайтов.

Пошаговый процесс миграции на VPS

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

Чтобы данные не рассинхронизировались, а пользователи не заметили сбоя, миграцию нужно проводить по строгому алгоритму. Ниже представлен пошаговый план переноса проекта на VPS с Ubuntu 24.04.

Этап 1. Подготовка новой базы (VPS)

На этом этапе мы настраиваем «приёмную сторону», но пока ничего не переключаем. Посетители всё еще работают со старым сервером.

  1. Базовая безопасность: Обновите пакеты, создайте non-root пользователя с sudo-правами, настройте SSH по ключам и включите брандмауэр UFW (разрешите порты 22, 80, 443).

  2. Установка окружения (стека): Установите веб-сервер (Nginx/Apache), СУБД (PostgreSQL/MySQL), а также нужную версию языка (PHP, Node.js, Python и т.д.) или настройте Docker.

  3. Перенос кода: Склонируйте репозиторий вашего проекта на VPS (например, в директорию /var/www/my-project).

  4. Конфигурация окружения: Создайте файл .env или конфигурационные файлы. Важно: пока укажите в них учетные данные новой, еще пустой локальной базы данных.

  5. Тестовый запуск веб-сервера: Настройте конфигурационный файл Nginx для вашего домена, но пока не выпускайте SSL-сертификат Let's Encrypt (он не подтвердится, пока DNS указывает на старый сервер).

Этап 2. Снижение TTL (За 24–48 часов до миграции)

Самая частая ошибка — забыть про кэширование DNS.

  1. Зайдите к вашему DNS-провайдеру (Cloudflare, Reg.ru и др.).

  2. Найдите параметр TTL (Time to Live) для вашей A-записи. Обычно там стоит 3600 (1 час) или 84600 (24 часа).

  3. Уменьшите это значение до минимума: 60–300 секунд (1–5 минут).

Зачем? Это заставит провайдеров по всему миру быстрее узнать о том, что ваш сайт переехал на новый IP, когда мы сменим записи.

Этап 3. День X. (Режим обслуживания)

Выбирайте время с наименьшей посещаемостью (например, 3 часа ночи).

  1. Включение Maintenance Mode

    Переведите сайт на старом сервере в режим обслуживания (Maintenance Mode). Пользователи должны видеть заглушку: «Ведутся технические работы».

Критически важно: Это гарантирует, что в процессе копирования никто не создаст новый заказ, не напишет комментарий и не изменит баланс в базе данных. Также вы можете заранее сделать рассылку по базе email-адресов, чтобы клиенты знали о проведении техработ.

  1. Фиксация и дамп данных

    Как только сайт закрыт на обслуживание, делаем «слепок» актуальных данных:

  • База данных: Создайте дамп (например, с помощью mysqldump или pg_dump).

  • Медиа-файлы: Заархивируйте папку с загрузками пользователей (uploads/, storage/), которые не хранятся в Git.

  1. Перенос данных на VPS

    Перенесите архивы и дамп со старого сервера на новый через scp или rsync. Пример:


rsync -avz /path/to/dump.sql user@new_vps_ip:/tmp/
  1. Разворачивание на новом месте

  • На VPS импортируйте дамп в новую пустую базу данных.

  • Распакуйте медиа-файлы в соответствующую директорию проекта, задайте правильные права:


chown -R www-data:www-data /var/www/my-project
  • Запустите миграции (если это Laravel, Django и т.д.), очистите кэш приложения.

Этап 4. Проверка и Переключение DNS

Проект на VPS готов, но мир о нём ещё не знает.

  1. Локальный тест (Файл hosts): Чтобы убедиться, что всё работает идеально, обманите свой компьютер. Пропишите в файл hosts вашего ПК (на Windows или Mac) строку:

    IP_NEW_VPS yourdomain.com

    Зайдите на сайт через браузер. Вы увидите работу сайта уже с нового сервера. Проверьте авторизацию, админку, корзину. Если всё ок — удалите строку из hosts.

  2. Переключение DNS: Идите в панель DNS и измените IP-адрес в A-записи со старого сервера на IP нового VPS.

  3. Выпуск SSL: Поскольку TTL мы уменьшили заранее, изменения вступят в силу быстро. Как только домен начнет вести на новый IP, запустите на VPS certbot для получения SSL-сертификата Let's Encrypt.

Этап 5. Пост-миграция и «План Б»

  • Мониторинг логов: В первые часы внимательно смотрите в /var/log/nginx/error.log и логи самого приложения на VPS.

  • Старый сервер НЕ выключаем: Держите старый сервер включенным еще 2–3 дня. Даже при низком TTL у некоторых интернет-провайдеров DNS-кэш может обновляться дольше.

  • Заглушка-прокси (Лайфхак): Чтобы те редкие пользователи, у которых DNS еще не обновился, не получали ошибку или не писали в старую БД, измените конфиг веб-сервера на старом хостинге. Настройте его так, чтобы он просто перенаправлял (проксировал) все запросы на IP нового VPS.

Через 3-4 дня, когда трафик на старом сервере полностью иссякнет (это можно увидеть по логам доступа), его можно со спокойной душой гасить.

FAQ: Коротко о главном

  • Сколько времени занимает полное обновление DNS при переносе?

    Если вы заранее снизили TTL до 5 минут, то переключение произойдет практически мгновенно для большинства пользователей. В худшем случае, если TTL не был изменен, полное обновление кэша провайдеров по всему миру может занять от 12 до 24 часов. Именно поэтому старый хостинг нельзя отключать сразу после изменения А-записи — он должен поработать еще пару дней подстраховкой.

  • Как перенести проект, если у меня очень большой объем файлов (более 50 Гб)?

    Для переноса тяжелых медиа-архивов не используйте скачивание на локальный ПК. Настройте прямую передачу файлов между серверами по протоколу SSH с помощью утилиты rsync. Она не только передаст данные на максимальной скорости сетевого порта, но и позволит докачать файлы в случае обрыва связи.

Заключение

Миграция с виртуального хостинга на собственный VPS — это важный шаг, который дает вашему проекту технологическую независимость, бескомпромиссную скорость загрузки страниц и железобетонную безопасность. Сам процесс не так страшен, если подходить к нему системно, проверять права на файлы и не забывать про бэкапы перед каждым действием.

И если вы сейчас находитесь в процессе масштабирования вашей ИТ-инфраструктуры и ищете надежную площадку для переезда, обратите внимание на наши услуги Shared Hosting / NVME VPS. Если ваш сайт пока не готов к консоли, наш быстрый виртуальный хостинг с прозрачными лимитами обеспечит отличный аптайм.


Автор статьиAnatolie Cohaniuc