← Все статьи
Полезные статьи

Как перенести сайт или сервер к другому хостингу без простоя

Пошаговый перенос сайта на новый хостинг без потери данных и простоя: TTL, копирование файлов и базы, проверка через hosts, переключение DNS и SSL.

Главный страх при смене хостинга — что сайт «ляжет» на сутки, потеряются заказы и письма. На практике простоя не бывает, если соблюсти одно правило: новый сервер полностью готов и проверен ещё до того, как на него переключают домен.

Старый хостинг при этом продолжает работать. Посетители ничего не замечают: они просто в какой-то момент начинают попадать на новый сервер.

Разбираем перенос обычного сайта на PHP с базой MySQL — схема та же для любого проекта.

Как это работает

Домен указывает на IP-адрес через DNS-запись. Пока запись не изменилась, весь трафик идёт на старый сервер.

Значит, порядок такой:

  1. Поднимаем новый сервер и копируем на него сайт
  2. Проверяем, что копия работает — не трогая домен
  3. Переключаем DNS-запись
  4. Старый сервер оставляем включённым ещё на пару недель

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

Шаг 0. За сутки до переезда снизить TTL

TTL — время, которое провайдеры кэшируют DNS-запись. Если там стоят стандартные 4 часа, после переключения часть посетителей ещё полдня будет попадать на старый сервер.

Зайдите в панель управления доменом и поставьте TTL для A-записи 300 секунд. Сделать это нужно за сутки до переезда — чтобы старое значение успело истечь у всех провайдеров.

После успешного переезда TTL возвращают на прежнее значение.

Шаг 1. Подготовить новый сервер

Закажите VPS и выберите Ubuntu 24.04. Конфигурацию берите не меньше той, что была на старом хостинге: если сайт работал на 2 ГБ памяти, на 1 ГБ он не поедет.

Как подобрать параметры под нагрузку — разбирали отдельно: Какой VPS выбрать.

Подключитесь к серверу:

ssh root@НОВЫЙ_IP

Если подключаетесь к своему серверу впервые: Как подключиться к VPS по SSH.

Установите тот же набор, что был на старом хостинге:

apt update && apt upgrade -y
apt install nginx mysql-server php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-curl php8.3-gd unzip -y

Версию PHP берите ту же, что на старом сервере. Проверить её на старом хостинге:

php -v

Перенос на более новую версию PHP заодно с переездом — частая причина «белого экрана» после переключения. Сначала переезд, потом обновление версий.

Шаг 2. Скопировать файлы

Самый удобный инструмент — rsync: он копирует только изменившиеся файлы, поэтому вторая синхронизация занимает секунды.

Выполняется на старом сервере:

rsync -avz --progress /var/www/ root@НОВЫЙ_IP:/var/www/

Если на старом хостинге нет SSH, а только FTP — качайте архивом через панель, а на новый сервер загружайте по SCP:

scp site.zip root@НОВЫЙ_IP:/var/www/

Распаковка на новом сервере:

cd /var/www && unzip site.zip

Не забудьте про скрытые файлы: .htaccess, .env, .user.ini. При копировании архивом они часто теряются — проверьте, что они на месте:

ls -la /var/www/site/

Шаг 3. Перенести базу данных

На старом сервере выгрузите дамп:

mysqldump -u root -p --single-transaction имя_базы > dump.sql

Ключ --single-transaction позволяет снять копию без блокировки таблиц — сайт продолжает работать во время выгрузки.

Перенесите файл:

scp dump.sql root@НОВЫЙ_IP:/root/

На новом сервере создайте базу и пользователя:

mysql -u root -p
CREATE DATABASE имя_базы CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'имя_пользователя'@'localhost' IDENTIFIED BY 'пароль';
GRANT ALL PRIVILEGES ON имя_базы.* TO 'имя_пользователя'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Загрузите дамп:

mysql -u root -p имя_базы < /root/dump.sql

Пропишите новые доступы в конфиге сайта — wp-config.php, .env, configuration.php в зависимости от движка.

Шаг 4. Настроить веб-сервер

Простой конфиг nginx для сайта на PHP:

nano /etc/nginx/sites-available/site
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/site;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}

Включите и проверьте конфигурацию:

ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Выставьте владельца файлов, иначе сайт не сможет писать в папку загрузок:

chown -R www-data:www-data /var/www/site

Шаг 5. Проверить сайт до переключения домена

Это ключевой шаг, который и обеспечивает переезд без простоя. Сайт открывают по новому IP так, будто домен уже переключён — но только на своём компьютере.

Откройте файл hosts от имени администратора:

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • macOS и Linux: /etc/hosts

Добавьте строку:

НОВЫЙ_IP  example.com  www.example.com

Теперь ваш браузер идёт на новый сервер, а все остальные — по-прежнему на старый. Пройдите по сайту как обычный посетитель:

  • главная, каталог, карточка товара, поиск
  • форма обратной связи — письмо доходит?
  • вход в админку
  • оформление заказа
  • загрузка картинки в админке — права на папки в порядке?

