Простая утилита для управления сервисами runit через Web-интерфейс, с поддержкой интернационализации.
Сервер запускается скриптом runit-man. Примите во внимание, что runit-man обязан иметь привилегии, аналогичные привилегиям процесса runsvdir.
Мы предоставляем набор рецептов runit-man для автоматизации установки runit-man с использованием Opscode Chef.
Обычно вам нужно поставить гемы runit-man и thin совместно, чтобы эта утилита работала эффективно.
gem install runit-man thin
Прагматично установить runit-man как один из сервисов runit, например, так:
runit-man -p 14500 -r
Эта команда создаёт сервис runit-man, как один из обычных активных сервисов runit (используя каталоги /etc/sv/
and /etc/service/
по умолчанию).
Подробнее смотрите файл {file:INSTALL.md}.
Обратите внимание, что гем runit-man gem также предоставляет файл конфигурации Rack config.ru.
Он полезен для запуска runit-man под такими серверами, как unicorn, rainbows и другими. Опция runit-man --rackup=command
выполняет команду cd каталог, где лежит config.ru && set environment && exec command
.
Эта утилита способна предоставлять дополнительную информацию или действия на своей Web-странице.
Для каждого известного сервиса runit эта утилита просматривает каталог ./runit-man/files-to-view/
.
Каждый симлинк в этом каталоге будет показан как ссылка на просмотр содержимого целевого файла.
Для каждого известного сервиса runit эта утилита просматривает каталог ./runit-man/files-to-watch/
.
Целевые файлы симлинков в этом каталоге будут проверяться на время последней модификации файла.
Сервис будет помечаться как опасный (красным цветом) в плане рестарта, если любой наблюдаемый файл изменился после старта сервиса.
Для каждого известного сервиса runit эта утилита просматривает каталог ./runit-man/urls-to-view/
.
Каждый файл, имеющий расширение .url, будет показан, как сылка на просмотр целевой локации (которая берётся как содержимое файла).
Для каждого известного сервиса runit эта утилита просматривает каталог ./runit-man/allowed-signals/
.
Каждый однобуквенно-именованный файл определяет, что кнопка для сигнала должна появиться в пользовательском интерфейсе.
Соответствия между буквами и сигналами перечислены ниже, в секции REST API.
Вы можете получить текущее состояние сервисов в формате JSON, используя
GET /services.json
Вы можете управлять вашими сервисами, используя
POST /<service name>/<command>
Поддерживаемые команды: up, down, restart, switch_up (активация сервиса), switch_down (деактивация сервиса).
Вы можете также посылать любые сигналы сервису, используя
POST /<service name>/signal/<signal>
Поддерживаемые сигналы и их значения:
Сигнал | Значение |
---|---|
t | TERM |
k | KILL |
i | INT |
1 | USR1 |
2 | USR2 |
a | ALARM |
q | QUIT |
x | EXIT |
p | PAUSE |
c | CONT |
h | HUP |
o | ONCE |
Вы можете читать хвост лога сервиса, используя
GET /<service name>/log/<count of tailing lines>.txt
Учитывайте, что этот функционал работает, только если Вы логгируете сервис с использованием команды вида
exec svlogd <options> $LOG_DIRECTORY_LOCATION
Если Вы предпочитаете logger, используйте его вот так:
exec logger -i -t "runit-man" -p local1.info
При этом нужно использовать опцию -l "logger:/var/log/"
, где после двоеточия надо указывать базовый каталог логов.
Локализация может быть выполнена редактированием файлов локалей в каталоге ./i18n/*.yml
.
Ваши дополнения приветствуются.
Вместе с runit-man поставляется полезный Vagrant-файл. Чтобы развернуть окружение для разработки, выполните эти шаги:
- Установите Vagrant и Oracle VirtualBox;
- Разверните подмодули:
git submodule update --init
; - Разверните Vagrant'овское окружение:
vagrant up
.
Теперь у вас есть Vagrant box с Ubuntu 12.04 с запущенными сервисами runit и runit-man