Перенос сайта на VPS пугает в основном одним: страхом, что во время переезда сайт «ляжет», посетители уйдут, а заказы потеряются. На практике переезд с хостинга на VPS можно сделать с нулевым простоем — секрет в правильном порядке действий. Сначала вы поднимаете полную копию сайта на новом сервере, проверяете её, и только потом переключаете DNS. Старый хостинг всё это время продолжает работать. В этой инструкции — весь процесс по шагам с рабочими командами для Ubuntu 24.04 LTS: от подготовки сервера до финальной синхронизации базы данных.
Почему переезд без простоя вообще возможен
Домен связан с сервером через DNS: A-запись указывает, на какой IP-адрес отправлять посетителей. Пока A-запись смотрит на старый хостинг, весь трафик идёт туда — что бы вы ни делали на новом VPS. Это и есть окно для безопасного переезда:
- Старый сайт работает и принимает посетителей.
- Вы параллельно разворачиваете и тестируете копию на VPS.
- Когда копия готова и проверена, меняете A-запись.
- Посетители плавно «перетекают» на новый сервер по мере обновления DNS-кешей.
Единственная переменная — скорость обновления DNS, и ей можно управлять через параметр TTL. Об этом первый шаг.
Шаг 1. За 1–2 дня до переезда: снизьте TTL
TTL (time to live) — время в секундах, на которое DNS-серверы и провайдеры кешируют вашу A-запись. Если TTL равен 86400 (сутки), часть посетителей будет ходить на старый сервер ещё сутки после переключения. Поэтому за 24–48 часов до переезда зайдите в панель управления DNS и уменьшите TTL A-записи домена до 300 секунд (5 минут).
Заодно проверьте, что у вас есть все доступы:
- панель управления DNS (у регистратора домена или на старом хостинге);
- SSH или файловый менеджер старого хостинга;
- логин и пароль базы данных (смотрите в конфиге сайта, для WordPress —
wp-config.php); - root-доступ к новому VPS.
Если DNS сейчас обслуживает старый хостинг, разумно заранее перенести зону к регистратору или в сторонний DNS-сервис — иначе после отказа от хостинга вы потеряете управление записями. Подробно о записях мы рассказали в статье о привязке домена к VPS.
Шаг 2. Подготовьте VPS: сервер под сайт за час
Пока старый хостинг спокойно работает, разверните новый сервер. Если VPS ещё нет — на Cheap-Host тариф Start (6 vCPU, 8 ГБ RAM, 96 ГБ NVMe, 450 ₽/мес) выдаётся автоматически за 45–60 секунд: IP и SSH-доступ приходят сразу, ждать активации не нужно. Для сайта, переезжающего с виртуального хостинга, этого запаса хватит с избытком, а NVMe-диск сам по себе заметно ускорит генерацию страниц.
Подключитесь по SSH и установите стек LEMP (Nginx + MySQL + PHP). Для Ubuntu 24.04:
apt update && apt upgrade -y
apt install -y nginx mysql-server php8.3-fpm php8.3-mysql php8.3-xml \
php8.3-curl php8.3-gd php8.3-mbstring php8.3-zip php8.3-intl
mysql_secure_installation
Сразу закройте лишнее файрволом:
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
Создайте базу и пользователя с теми же именами, что на старом хостинге, — так не придётся править конфиги сайта:
mysql -e "CREATE DATABASE mysite_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -e "CREATE USER 'mysite_user'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';"
mysql -e "GRANT ALL PRIVILEGES ON mysite_db.* TO 'mysite_user'@'localhost'; FLUSH PRIVILEGES;"
Базовую пост-установочную настройку сервера (пользователь sudo, SSH-ключи, fail2ban) мы разобрали в чек-листе первых шагов после покупки VPS — пройдитесь по нему до переноса, а не после.
Шаг 3. Перенесите файлы сайта
Лучший инструмент — rsync: он копирует по SSH, сжимает данные на лету и при повторном запуске докачивает только изменённые файлы. Запускайте с нового VPS, забирая файлы со старого хостинга:
apt install -y rsync
mkdir -p /var/www/mysite
rsync -avz --progress \
user@old-host.example.com:/home/user/public_html/ \
/var/www/mysite/
Если на старом хостинге нет SSH, соберите архив через панель управления, скачайте его и загрузите на VPS:
scp site-backup.tar.gz root@IP_НОВОГО_VPS:/var/www/
tar -xzf /var/www/site-backup.tar.gz -C /var/www/mysite/
После копирования выставьте владельца, иначе PHP не сможет писать в каталоги загрузок и кеша:
chown -R www-data:www-data /var/www/mysite
Шаг 4. Перенесите базу данных
На старом хостинге снимите дамп (через SSH или phpMyAdmin — «Экспорт» в формате SQL):
mysqldump -u mysite_user -p --single-transaction --routines \
mysite_db > dump.sql
Флаг --single-transaction важен: дамп InnoDB-таблиц снимается без блокировки, и работающий сайт этого даже не заметит. Перенесите файл и импортируйте на VPS:
scp dump.sql root@IP_НОВОГО_VPS:/root/
mysql -u mysite_user -p mysite_db < /root/dump.sql
Проверьте конфиг сайта: хост базы должен быть localhost, имя, пользователь и пароль — совпадать с созданными на шаге 2.
Шаг 5. Проверьте сайт через файл hosts — до смены DNS
Это ключевой шаг всей схемы «без простоя». Вы заставляете только свой компьютер считать, что домен уже указывает на новый сервер, — и тестируете боевую копию, пока весь мир ходит на старую.
Сначала настройте Nginx на VPS — минимальный конфиг /etc/nginx/sites-available/mysite:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/mysite;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Теперь на своём компьютере добавьте строку в файл hosts (C:\Windows\System32\drivers\etc\hosts в Windows, /etc/hosts в macOS и Linux):
203.0.113.10 example.com www.example.com
Откройте сайт в браузере и проверьте всё, что важно: главную, внутренние страницы, админку, формы, корзину, загрузку файлов. Ошибки исправляете спокойно — посетители их не видят. После проверки строку из hosts удалите.
Шаг 6. SSL-сертификат и переключение DNS
Сертификат стоит получить до массового переключения трафика, чтобы посетители не увидели предупреждение браузера. Один нюанс: Let's Encrypt проверяет домен по DNS, поэтому вариантов два — либо перенести существующие файлы сертификата со старого хостинга, либо выпустить новый сразу после смены A-записи (займёт минуту). Команда для Ubuntu 24.04:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com
Детали автопродления — в статье про SSL-сертификат Let's Encrypt.
Теперь само переключение: в панели DNS измените A-записи @ и www на IP нового VPS. Благодаря TTL 300 основная масса посетителей перейдёт на новый сервер за 5–15 минут. Проверить, как расходится запись, можно так:
dig +short example.com A
Шаг 7. Финальная синхронизация и вывод старого хостинга
Пока DNS обновлялся, часть посетителей ещё попадала на старый сервер: там могли появиться новые заказы, комментарии, загруженные файлы. Поэтому через час-два после переключения повторите синхронизацию:
rsync -avz user@old-host.example.com:/home/user/public_html/ /var/www/mysite/
Для динамичных сайтов (магазин, форум) повторно снимите и импортируйте дамп базы. Если изменений много, на время финального дампа можно перевести старый сайт в режим обслуживания на 2–3 минуты — это единственный «простой» во всей схеме, и он необязателен.
Старый хостинг не отключайте минимум 48–72 часа: отдельные провайдеры игнорируют TTL и держат кеш дольше. И сразу настройте бэкапы на новом сервере — теперь это ваша зона ответственности, стратегию мы описали в статье про резервное копирование VPS.
Типичные ошибки при переносе
| Ошибка | Последствие | Как избежать |
|---|---|---|
| Не снизили TTL заранее | Трафик «размазан» между серверами сутки и больше | TTL 300 за 24–48 часов до переезда |
| Сменили DNS до проверки копии | Посетители видят ошибки на недонастроенном сервере | Тест через файл hosts (шаг 5) |
| Забыли финальную синхронизацию | Потеряны заказы и файлы за время переезда | Повторный rsync и дамп после смены DNS |
Дамп без --single-transaction | Блокировка таблиц, сайт «висит» во время дампа | Использовать флаг для InnoDB |
| Не выставили права www-data | Не работают загрузка файлов и кеш | chown -R www-data:www-data |
| Отключили старый хостинг в день переезда | Часть посетителей попадает «в никуда» | Держать старый сервер 48–72 часа |
FAQ
Сколько времени занимает перенос сайта на VPS?
Небольшой сайт на WordPress переносится за 2–3 часа: час на настройку сервера, 30–60 минут на копирование файлов и базы, остальное — проверка. Ещё 24–48 часов закладывайте заранее на снижение TTL DNS-записей.
Будет ли сайт недоступен во время переезда?
Нет, если делать по схеме из статьи: старый хостинг продолжает обслуживать посетителей, пока вы настраиваете и проверяете копию на VPS. Простой сводится к времени обновления DNS — при TTL 300 секунд это минуты.
Что делать с письмами и заказами, пришедшими во время смены DNS?
Часть посетителей какое-то время попадает на старый сервер. Поэтому после переключения DNS выполните финальную синхронизацию файлов и базы, а старый хостинг отключайте не раньше чем через 48–72 часа.
Какой VPS взять для переезда небольшого сайта?
Для сайта, который жил на виртуальном хостинге, достаточно тарифа уровня Start у Cheap-Host: 6 vCPU, 8 ГБ RAM, 96 ГБ NVMe за 450 ₽/мес. Этого хватает WordPress-сайту с посещаемостью в десятки тысяч визитов в день.
Можно ли переносить сайт без доступа по SSH на старом хостинге?
Да. Соберите архив файлов через файловый менеджер панели хостинга, скачайте дамп базы через phpMyAdmin, затем загрузите всё на VPS по scp. Это медленнее rsync, но результат тот же.
Вывод
Переезд с хостинга на VPS без простоя — это не магия, а дисциплина: снизить TTL заранее, поднять и проверить копию через файл hosts, переключить DNS и не забыть финальную синхронизацию. Каждый шаг обратим, а старый хостинг всё время остаётся страховкой. Если сервер для переезда ещё не выбран — у Cheap-Host тариф Start от 450 ₽/мес: 6 vCPU, 8 ГБ RAM, NVMe, KVM с полным root, безлимитный трафик и выдача сервера за минуту. Развернуть VPS можно на cheap-host.onl и перенести сайт уже сегодня, а вопросы по переезду задать поддержке 24/7 — там отвечают без шаблонов.