VPS с root — когда панель shared говорит «нельзя»: нужная ветка PHP, свой cron каждую минуту, отдельный Nginx, Redis, закрытие портов, снапшоты по своему расписанию. Скрипт PHP при этом тот же архив; меняется уровень контроля над машиной.
VPS и VDS в разговоре клиентов часто синонимы. Нам важен root/sudo и нормальный PHP 8, не название тарифа в корзине. Общий выбор железа: VDS для PHP.
Когда root реально нужен
- На shared нет PHP 8.1+ или нельзя включить mysqli/gd.
- Cron режут по частоте или запрещают CLI.
- Нужен свой веб-сервер и тюнинг PHP-FPM под нагрузку.
- Ставите панель, мониторинг, свои бэкапы в S3.
- Долгоживущие процессы / очереди, которые shared убивает.
Если сайт — витрина с десятью хитами в день, root ради root не обязателен. См. хостинг для скрипта.
Что делаете под root после покупки
- Обновляете ОС, создаёте sudo-пользователя, ключи SSH, по возможности отключаете парольный root-логин.
- Ставите firewall: firewall — 22/80/443, MySQL внутрь.
- Ставите Nginx/Apache + PHP-FPM 8.x + MariaDB.
- Выпускаете SSL: SSL.
- Льёте скрипт: установка.
Связка веб-сервера: Nginx + PHP-FPM. Права файлов: chmod. Cron: cron.
Root vs панель хостинга
На shared вас берегут (и ограничивают). Под root ошибка в iptables может отрезать SSH. Перед экспериментами с firewall держите консоль провайдера (VNC/KVM). Снимок диска перед крупными апдейтами — дешёвая страховка.
Панель управления на VPS (ISPmanager и др.) не отменяет root — она его использует. Но пароль root от панели и от SSH лучше не делать одинаковым «123456» из письма провайдера дольше первого входа.
Безопасность минимума
- Не торчите phpMyAdmin в мир без пароля/VPN.
- Не слушайте MySQL на 0.0.0.0.
- Бэкапы проверяйте восстановлением: бэкап.
- fail2ban или аналог на SSH.
Перенос на VPS
С локалки или shared: файлы + дамп + конфиг. Перенос, миграция MySQL. После переноса выключите cron на старом месте.
Локальная обкатка до покупки сервера: MicroServer.
Поддержка скрипта и админ сервера
Тикет «настройте мне весь VPS с нуля» — это администрирование сервера, не обязательно зона SLA продукта. Что обычно входит в сопровождение скрипта: SLA. Как писать по ошибке установки: поддержка.
Требования к PHP на вашей ноде всё те же: требования. Ошибки после выкладки: 500, база.
Root не равен «можно всё ломать»
Под root вы один раз ошибаетесь в rm -rf или в ufw и ловите простой дороже любого тарифа shared. Рабочий порядок: обычный пользователь с sudo для повседневности, root — для поломок и первого бутстрапа. Бэкап перед apt-апгрейдом PHP — не паралельно с продакшен-релизом в пятницу.
На многих VPS из коробки включён пароль root из письма. Смените в первый заход. Ключ SSH положите сразу. Если провайдер даёт только пароль — добавьте ключ и отключите PasswordAuthentication, когда убедитесь, что ключ пускает.
Что поставить пакетами
Минимальный набор под скрипт Microscript:
- nginx или apache2;
- php-fpm нужной ветки 8.x и расширения mysqli, mbstring, gd, curl, xml, zip;
- mariadb-server или mysql-server;
- certbot;
- fail2ban по желанию;
- unzip, git — по необходимости.
Не ставьте «всё из гайда 2017 года» с php5 и mysql-server 5.5. Архивы скриптов под это не рассчитаны. После установки пакетов проверьте php -v и php -m под тем же бинарником, которым будет крутиться CLI-cron.
Пользователь сайта
Заведите системного пользователя под проект, домашний каталог с www, пул FPM от него. Файлы сайта — его uid. Тогда не живёте в мире «всё 777 от root». Загрузки пишет тот же пользователь — меньше сюрпризов с permission denied.
Деплой по SFTP этим пользователем удобнее, чем root-логин с последующим chown. На shared такой модели вы не видите — там панель прячет uid. На VPS это ваша зона.
Почта с VPS
Голый mail() с динамического IP часто улетает в спам. Для форм регистрации и уведомлений берите SMTP (хостер почты, SendGrid-класс, корпоративный ящик). В тикетах «письма не доходят» на VPS почти всегда репутация IP и отсутствие SPF/DKIM, а не баг скрипта. Скрипт лишь отправил через заданный транспорт.
Когда shared всё ещё лучше
Нет человека, который ответит на алерт в три ночи — shared с поддержкой хостера по железу спокойнее. Нет навыка чинить сломанный apt после неудачного обновления — тоже. Root имеет смысл, когда ограничения shared уже жмут или нужна архитектура «сам кручу Nginx и cron каждую минуту».
Сравните ещё раз: какой хостинг. Локально обкатайте продукт до оплаты года VPS: MicroServer, установка — сюда.
Чеклист первого дня на новом VPS
- Сменить пароли, ключи SSH, обновить ОС.
- Firewall: порты.
- Nginx + PHP-FPM + БД.
- Создать базу utf8mb4, пользователя только на неё.
- Залить скрипт, выставить права, пройти установщик.
- SSL, cron, тестовая загрузка файла, тестовое письмо.
- Бэкап «чистого» состояния после установки.
Про SSL: мануал. Про дамп при переезде со старого места: миграция MySQL. Если после первого дня белый экран — не переустанавливайте ОС, читайте лог: 500.
Отдельная привычка под root — не работать постоянно в интерактивной сессии root для правок шаблонов сайта. Зашли, поправили систему, вышли. Код продукта деплойте под пользователем сайта. Так меньше шансов, что новый файл останется root:root и админка перестанет писать кэш. Выравнивание прав: chmod. Веб-стек: Nginx + PHP-FPM. Когда сервер уже в бою, добавьте внешний uptime: мониторинг — firewall иногда режется «успешно», а сайт снаружи мёртв, и вы узнаёте об этом от клиентов. Бэкап после первого удачного деплоя: бэкап. Установка скрипта: установка.
Частые вопросы
Vps с root для php скрипта?
Root нужен, если нельзя сменить PHP или поставить свой cron на shared.
Сколько времени занимает «VPS с root для PHP-скрипта»?
Ориентир по тексту мануала — около 5 мин. На практике зависит от хостинга и подготовки базы.
Нужен ли отдельный сервер?
Для большинства скриптов достаточно хостинга или VDS с PHP и MySQL. Подбор сервера — в разделе VDS и требованиях к PHP/MySQL.
Nvme vds для интернет-магазина?
Разбор рядом в мануале по этому запросу. nvme vds для интернет-магазина
Настроить nginx php-fpm для скрипта?
Разбор рядом в мануале по этому запросу. настроить nginx php-fpm для скрипта