Zhivtone — Пульс жизни
Zhivtone — проект кнопки "SOS" наоборот: пользователь в течении
определённого времени уведомляет систему, что с ним всё хорошо, и если
система не получает в течении некоторого времени отклика от
пользователя, выполняются некоторые действия.
Установка
Примечание: в качестве ОС на сервере рекомендуется использовать
Unix-подобные ОС, в частности GNU/Linux.
Сборка
Для сборки проекта Вам требуется компилятор для языка Go.
Этапы сборки:
- Скачать исходники и перейти в директорию с ними
- Создать директорию
build
в корне проекта и перейти в неё
- Последовательно скомпилировать компоненты из корня проекта
srv/api
, srv/actions_checker
, srv/executor
и (опционально)
srv/webapp
при помощи комманды go build
. К примеру, для
компиляции srv/api
нужна следующая команда:
go build ../srv/api"
.
У тех, у кого есть утилита make
, можно скомпилировать при помощи
команды из корня проекта make all
все компоненты или
make all-exclude-webapp
для компиляции без
компонента webapp
Конфигурация
Файл конфигурации пишется в формате TOML.
Примерный файл:
# ссылка для подключения к MongoDB с логином/паролем
db_url = "mongodb://name:p%40ssword@mongodb.url:27017/main"
[api]
# домен, на котором будет работать API-сервер
#
# также по-умолчанию используется сервером веб-приложения для
# общения с API-сервером
domain = "api.example.com"
# порт, на котором API-сервер будет слушать запросы
#
# также по-умолчанию используется сервером веб-приложения для
# общения с API-сервером
port = 8181
# использовать ли tls (https)
#
# также по-умолчанию используется сервером веб-приложения для
# общения с API-сервером
use_tls = true
# сертификат для tls
cert_file = "./api_server.cert"
# ключ для tls
key_file = "./api_server.key"
[webapp]
# домен, на котором будет работать веб-приложение
domain = "app.example.com"
# порт, используемый веб-приложением
port = 80
# путь до ресурсов веб-приложения (папка /web в корне проекта), прямой
# или относительный
resources_path = "../web"
# разрешать ли самоподписанные сертификаты
# для API
allow_self_signed_api_cert = true
# использовать ли tls (https)
use_tls = true
# сертификат для tls
cert_file = "./webapp.cert"
# ключ для tls
key_file = "./webapp.key"
Примечания:
- По-умолчанию файл конфигурации ищется в папке, из которой запускается
файл, по имени
config.toml
, но его можно прямо указать с помощью
флага --config
- Сервер веб-приложения по-умолчанию использует путь до API из
конфига (
domain:port
из секции api
), но его можно указать
отдельно при помощи флага --api-adress
- Сервер веб-приложения по-умолчанию использует данные об использовании
TLS API-сервером (
use_tls
из секции api
), но можно заставить
использовать TLS при помощи флага --api-tls
Интеграция с системой
actions_checker
и executor
Для автоматического запуска actions_checker
и executor
при помощи cron
можно написать подобную строчку в crontab
:
0 */3 * * * $HOME/zhivtone/actions_checker 2>>qwe.log | $HOME/zhivtone/executor