К содержимому

Возможности

Сайты и стек

Сайт за минуту: учётка, каталоги, nginx, пул PHP. Сертификат выпускается сам, версия PHP меняется без простоя, кривая директива откатывается до того, как положит веб-сервер.

Сайты · web-01 HTTPS на всех
shop.ru
PHP 8.3 nginx + PHP-FPM 87 дней до продления
xn--80aswg.xn--p1ai
PHP 8.2 nginx → Apache 61 день до продления
lk.shop.ru
PHP 8.4 nginx + PHP-FPM 87 дней до продления
old.studio.ru
PHP 7.4 nginx → Apache 12 дней до продления

Второй домен тот же, что «мойсайт.рф»: панель перевела его сама.

Стек сайта

Обработчик и версию можно менять у живого сайта

Сайт заводится мастером: учётка владельца, каталоги, виртуальный хост nginx, пул PHP. Дальше ничего не заморожено — обработчик и версия меняются без простоя, потому что меняется конфигурация, а не сайт.

Перечень версий отвечает сама машина, а не справочник панели: в справочнике лежит «какие версии мы умеем», а на сервере стоит то, что стоит. Пока эти два перечня показывались одним списком, панель предлагала версию, которой на машине нет, — и сайт получал пул без интерпретатора.

nginx + PHP-FPM

быстрее

Свой пул PHP от имени владельца сайта. Наборы правил под WordPress, Битрикс, Laravel/Symfony и статику — или без набора, если правила свои.

nginx → Apache

.htaccess

Когда сайту нужен .htaccess: nginx отдаёт статику и проксирует остальное Apache. Переезд старого сайта перестаёт быть переписыванием правил.

Сертификат выпускается сам

Let’s Encrypt, продление за 30 суток до конца. Срок панель спрашивает у сервера, а не вычисляет: продлить может и агент, и расчётная дата тогда врёт ровно на то время, которое вам и важно.

Отказ центра сертификации приезжает текстом — «домен не указывает сюда», «слишком много попыток», — а не словом «Ошибка».

Домены

Кириллический домен вводится кириллицей

Для машин домен существует в punycode: так его знают nginx, DNS, сертификаты и базы. Для вас — так, как вы его ввели. Панель переводит сама и хранит внутри ровно один вид, иначе одно имя заводится дважды и сайт не находит свой же сертификат.

Один домен, два вида

вы ввели

мойсайт.рф

перевод панели

машины видят

xn--80aswg.xn--p1ai

Смешанные буквы в одной метке — отказ

раураl.com с кириллическими «р» и «а» внешне не отличить от настоящего. Пустить такое имя на хостинг значит участвовать в подлоге, и глазами человек его не отличит по построению.

Псевдонимы

Дополнительные домены отвечают тем же сайтом

Назвали адрес без цели — он псевдоним, отвечает тем же содержимым. Назвали с целью — перенаправление с кодом. Это одно решение, а не два: вид выводится из того, что вы указали.

shop.ru основной — www.shop.ru перенаправление 301 → shop.ru shop.рф псевдоним то же содержимое магазин.рф перенаправление 302 → shop.ru

Сертификат выпускается на весь набор имён сайта, а не на одно.

Свои правила

Кривая директива не доживает до веб-сервера

Ручной блок ложится внутрь server{} сайта. Проверяется не «похоже ли на конфиг» — это скажет nginx -t на сервере, — а «не выходит ли директива за пределы своего сайта». nginx читает конфигурацию от root, и строка, вышедшая за границу, становится чтением любого файла на машине.

уходит на сервер

client_max_body_size 512m;
expires 30d;
add_header X-Frame-Options SAMEORIGIN;
location /api/ {
    proxy_pass http://127.0.0.1:3000;
}

Пропускается перечень известных директив уровня сайта. Неизвестное имя — отказ словами, а не «вдруг безопасно».

отбивается с объяснением

include /etc/shadow; показал бы строки файла в сообщении nginx -t load_module …; код внутри веб-сервера от root root /home/сосед/www; раздача чужих файлов access_log /etc/cron.d/x; строка запроса в журнале становится командой fastcgi_pass чужой-пул; PHP от имени другого пользователя

Прошло проверку — и всё равно откатится, если nginx -t на машине не принял: веб-сервер не падает из-за опечатки.

Журналы

Ответ на «что у меня упало» — в панели

Хвост журнала, «ранее» по курсору, поиск по строке и отбор по коду ответа. Доступ и ошибки nginx, доступ и ошибки Apache — по сайту, а не по всей машине.

Путь к файлу панель строит только из домена, который вам виден, и только из своего перечня. Тот же путь сверяет агент своей границей — обе стороны по одному образцу. Целиком журнал скачивается сжатым на ходу.

nginx: доступ все 4xx 5xx
200 GET /catalog/ HTTP/2.0 12.4 ms
200 GET /assets/app.css HTTP/2.0 1.1 ms
404 GET /wp-login.php HTTP/1.1 0.8 ms
502 POST /api/order HTTP/2.0 30 004 ms
301 GET / HTTP/1.1 0.3 ms

200 строк в хвосте · «ранее» по курсору

Остальное, без чего сайт не живёт

Каталог решений, базы, доступы и планировщик — не «дополнительные модули», а то же рабочее место сайта.

Каталог решений

Семь карточек, которые ставятся кнопкой. WordPress — целиком, вплоть до пароля администратора, который выдумывает панель и показывает один раз. Битрикс панель не ставит: лицензию и редакцию вы выбираете в официальном мастере, а панель готовит окружение, кладёт bitrixsetup.php, заводит базу и cron агентов.

WordPress 1С-Битрикс Docker Node.js-приложение Python-приложение Redis Adminer

Для Node.js и Python — источник из git или архива, версия, команда запуска, переменные окружения, потолок памяти и HTTPS. Django узнаётся признаком: migrate и collectstatic выполняются сами. Свои стеки compose — рядом, со своей проверкой.

Базы

MySQL или MariaDB и PostgreSQL. Выгрузка и загрузка дампов, пределы на базу.

phpMyAdmin ставится при первом «Открыть» и входит по одноразовому билету: пароль вводить не нужно, билет живёт 3 минуты и забирается ровно один раз.

Файлы и FTPS

Файловый менеджер в браузере. Доступ по FTPS с виртуальными пользователями; обычный FTP не предлагается вовсе.

Планировщик

Задания cron от имени владельца сайта, с выбором версии PHP. Версию, на которой висит задание, панель не даст удалить и назовёт задание.

Терминал

Оболочка в браузере от имени пользователя сайта. root и участники sudo запрещены, и запрет живёт в агенте, а не в интерфейсе: в интерфейсе он обходится подстановкой в запросе.

Сессия записывается всегда — файлом на сервере и стенограммой в панели. Без записи она не открывается.