⟵ Все статьи
Читать на:

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

Как перенести сайт на 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 ГБ — достаточно, чтобы потренироваться на копии сайта.

Посмотреть тарифы

Мы используем файлы cookie: необходимые — для входа в аккаунт и языка интерфейса, аналитические — чтобы понимать, какими страницами пользуются. Сторонних рекламных систем у нас нет. Подробнее