Если сайт стал тормозить под нагрузкой, хостер ограничивает PHP-версию или понадобился Docker — пришло время разобраться, как перенести сайт на VPS и перестать зависеть от соседей по серверу. Инструкция ведёт от нулевой точки до рабочего сайта на новом сервере: подготовка, резервное копирование, загрузка файлов, перенос базы данных MySQL, настройка веб-сервера и финальная смена DNS-записей.
Если VPS ещё не выбран — в каталоге free-hosting.ru собраны 45+ проверенных провайдеров: подробнее.
Когда пора переходить с хостинга на VPS
Виртуальный хостинг — разумный старт, но у него есть потолок. Вот пять сигналов, что пора делать миграцию на виртуальный сервер.
- Сайт тормозит в часы пик. На общем хостинге ресурсы делятся между сотнями проектов. Сосед по серверу запустил тяжёлый процесс — страдаете вы.
- Хостер заморозил PHP-версию. CMS требует PHP 8.2, а на хостинге только 7.4 — проблема системная, и самостоятельно её не решить.
- Нужны cron-задачи или фоновые процессы. На shared-хостинге cron ограничен. VPS позволяет настроить планировщик как угодно.
- Требуется нестандартный стек. Node.js, Docker, Redis, кастомные модули — на виртуальном хостинге недоступны.
- Нужен root-доступ и контроль безопасности. Свой firewall, изолированное окружение, свои правила. При сравнении с обычным хостингом разница в правах очевидна: там — ограниченный доступ, здесь — полный root.
Что потребуется для переноса — список инструментов
Перенос сайта на VPS занимает от одного до трёх часов, если всё подготовить заранее. Основная часть времени уходит не на сам перенос, а на ожидание копирования файлов и пропагацию DNS. Заранее соберите всё необходимое.
- SSH-клиент — PuTTY (Windows), Terminal (macOS/Linux) или Windows Terminal
- FTP/SFTP-клиент — FileZilla или WinSCP для работы с файлами через графический интерфейс
- Доступ к панели управления текущего хостинга (cPanel, ISPmanager или другой)
- mysqldump или phpMyAdmin для создания дампа базы данных
- Реквизиты нового VPS: IP-адрес, root-пароль, номер порта SSH
- Доступ к DNS-панели регистратора домена
| Параметр | Где взять | Зачем нужен |
|---|---|---|
| IP-адрес VPS | Письмо от провайдера | SSH и A-запись DNS |
| Root-пароль | Письмо от провайдера | Первый вход на сервер |
| Данные БД | wp-config.php / config.php | Подключение CMS на новом сервере |
| Доступ к DNS | Панель регистратора | Смена A-записи |
Шаг 1. Выбор и подготовка VPS — как перенести сайт на VPS с правильного старта
Прежде чем развернуть сайт на VPS, нужно выбрать подходящий сервер. Для типичного WordPress-сайта с посещаемостью до 10 000 визитов в сутки хватит 1–2 ГБ RAM, 1–2 vCPU и SSD-диска от 20 ГБ. KVM-виртуализация предпочтительнее OpenVZ — она даёт изолированное ядро и предсказуемую производительность.
Геолокация сервера влияет на скорость загрузки: выбирайте ближе к основной аудитории. Если пользователи в России — смотрите VPS в России. Для европейской аудитории подойдут серверы в Германии или нидерландские VPS. Сравнить актуальные предложения можно в нашем каталоге, а для выбора по бюджету — отдельная подборка с разбором тарифов.
После покупки — первичная настройка: обновите пакеты (apt update && apt upgrade), создайте non-root пользователя с sudo, настройте SSH-ключи. Это 10–15 минут, которые существенно повышают безопасность боевого сервера.
Какую ОС выбрать
Для новичков редакция рекомендует Ubuntu 22.04 LTS или Debian 12. Оба дистрибутива имеют широкую документацию на ubuntu.com/server/docs, стабильные пакеты и активное сообщество — найти ответ на любой вопрос несложно. CentOS и AlmaLinux — вариант для тех, кто пришёл из корпоративного Linux-окружения и привык к rpm-пакетам.
Установка LAMP/LEMP-стека
LAMP — это Linux + Apache + MySQL + PHP. LEMP заменяет Apache на Nginx — он быстрее на статике и потребляет меньше памяти. Для WordPress чаще выбирают LEMP. Конфигурация Nginx/Apache на VPS начинается с установки: apt install nginx mysql-server php8.2-fpm php8.2-mysql. Затем — настройка PHP-FPM и виртуального хоста (virtualhost) под домен.
Шаг 2. Создание резервной копии на старом хостинге
Резервная копия обязательна — без неё ошибка при импорте БД означает потерю данных без возможности откатиться.
Два пути. Первый — через панель хостинга: в cPanel или ISPmanager найдите «Резервная копия», скачайте полный архив. Второй — вручную: скопировать файлы сайта через SFTP из папки public_html и создать дамп командой mysqldump -u username -p dbname > backup.sql. Обязательно заберите файлы сайта, .sql-дамп и конфиг CMS (wp-config.php для WordPress).
Важно: не удаляйте сайт на старом хостинге до тех пор, пока не проверите работу нового. Тарифный план можно отменить после 2–4 недель стабильной работы.
Если хостер недоступен или аккаунт заблокирован — при экстренной миграции порядок действий другой: там приоритет — восстановить сайт из любого доступного источника, а не делать полный бэкап.
Шаг 3. Загрузка файлов на VPS
Когда бэкап готов, пора переносить файлы на новый сервер. Способ выбирается исходя из объёма сайта и уровня владения терминалом.
Загрузка через SFTP (FileZilla)
FileZilla — самый наглядный вариант для тех, кто делает SFTP/SCP копирование файлов впервые. Откройте «Менеджер сайтов», создайте новое соединение: протокол SFTP, хост — IP вашего VPS, порт 22, логин и пароль. Перейдите в директорию назначения — стандартный путь /var/www/yourdomain.com/public_html/ — и перетащите файлы из локальной панели. После загрузки выставите права: chown -R www-data:www-data и chmod -R 755 на корневую папку сайта, иначе CMS не сможет записывать кэш и медиафайлы.
Загрузка через SCP/rsync
Для больших сайтов rsync быстрее SFTP — он передаёт только изменённые блоки. Базовая команда: rsync -avz /local/path/to/site/ user@your-vps-ip:/var/www/yourdomain.com/public_html/. Флаг —delete удаляет на сервере файлы, которых нет в источнике — используйте осторожно.
Шаг 4. Перенос базы данных
Перенести базу данных MySQL — ключевой и самый уязвимый этап. Ошибка здесь приведёт к тому, что сайт откроется с неверными данными или не откроется вовсе.
Подключитесь через SSH-подключение к серверу, войдите в MySQL и создайте базу: CREATE DATABASE, CREATE USER, GRANT ALL PRIVILEGES. Импортируйте дамп: mysql -u dbuser -p newdbname < backup.sql. Для больших дампов (от 50 МБ) предварительно загрузите файл на сервер через SCP. Если нужен графический интерфейс — установите Adminer, однофайловый аналог phpMyAdmin.
Для WordPress обновите параметры в файле wp-config.php: константы DB_NAME, DB_USER, DB_PASSWORD, DB_HOST. В таблице wp_options проверьте поля siteurl и home — там прописан старый домен. Замените через WP-CLI: wp search-replace ‘http://old-domain.com’ ‘http://new-domain.com’ —all-tables.
Шаг 5. Настройка веб-сервера и виртуального хоста
Файлы загружены, база импортирована — нужно объяснить веб-серверу, где лежит сайт и как его отдавать. Создайте файл конфигурации виртуального хоста в /etc/nginx/sites-available/yourdomain.com: пропишите server_name, root до папки сайта, index index.php и блок location ~ \.php$ с передачей запросов в PHP-FPM. Создайте симлинк в sites-enabled. Перед перезапуском проверьте синтаксис командой nginx -t — она покажет ошибки до того, как они выведут сервер из строя. Корректный файл nginx.conf — основа стабильной работы на production.
Установка SSL-сертификата через Certbot
Сразу установите SSL-сертификат — без него браузер выдаст предупреждение, а поисковики понизят в выдаче. Let’s Encrypt бесплатен, Certbot автоматизирует весь процесс: apt install certbot python3-certbot-nginx, затем certbot —nginx -d yourdomain.com -d www.yourdomain.com. Certbot сам пропишет SSL в конфиг Nginx. Подробные инструкции для всех ОС — в официальной документации Certbot. Включите автопродление: systemctl enable certbot.timer.
Шаг 6. Проверка сайта через hosts-файл до смены DNS
Прежде чем менять DNS-записи, проверьте новый сервер без публичного переключения трафика. Откройте файл hosts (Windows: C:\Windows\System32\drivers\etc\hosts, macOS/Linux: /etc/hosts), добавьте строку IP-VPS yourdomain.com www.yourdomain.com и сохраните с правами администратора. Браузер будет открывать домен с нового сервера — остальные пользователи этого не увидят. Проверьте главную, страницы, формы, авторизацию, изображения, SSL-замочек и корзину (если есть магазин). После проверки удалите строку из hosts-файла — иначе только вы будете на новом сервере, пока все остальные ходят на старый.
Шаг 7. Смена DNS и окончательный переезд
Сайт проверен, всё работает — время сменить DNS-записи. Войдите в панель регистратора домена, найдите A-запись и замените значение на IP нового VPS. Обновите и запись для www-поддомена. Пропагация DNS занимает от 15 минут до 48 часов — обычно 1–4 часа. Чтобы ускорить, снизьте TTL до 300 секунд за сутки до переноса. После пропагации проверьте сайт с разных устройств и убедитесь в работе SSL-сертификата.
Если ещё выбираете провайдера — в каталоге free-hosting.ru актуальные цены и отзывы: выбрать VPS.
Типичные ошибки при переносе сайта на VPS
По нашему опыту, большинство проблем при переносе предсказуемы и легко избегаемы.
- Не сделали бэкап. Ошибка при импорте БД без бэкапа — потеря данных без шансов на восстановление.
- Забыли обновить siteurl и home в базе WordPress. Сайт откроется, но внутренние ссылки будут вести на старый домен, вёрстка сломается.
- Неправильные права на папки. CMS не сможет писать файлы, загружать медиа и обновляться — проверьте chown и chmod сразу после переноса.
- Разные версии PHP. На хостинге мог стоять PHP 7.4, на VPS — 8.2. Часть плагинов и тем несовместима. Проверьте командой php -v до запуска сайта.
- Удалили сайт на старом хостинге до пропагации DNS. Часть пользователей ещё идёт на старый сервер — и видит пустоту.
- Не перевыпустили SSL. Сертификат привязан к серверу, не к домену — на новом сервере нужен новый. Установите через Certbot.
- Не обновили почтовые записи. SPF/DKIM/DMARC привязаны к старому серверу — письма упадут в спам или не отправятся.
Перенос WordPress на VPS — особенности
WordPress — самая распространённая CMS, и у неё есть специфика при переносе WordPress на VPS. Для небольших сайтов удобно использовать плагины-миграторы: All-in-One WP Migration или WP Migrate DB. В бесплатных версиях лимит на размер архива — обычно до 512 МБ, для крупных проектов ручной перенос надёжнее.
Главная точка боли при ручном переносе — таблица wp_options. Поля siteurl и home хранят полный URL сайта, и при переносе в них остаётся старый адрес. Обновите через WP-CLI: wp search-replace ‘https://old-domain.com’ ‘https://new-domain.com’ —all-tables. WP-CLI корректно обрабатывает сериализованные данные в wp_postmeta — phpMyAdmin с ними не справляется. Подробнее о выборе и конфигурации сервера при выборе VPS под WordPress — в отдельном материале.
Что делать после переноса — финальный чеклист
Сайт на новом сервере запущен. Пройдитесь по этому списку до закрытия задачи.
- Сайт открывается по домену без ошибок, без редиректных петель.
- SSL активен — в браузере замочек, HTTP редиректит на HTTPS.
- Формы отправляются, письма доходят (проверьте папку «Спам»).
- Изображения и медиафайлы загружаются на всех страницах.
- Корзина и оплата работают (для интернет-магазинов — обязательно).
- Индексация открыта: в robots.txt нет Disallow: /.
- Яндекс.Метрика и GA4 передают данные в режиме реального времени.
- Cron-задачи восстановлены через crontab -e, если они были на старом сервере.
- Мониторинг uptime подключён — UptimeRobot или аналог.
- Старый хостинг отменяется после 2–4 недель стабильной работы.
Ну и в заключение
Перенос сайта на VPS — разовая операция. После неё вы получаете выделенные ресурсы, root-доступ и возможность настроить стек под любые задачи. Небольшой WordPress переносится за пару часов, крупный интернет-магазин — за полдня.
Тест через hosts-файл до смены DNS избавляет от ситуации, когда тысячи пользователей видят сломанный сайт. После запуска держите старый хостинг ещё 2–4 недели — это дешевле, чем экстренное восстановление.
Выбрать подходящий VPS под ваши задачи можно в каталоге free-hosting.ru — 45+ провайдеров, актуальные цены, отзывы реальных пользователей: перейти в каталог.