Manuals
RU EN

Сервер · 55

VPS с root для PHP-скрипта

Сервер 5 мин чтения

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 после покупки

  1. Обновляете ОС, создаёте sudo-пользователя, ключи SSH, по возможности отключаете парольный root-логин.
  2. Ставите firewall: firewall — 22/80/443, MySQL внутрь.
  3. Ставите Nginx/Apache + PHP-FPM 8.x + MariaDB.
  4. Выпускаете SSL: SSL.
  5. Льёте скрипт: установка.

Связка веб-сервера: Nginx + PHP-FPM. Права файлов: chmod. Cron: cron.

Root vs панель хостинга

На shared вас берегут (и ограничивают). Под root ошибка в iptables может отрезать SSH. Перед экспериментами с firewall держите консоль провайдера (VNC/KVM). Снимок диска перед крупными апдейтами — дешёвая страховка.

Панель управления на VPS (ISPmanager и др.) не отменяет root — она его использует. Но пароль root от панели и от SSH лучше не делать одинаковым «123456» из письма провайдера дольше первого входа.

Managed VPS без root. Иногда продают «VPS», а root не дают. Для наших задач это снова shared с другой этикеткой. Перед оплатой смотрите, есть ли полный root или sudo.

Безопасность минимума

  • Не торчите 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

  1. Сменить пароли, ключи SSH, обновить ОС.
  2. Firewall: порты.
  3. Nginx + PHP-FPM + БД.
  4. Создать базу utf8mb4, пользователя только на неё.
  5. Залить скрипт, выставить права, пройти установщик.
  6. SSL, cron, тестовая загрузка файла, тестовое письмо.
  7. Бэкап «чистого» состояния после установки.

Про 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 для скрипта

Раздел
VDS и сервер для PHP

Сервер под PHP/MySQL: от выбора тарифа до Nginx и firewall.