Skip to content

Командная строка ​

Rapira - это один бинарник с единственной подкомандой:

bash
rapira serve <CONFIG>

Команда serve запускает PHP, подготавливает плагины и обслуживает запросы. CONFIG - это путь к файлу конфигурации. Он обязателен. Имя файла может быть любым, а эта документация использует rapira.toml.

Запустите rapira без аргументов, чтобы показать справку. Запустите rapira serve --help, чтобы показать справку по команде. Запустите rapira --version, чтобы показать установленную версию.

Файл конфигурации содержит все настройки сервера. Значение в файле переопределяет встроенное значение по умолчанию. RUST_LOG и NO_COLOR меняют только вывод stderr. Все ключи и форматы адреса listen перечислены в разделе Конфигурация.

Относительные пути ​

Относительный путь в файле использует каталог файла конфигурации как базу. Это относится к http.pool.entrypoint, grpc.pool.entrypoint и другим ключам с путями. Например, entrypoint = "public/index.php" в /etc/rapira/rapira.toml разрешается в /etc/rapira/public/index.php. Текущий каталог не влияет на эти пути. Относительный путь unix: в listen работает иначе: он использует текущий каталог команды rapira serve. Список ключей с путями есть в разделе Относительные пути.

Пример ​

Этот rapira.toml обслуживает HTTP в режиме Dispatcher, режиме по умолчанию:

toml
[http]
listen = "127.0.0.1:8000"

[http.pool]
entrypoint = "app/dispatcher.php"

Чтобы выбрать другой режим, задайте mode = "worker" или mode = "classic" в [http.pool]. См. Режимы выполнения.

Запустите сервер с путём к файлу:

bash
rapira serve rapira.toml
rapira serve /etc/rapira/rapira.toml

Сервер слушает 127.0.0.1:8000. Отправьте запрос этой командой:

bash
curl http://127.0.0.1:8000/

Входные скрипты для режимов Classic и Worker есть в разделе Быстрый старт. Для входного скрипта режима Dispatcher используйте dispatcher-sync.php из каталога examples/ репозитория. Руководство по программированию есть в разделе Режим Dispatcher.

Остановка сервера ​

Первый SIGTERM или SIGINT запускает контролируемую остановку. Воркеры не принимают новую работу и завершают текущие запросы. Затем мастер выключает PHP и завершается. Второй SIGTERM или SIGINT прекращает ожидание и принудительно завершает процесс. Отправляйте сигналы мастер-процессу. Полная таблица сигналов находится в разделе Модель процессов.

Ctrl-C в терминале отправляет SIGINT мастеру и каждому воркеру. Затем мастер отправляет SIGQUIT каждому воркеру. Поэтому каждый воркер получает второй сигнал и сразу завершается с кодом 131. Текущие запросы не завершаются. Для контролируемой остановки отправьте SIGTERM только мастеру, например kill -TERM <master-pid>. systemd с KillMode=mixed и docker stop тоже отправляют сигнал только мастеру.

Коды завершения ​

КодЗначение
0Сервер остановился, и все воркеры завершились. --help, --version и rapira без аргументов тоже завершаются с кодом 0.
1Сервер не запустился. Например, конфигурация не валидна, Rapira не может прочитать файл, слушатель не может занять адрес, или PHP не может запуститься. Ошибка выводится в stderr.
2Командная строка не валидна, например неизвестная опция или отсутствует CONFIG.
70Мастер дал сбой после запуска. Например, общее число воркеров всех пулов больше 2048, или мастер не может записать pid-файл. Нерабочий воркер нулевого поколения также вызывает это завершение, если в его пуле нет успешного запроса и нет простаивающего или активного воркера. Нулевое поколение обозначает воркеры, созданные до первой перезагрузки. В логе есть запись master failed.
130SIGTERM или SIGINT пришёл во время остановки и принудительно завершил процесс.
Можно ли задать режим или адрес listen в командной строке?

Нет. rapira serve принимает только файл конфигурации. Задайте processes, mode и entrypoint в [http.pool]. Задайте listen в [http].