VPS или виртуальный хостинг: что брать под сайт и под сервис
Блог на WordPress или магазин на готовом движке живут на виртуальном хостинге годами, и владелец ни разу не открывает консоль. Бот на Python, приложение на Node.js или пара контейнеров Docker туда уже не встанут: им нужен процесс, который работает круглые сутки, а хостинг такие процессы останавливает. Ниже разница по пунктам, признаки того, что хостинг стал тесен, работа, которая на VPS ляжет на вас, и порядок переезда без простоя.
Чем они отличаются на деле
На виртуальном хостинге один сервер делят сотни сайтов. Вы получаете папку, базу данных и панель управления, а систему, веб-сервер и PHP настраивает и обновляет провайдер. VPS даёт виртуальную машину целиком: свою операционную систему, root-доступ, свой IP-адрес. Ставить туда можно что угодно, но и следить за всем приходится самому.
| Виртуальный хостинг | VPS | |
|---|---|---|
| Доступ | Панель, FTP, иногда SSH без прав root | SSH с правами root |
| Программы | То, что поставил провайдер: PHP, MySQL, реже Python | Любые: Node.js, Go, Docker, Redis, своя версия базы |
| Обновления системы | Провайдер | Вы |
| Постоянные процессы | Как правило, нет: скрипт завершают по лимиту времени | Да, через systemd или Docker |
| Свои порты, WebSocket | Как правило, нет | Да |
| Ресурсы | Лимиты на аккаунт, соседние сайты в той же системе | Закреплены за машиной, физический хост общий |
| SSL-сертификат | Кнопка в панели | Certbot или веб-сервер с автоматическим выпуском |
| Почта на домене | Обычно есть в панели | Свой почтовый сервер или внешний сервис |
| Резервные копии | Чаще делает провайдер | Настраиваете сами или подключаете отдельно |
Когда хватит виртуального хостинга
- Сайт на PHP: WordPress, Joomla, OpenCart, 1С-Битрикс, Laravel без фоновых обработчиков очереди.
- Статический сайт, собранный генератором вроде Hugo или Astro.
- Нагрузка, с которой сайт держится в лимитах аккаунта. Их видно в панели, о них ниже.
- Нет человека, который будет следить за сервером. Для многих это главный довод: уязвимость в OpenSSL или в веб-сервере на хостинге закроет провайдер, а на VPS её придётся закрывать вам, желательно в тот же день.
Есть и промежуточные варианты. На администрируемом VPS (managed) машина ваша, а обновления и мониторинг ведёт провайдер. Сайту без серверной части хватит статического хостинга вроде GitHub Pages: туда кладут готовые файлы, и сервера, о котором нужно заботиться, у вас нет вовсе.
Когда нужен VPS
- Приложение на Node.js, Python, Go или Java, которое слушает свой порт. Часть хостингов умеет запускать Node.js и Python из панели, но версии и число процессов там ограничены.
- Telegram-бот, который постоянно опрашивает сервер, очередь задач, чат на WebSocket, парсер, которому нужен запуск чаще, чем разрешает cron хостинга.
- Docker и docker compose. Для них нужна виртуальная машина на KVM со своим ядром, контейнерный VPS не подойдёт (как это проверить, разобрано в статье о выборе VPS).
- Свой Redis, Elasticsearch, нестандартные модули PHP, конкретная версия PostgreSQL.
- Нужен отдельный IP-адрес, доступ к логам веб-сервера и настройкам системы.
Признаки, что хостинг стал тесен
Хостинг ограничивает каждый аккаунт по процессорному времени, памяти, числу одновременных процессов и числу файлов (инодов). В лимит упираются не плавно: днём сайт работает, а в час пик начинает отдавать ошибки.
- Ошибка 508 Resource Limit Is Reached или 503 в часы нагрузки. Код 508 отдаёт CloudLinux, на котором работает много хостингов, когда аккаунт вышел за лимит.
- В статистике ресурсов панели (в cPanel раздел Resource Usage) видны упоры в процессор или в число процессов.
- Поддержка пишет о нагрузке и просит оптимизировать сайт или перейти на старший план.
- Задача в cron не успевает отработать, её прерывают по таймауту.
- Место на диске есть, а новые файлы не создаются: кончились иноды. Чаще всего их съедают кэш и файлы сессий.
Прежде чем переезжать, посмотрите на сам сайт. Кэширование страниц и отказ от пары тяжёлых плагинов часто снимают нагрузку, и тогда хостинга хватает ещё надолго.
Что на VPS придётся делать самому
Часть этой работы делается один раз, остальное повторяется каждый месяц. Минимальный набор:
- Первый вход: отдельный пользователь вместо root, вход по ключу, вход по паролю выключен, файрвол ufw с открытыми портами 22, 80 и 443.
- Обновления безопасности. На Debian и Ubuntu их ставит пакет unattended-upgrades, а перезагрузку после обновления ядра вы планируете сами.
- Сертификаты. Let's Encrypt сейчас выдаёт их на 90 дней и объявил, что срок будет сокращаться, так что продление должно идти автоматически: таймер certbot или веб-сервер со встроенным выпуском, например Caddy.
- Резервные копии базы и файлов в другое место и хотя бы одно пробное восстановление.
- Мониторинг: внешняя проверка, что сайт отвечает, и уведомление, когда кончается место на диске.
- Почта. Чтобы письма с VPS доходили, нужны запись PTR, SPF, DKIM и DMARC, а исходящий 25-й порт многие провайдеры закрывают по умолчанию. Письма сайта (регистрация, восстановление пароля) проще отправлять через внешний почтовый сервис по SMTP.
Переезд с хостинга на VPS без простоя
- За сутки до переезда уменьшите TTL у A-записи домена до 300 секунд. Тогда новый адрес разойдётся по DNS-серверам за минуты.
- Поднимите на VPS то же окружение: веб-сервер, ту же версию PHP и базы данных, создайте пустую базу.
- Остановите изменения на старом сайте: закройте комментарии и формы или включите режим обслуживания. Иначе всё, что придёт между переносом базы и переключением, останется на старом сервере.
- Перенесите файлы (архивом из панели или через rsync по SSH) и базу:
Первую команду запускают на хостинге (или выгружают дамп в phpMyAdmin), вторую на VPS.mysqldump -u <пользователь> -p <база> > site.sql mysql -u <пользователь> -p <база> < site.sql - Проверьте сайт до смены DNS: добавьте строку с IP-адресом VPS и доменом в файл hosts на своём компьютере (
/etc/hosts, в WindowsC:\Windows\System32\drivers\etc\hosts) и пройдите главные страницы и формы. - Поменяйте A-запись, а если есть IPv6, то и AAAA. Записи MX не трогайте, если почта остаётся у прежнего провайдера.
- Выпустите сертификат. Обычная проверка Let's Encrypt по HTTP проходит, только когда домен уже указывает на новый сервер, поэтому сертификат выпускают сразу после смены записи или через проверку по DNS.
- Старый хостинг держите ещё неделю-две, чтобы было куда откатиться. После этого верните TTL к прежнему значению.
Частые вопросы
Можно ли держать на одном VPS несколько сайтов?
Да. Веб-сервер разводит запросы по доменам: в Nginx это отдельные блоки server, в Apache виртуальные хосты. У каждого сайта своя папка и своя база, но процессор и память общие, и тяжёлый сайт замедлит соседей.
Нужна ли на VPS панель управления?
Не обязательно. Панель вроде ISPmanager или HestiaCP даёт привычный интерфейс хостинга, но сама занимает память и тоже требует обновлений. Если сайт один и командная строка вас не пугает, хватит веб-сервера и пары конфигов.
Станет ли WordPress быстрее после переезда на VPS?
Только если он упирался в лимиты хостинга: процессор, память, число процессов. Если сайт тормозит из-за темы или плагинов, на новой машине без кэширования страниц он останется таким же медленным.
Что безопаснее: хостинг или VPS?
Изоляция у VPS лучше: соседи не делят с вами операционную систему. Зато на хостинге систему обновляет провайдер, а на вас остаются пароли, движок и плагины. VPS, который никто не обновляет, опаснее хостинга, за которым следит команда провайдера.