Смотрите ошибки в логах, пока проверяете:

tail -f /var/log/nginx/error.log

Исправили всё — удалите строку из hosts.

Шаг 6. Выпустить SSL-сертификат

Сертификат можно выпустить только после переключения DNS: Let's Encrypt проверяет, что домен ведёт на этот сервер. Поэтому порядок такой — сначала DNS, сразу следом сертификат.

Подготовьте команду заранее, чтобы выполнить её сразу после переключения:

apt install certbot python3-certbot-nginx -y
certbot --nginx -d example.com -d www.example.com

Certbot сам пропишет редирект с HTTP на HTTPS и настроит автопродление.

Шаг 7. Финальная синхронизация и переключение

Если сайт статичный и контент не меняется — просто переключайте DNS.

Если на сайте идут заказы или комментарии, последовательность такая:

1. Включите на старом сайте режим обслуживания или просто выберите ночное время с минимальным трафиком.

2. Догоните файлы — это займёт секунды, потому что rsync копирует только изменения:

rsync -avz --delete /var/www/ root@НОВЫЙ_IP:/var/www/

3. Снимите свежий дамп базы и залейте на новый сервер:

mysqldump -u root -p --single-transaction имя_базы > final.sql
scp final.sql root@НОВЫЙ_IP:/root/
mysql -u root -p имя_базы < /root/final.sql

4. Смените A-запись домена на новый IP в панели регистратора.

5. Сразу выпустите сертификат командой из шага 6.

6. Снимите режим обслуживания.

С TTL в 300 секунд переключение занимает около пяти минут. Всё это время старый сервер продолжает отвечать, поэтому сайт доступен непрерывно.

Шаг 8. Что проверить после переезда

Убедитесь, что домен уже указывает на новый сервер:

nslookup example.com

Дальше по списку:

  • сайт открывается по HTTPS, замок в браузере зелёный
  • работает версия с www и без
  • письма с сайта доходят
  • перенесены задания cron — про них забывают чаще всего:
crontab -l

Выведите список на старом сервере и перенесите нужные строки на новый.

Шаг 9. Не удалять старый сервер сразу

Держите старый хостинг оплаченным ещё две недели. Причины две.

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

Пока старый сервер жив, всё это можно спокойно дозабрать.

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

Меняют DNS первым делом. Тогда сайт действительно лежит — ровно столько, сколько идёт перенос. Правильный порядок обратный: DNS переключают последним.

Обновляют PHP или MySQL заодно с переездом. Если сайт сломается, будет непонятно, из-за переноса или из-за версии. Обновляйте после, отдельным шагом.

Забывают про cron. Выгрузки, рассылки, автоматические задачи молча перестают работать — и это замечают через неделю.

Забывают про почту. Если почтовые ящики были на старом хостинге, они не переезжают вместе с сайтом. Либо переносите отдельно, либо заранее заводите почту на отдельном сервисе.

Не меняют MX-записи. После переключения A-записи почта может пойти не туда — проверьте MX-записи домена отдельно.

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

Сколько длится переезд? Подготовка нового сервера — час-полтора. Само переключение — около пяти минут. Общая продолжительность зависит от объёма данных: сайт на 20 ГБ копируется дольше, чем на 500 МБ.

Будет ли сайт недоступен? При правильном порядке — нет. Оба сервера работают одновременно, домен просто переключается с одного на другой.

Как перенести сайт на WordPress? Точно так же: файлы + база. Плагины миграции тоже работают, но при большом сайте чаще упираются в лимиты. Ручной перенос надёжнее.

Что делать, если на старом хостинге нет SSH? Файлы забирать по FTP, базу — через phpMyAdmin (экспорт в .sql). Дальше всё по инструкции.

Влияет ли переезд на позиции в поиске? Нет, если адреса страниц не меняются и сайт доступен. Поисковики видят только смену IP, на ранжирование это не влияет. А вот скорость ответа сервера влияет — и обычно после переезда на VPS она улучшается.

Можно ли перенести сразу несколько сайтов? Да, на один VPS. Каждому сайту — свой конфиг nginx и своя база. Если проектов много и они конфликтуют по версиям, удобнее разнести их по контейнерам: Docker на VPS.

Итог

Переезд без простоя — это не сложная техника, а правильный порядок действий. Новый сервер готовится и проверяется, пока старый работает; DNS переключается последним, когда всё уже протестировано через hosts.

Заложите на перенос спокойный вечер, не удаляйте старый хостинг две недели — и посетители не заметят, что сайт сменил адрес.

Выбрать сервер для переезда →

Команда Puws.Cloud
Puws.Cloud
Начать

СЕРВЕР ДЛЯ ВАШЕГО ПРОЕКТА

Начните
с тарифа.

ПОЛЕЗНОЕ О СЕРВЕРАХИнструкции
и советы.
Открыть блог
Наш Аптайм