Перенос сайта на VPS: пошаговое руководство
Обновлено 5 мин чтенияКоманда DNSPeek
Чтобы перенести сайт на VPS, сначала подготовьте сервер: обновления, SSH-ключи, файрвол и тот же веб-стек, на котором сайт работает сегодня. Скопируйте файлы и базу данных, настройте виртуальный хост для своего домена и проверьте сайт на IP VPS под настоящим доменом до смены DNS. Переключите с коротким TTL, выпустите сертификат, а почту держите у отдельного провайдера, а не на VPS.
Что меняется, когда вы уходите с виртуального хостинга
На виртуальном хостинге провайдер отвечает за веб-сервер, PHP, базу данных, почту, резервные копии и обновления безопасности. На неуправляемом VPS всё это теперь ваше. Преимущество — контроль и предсказуемые ресурсы; цена — ничего не настроено, пока вы это не настроите. Планируйте переезд как два проекта: сначала соберите сервер, затем перенесите на него сайт.
| Задача | Виртуальный хостинг | Неуправляемый VPS |
|---|---|---|
| Обновления безопасности | Хостинг | Вы (или автоматические обновления) |
| Веб-сервер, PHP, база данных | Предустановлены | Вы устанавливаете и настраиваете их |
| Хостинг почты | Обычно входит | Лучше держать у отдельного провайдера |
| Резервные копии | Часто входят | Вы настраиваете их, желательно вне сервера |
| Сертификаты | Автоматически | Certbot или похожий ACME-клиент |
Подготовьте сервер
Начните с поддерживаемого выпуска Linux. Команды ниже приведены для Ubuntu или Debian; для других дистрибутивов адаптируйте названия пакетов.
# Updates and a non-root user with sudo
apt update && apt upgrade -y
adduser deploy && usermod -aG sudo deploy
# Firewall: SSH, HTTP and HTTPS only
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
# Automatic security updates
apt install -y unattended-upgradesВойдите по SSH-ключу, а затем отключите вход по паролю для SSH. Установите стек, нужный сайту, например nginx или Apache, PHP-FPM той же версии и с теми же расширениями, что и на старом хостинге, и MySQL или MariaDB. Одинаковая версия PHP убережёт от сюрпризов; обновите её позже отдельным шагом.
Перенос сайта шаг за шагом
Шаг 1: Понизьте TTL
За день до переключения установите для A-записей TTL 300 секунд. Текущее значение проверьте с помощью проверки TTL.
Шаг 2: Защитите VPS и установите стек
Примените обновления, создайте пользователя с sudo, включите SSH-ключи и файрвол, а затем установите нужные сайту версии веб-сервера, PHP и базы данных.
Шаг 3: Скопируйте файлы
Скопируйте сайт командой
rsync -avzчерез SSH или скачайте архив со старого хостинга и загрузите его на VPS. Назначьте владельцем пользователя веб-сервера.Шаг 4: Импортируйте базу данных
Экспортируйте её на старом хостинге, создайте базу данных и пользователя на VPS, импортируйте дамп и обновите конфигурацию приложения новыми учётными данными.
Шаг 5: Настройте виртуальный хост
Добавьте блок server для домена и www, перепишите правила .htaccess и перезагрузите веб-сервер.
Шаг 6: Проверьте на IP VPS до смены DNS
Создайте ссылку-превью с доменом и IP VPS и, пока не установлен сертификат, используйте режим «Только HTTP» или «Пропускать проверку». Пройдитесь по сайту, отправьте формы, войдите в аккаунт.
Шаг 7: Запустите QA-отчёт
Просканируйте превью с помощью QA-отчёта, чтобы найти стандартные страницы веб-сервера, ошибки 502 от PHP-FPM, отсутствующие правила rewrite и ошибки PHP.
Шаг 8: Переключите DNS и выпустите сертификат
Выполните финальную синхронизацию файлов и базы данных, направьте A-записи на VPS, затем выпустите сертификат и следите за распространением с помощью проверки распространения DNS.
Настройте виртуальный хост
Веб-сервер выбирает сайт по доменному имени в запросе. Настройте блок server сразу для example.com и www.example.com:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public;
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.2-fpm.sock;
}
}Если на старом хостинге сайт полагался на правила .htaccess, перепишите их для nginx: человекопонятные URL, редиректы и ограничения доступа сами не переносятся. Измените путь к сокету PHP-FPM в соответствии с установленной версией. Проверяйте конфигурацию командой nginx -t перед каждой перезагрузкой и проверьте настройки пула PHP-FPM: стандартное число рабочих процессов невелико, и нагруженный сайт, которому не хватает процессов, отвечает ошибками 502 или 504.
HTTPS до переключения
Обычная HTTP-проверка Let’s Encrypt работает только тогда, когда домен уже указывает на VPS. Есть три варианта: выпустить сертификат сразу после переключения (несколько минут на обычном HTTP или с самоподписанным сертификатом), воспользоваться DNS-проверкой, которая работает до переключения, если у вашего DNS-провайдера есть API, или скопировать существующий сертификат со старого хостинга.
Для проверки новый VPS без какого-либо сертификата работает с превью DNSPeek в режиме Только HTTP: посетители всё равно открывают превью по HTTPS, а DNSPeek общается с сервером по обычному HTTP. Сначала настройте приложение доверять HTTPS прокси, иначе редирект на принудительный HTTPS зациклится. Настройки PHP и nginx приведены в документации: Сервер без SSL.
Почта: не переносите её на VPS
Если старый виртуальный хостинг обслуживал и вашу почту, переезд — хороший повод их разделить. Качественно поддерживать почтовый сервер (фильтрация спама, репутация, DKIM, списки блокировки) — отдельная работа, а многие облачные провайдеры по умолчанию блокируют исходящий порт 25. Перенесите ящики к отдельному почтовому провайдеру, обновите MX, SPF, DKIM и DMARC, а транзакционные письма сайта отправляйте через SMTP-сервис с аутентификацией. Проверьте записи с помощью проверки MX-записей, проверки SPF-записи и проверки DMARC-записи.
После переключения
- Выпустите или проверьте сертификат с помощью проверки SSL.
- Настройте резервные копии, которые хранятся вне сервера: дампы базы данных и файлы — в объектное хранилище или на другую машину, и проверьте восстановление.
- Добавьте базовый мониторинг: проверки доступности, места на диске и срока действия сертификата.
- Воссоздайте cron-задачи со старого хостинга.
- Пройдите чек-лист после переезда.
Чек-лист переноса на VPS
VPS
- Обновления применены, автоматические обновления включены
- Пользователь с sudo вместо root, SSH-ключи, вход по паролю отключён
- Файрвол разрешает только SSH, HTTP и HTTPS
- Та же версия PHP и расширения, что и на старом хостинге
- Файлы скопированы, владелец и права доступа установлены
- База данных импортирована, конфигурация приложения обновлена
- Виртуальный хост для домена и www; правила rewrite переписаны
- Сайт проверен на IP VPS с помощью ссылки-превью
- QA-отчёт без критичных замечаний
- Почта перенесена к отдельному провайдеру; MX, SPF, DKIM, DMARC настроены
- Финальная синхронизация, DNS переключён, сертификат выпущен
- Резервные копии вне сервера и проверенное восстановление
- Мониторинг доступности и диска настроен
Частые вопросы
Быстрее ли VPS, чем виртуальный хостинг?
Часто да, потому что процессор и память зарезервированы для вас, а не разделены со многими другими сайтами. Но скорость всё равно зависит от настройки: параметры PHP-FPM, кеширование и база данных важны не меньше, чем железо.
Можно ли получить SSL-сертификат на VPS до смены DNS?
Да, через DNS-проверку, если ваш DNS-провайдер её поддерживает, или скопировав существующий сертификат со старого хостинга. Стандартная HTTP-проверка работает только тогда, когда домен уже указывает на VPS.
Как проверить сайт на VPS до того, как направить на него домен?
Запрашивайте сайт с IP VPS под его настоящим доменом. Ссылка-превью делает это в любом браузере, и ею можно поделиться; запись в файле hosts делает это на вашем компьютере. Если открыть просто IP, обычно показывается стандартная страница веб-сервера.
Стоит ли размещать почту на своём VPS?
Обычно нет. Почтовые серверы требуют постоянного внимания к фильтрации спама, репутации и спискам блокировки, а многие облачные провайдеры блокируют исходящий порт 25. Отдельный почтовый провайдер плюс SMTP-сервис для сайта — проще и надёжнее.
Какая самая частая ошибка при переезде на VPS?
Забыть о работе, которую старый хостинг делал незаметно: резервные копии, обновления безопасности, почта и cron-задачи. Перед переездом составьте список всего, что предоставлял старый хостинг, и решите, кто будет отвечать за каждую часть на VPS.