## Описание

Простая утилита для управления сервисами [runit](http://smarden.org/runit/ "Домашняя страница runit") через Web-интерфейс, с поддержкой интернационализации.

Сервер запускается скриптом **runit-man**. Примите во внимание, что  **runit-man** обязан иметь привилегии, аналогичные привилегиям процесса **runsvdir**.

## Инсталляция

Обычно вам нужно поставить гемы **runit-man** и **thin** совместно, чтобы эта утилита работала эффективно.
`gem install runit-man thin`

Прагматично установить runit-man как один из сервисов runit, например, так:
`runit-man -p 14500 -r`

Эта команда создаёт сервис runit-man, как один из обычных активных сервисов runit (используя каталоги */etc/sv/* and */etc/service/* по умолчанию).

Подробнее смотрите файл INSTALL.

### Конфигурирование под Rack

Обратите внимание, что гем 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/urls-to-view/**.
Каждый файл, имеющий расширение .url, будет показан, как сылка на просмотр целевой локации (которая берётся как содержимое файла).

### Показ кнопок, которые посылают сигналы выбранному процессу

Для каждого известного сервиса runit эта утилита просматривает каталог **./runit-man/allowed-signals/**.
Каждый однобуквенно-именованный файл определяет, что кнопка для сигнала должна появиться в пользовательском интерфейсе.

Соответствия между буквами и сигналами перечислены ниже, в секции REST API.

## REST API

### Получение состояния

Вы можете получить текущее состояние сервисов в [формате JSON](http://www.json.org/ "Домашняя страница 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

### Чтение логов

#### svlogd

Вы можете читать хвост лога сервиса, используя
`GET /<service name>/log/<count of tailing lines>.txt`

Учитывайте, что этот функционал работает, только если Вы логгируете сервис с использованием команды вида 
`exec svlogd options log_directory_location`

#### logger

Если Вы предпочитаете logger, используйте его вот так:
`exec logger -i -t "runit-man" -p local1.info`

При этом нужно использовать опцию -l "logger:/var/log/", где после двоеточия надо указывать базовый каталог логов.