Как перенести сайт на VPS без простоя: пошаговый план

Переезд на VPS пугает не сложностью, а риском: страшно, что сайт пропадёт на сутки. Этого можно избежать полностью, если не переключать домен первым действием. Правильный порядок такой: поднять копию рядом, убедиться, что она работает, и только потом направить на неё посетителей.
Шаг 0. Подготовка за сутки
Уменьшите TTL у DNS-записей домена до 300 секунд. TTL — это время, которое провайдеры кешируют ответ. Если сейчас там стоят стандартные 86400 секунд, переключение растянется на сутки; при 300 секундах мир увидит новый адрес за пять минут.
Сделать это нужно заранее — за сутки до переезда, чтобы старое значение успело истечь везде.
Заодно соберите список того, что кроме файлов и базы живёт на старом хостинге: почтовые ящики на домене, задания cron, SSL-сертификаты, поддомены.
Шаг 1. Подготовить сервер
В панели NodexGo нажмите «Создать сервер»: выберите локацию (рядом с каждой показан ваш пинг), тариф, образ системы и подтвердите заказ. Сервер будет готов примерно через минуту, IP и пароль root придут в панель и на почту.
Локацию имеет смысл брать ближе к аудитории сайта, а тариф — с небольшим запасом по памяти: перейти на старший тариф можно потом одной кнопкой «Увеличить мощности», диск и IP при этом сохраняются.
Германия, Финляндия или Нидерланды, NVMe-диски, оплата за 30 дней.
Развернуть серверВыполните базовую настройку: обновления, отдельный пользователь, ключи SSH, файрвол. Установите тот же набор ПО, что на старом хостинге, и по возможности тех же версий — особенно это касается PHP и MySQL.
Разница в версии PHP между старым и новым сервером — самая частая причина «на новом сервере белый экран». Посмотреть текущую версию на старом хостинге:
php -vШаг 2. Перенести файлы
Если на старом хостинге есть SSH, самый надёжный способ — rsync: он умеет докачивать и не боится обрыва связи.
rsync -avz --progress -e ssh user@старый-хост:/var/www/site/ /var/www/site/Если SSH нет, забирайте по FTP, но обязательно проверьте, что скачались скрытые файлы — .htaccess и .env теряются чаще всего.
Шаг 3. Перенести базу данных
На старом сервере снимаем копию. Ключ --single-transaction делает её согласованной, не блокируя таблицы, — сайт продолжает работать во время выгрузки.
mysqldump -u пользователь -p --single-transaction --routines имя_базы > dump.sqlНа новом сервере создаём базу и заливаем дамп:
mysql -u пользователь -p имя_базы < dump.sqlПосле этого поправьте реквизиты подключения в конфиге сайта: wp-config.php у WordPress, .env у Laravel, settings.py у Django.
Шаг 4. Проверить, не трогая домен
Это ключевой шаг, который чаще всего пропускают. Откройте сайт на новом сервере через файл hosts на своём компьютере — так вы увидите новую копию, а все остальные продолжат видеть старую.
В Linux и macOS это /etc/hosts, в Windows — C:\Windows\System32\drivers\etc\hosts. Добавьте строку с IP нового сервера:
203.0.113.10 example.com www.example.comТеперь пройдите по сайту как посетитель: главная, каталог, форма обратной связи, вход в админку, оплата. Проверьте загрузку файлов и отправку почты. Всё, что найдёте сейчас, вы чините спокойно — посетители об этом не знают.
Шаг 5. Синхронизировать изменения и переключить DNS
Если между копированием и проверкой прошло время, повторите rsync и выгрузку базы — заказы и комментарии, появившиеся за эти часы, иначе потеряются. На время финальной синхронизации имеет смысл включить на старом сайте режим обслуживания на несколько минут.
Затем меняйте A-запись домена на новый IP. При TTL 300 секунд переключение занимает минуты. Старый сервер не выключайте ещё пару дней: часть провайдеров держит кеш дольше обещанного.
Шаг 6. После переезда
Выпустите SSL-сертификат — делать это нужно после переключения DNS, потому что проверка домена идёт по его текущему адресу:
certbot --nginx -d example.com -d www.example.comПеренесите задания cron, проверьте отправку почты (после переезда её часто начинают класть в спам — настройте SPF и DKIM), верните TTL к обычному значению и настройте резервное копирование. На новом сервере за бэкапы отвечаете вы, а не хостинг.
Если что-то пошло не так
Пока домен не переключён, откатиться нечего — старый сайт работает. После переключения самый быстрый откат: вернуть прежнюю A-запись, она разойдётся за те же пять минут.
Если сломался сам сервер и SSH не отвечает, в его карточке в панели есть web-консоль VNC — она работает в обход сети и SSH. Рядом кнопки «Перезагрузить» и «Переустановить ОС», если проще начать с чистого листа.
Чек-лист
TTL уменьшен заранее · файлы перенесены вместе со скрытыми · база выгружена с --single-transaction · версии PHP и MySQL совпадают · сайт проверен через hosts до переключения · финальная синхронизация сделана · DNS переключён · SSL выпущен · cron перенесён · почта проверена · бэкапы настроены · старый хостинг выключен через несколько дней.
Если переносите первый раз, возьмите сервер минимальной конфигурации и потренируйтесь на тестовом домене — час практики снимает почти все страхи.
Тариф от 1 vCPU и 2 ГБ — достаточно, чтобы потренироваться на копии сайта.
Посмотреть тарифы