Installation¶
Follow these steps to install and configure LUNA Events and its database:
1 Install Python¶
Python of version 3.12 is required.
2 Install database¶
PostgreSQL of version 9.6 or higher is required.
Install the repository RPM:
sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmInstall the client packages for PostgreSQL:
PostgreSQL 12:
yum -y install postgresql12 postgresql12-server /usr/pgsql-12/bin/postgresql-12-setup initdbConfigure the database availability in file “/var/lib/pgsql/12/data/pg_hba.conf”
Launch PostgreSQL:
systemctl start postgresql-12 systemctl enable postgresql-12Install PostGIS (depends on Postgresql version)
for PostgreSQL 12:
sudo yum -y install postgis25_12Create user and database:
psql -U postgres;create role luna; ALTER USER luna WITH PASSWORD 'luna'; CREATE DATABASE luna_events; GRANT ALL PRIVILEGES ON DATABASE luna_events TO luna; ALTER ROLE luna WITH LOGIN;Activate PostGIS:
runuser -u postgres -- psql -d luna_events -c "CREATE EXTENSION postgis;";
3 Install Python libraries¶
Note: The virtual environment is strongly recommended for the installation of the service.
Go to the project source directory:
cd /var/lib/luna/current/luna-events
Create a virtual environment:
python3 -m venv venv
Add the path to the PostgreSQL to the environment variable:
PATH=/usr/pgsql-12/bin/:$PATH
Activate the virtual environment by the command:
source ./venv/bin/activate
Install dependencies by the command:
pip install -r requirements.txt
Launch db_create.py script for tables and primal data creation (for PostgreSQL). The configurations are received using the Configurator service:
python ./base_scripts/db_create.py --luna-config http://127.0.0.1:5070/1
Use the following command for the virtual environment deactivation:
deactivate
5 Check configs¶
Check and change the service settings in the configuration file /var/lib/luna/current/luna-events/luna_events/configs/config.conf (if necessary):
#: LUNA Events configuration file
[LUNA_CONFIGURATOR]
#: [integer] load configs from LUNA Configurator
USE_CONFIGURATOR = 0
#: [string] LUNA Configurator protocol, IP address, and port
LUNA_CONFIGURATOR_ORIGIN = http://127.0.0.1:5070
#: [integer] API version of the LUNA Configurator
LUNA_CONFIGURATOR_API = 1
[LUNA_EVENTS_LOGGER]
#: [string] level of debug print, by priority: "ERROR", "WARNING", "INFO", "DEBUG"
LOG_LEVEL = INFO
#: [string] time format used in log records: "LOCAL" or "UTC"
LOG_TIME = LOCAL
#: [string] folder, where logs are saved (relative path begins in directory with application)
FOLDER_WITH_LOGS = ./
#: [integer] maximum log file size in megabytes before performing rotation (0 - without rotation)
MAX_LOG_FILE_SIZE = 1024
#: send log to stdout
LOG_TO_STDOUT = 1
#: send log to file
LOG_TO_FILE = 0
#: allow multiline stack trace in logs
MULTILINE_STACK_TRACE = 1
[LUNA_EVENTS_DB]
#: [string] type of database: "postgres"
DB_TYPE = postgres
#: [string] login to database
DB_USER = luna
#: [string] database password
DB_PASSWORD = luna
#: [string] database IP address
DB_HOST = 127.0.0.1
#: [integer] database listener port, 5432 - default for "postgres" type
DB_PORT = 5432
#: [string] database name
DB_NAME = luna_events
[LUNA_EVENTS_DB.DB_SETTINGS]
#: [integer] database connection pool size
CONNECTION_POOL_SIZE = 10
[LUNA_MONITORING]
#: [string] storage type
STORAGE_TYPE = influx
#: [integer] send data for monitoring to InfluxDB
SEND_DATA_FOR_MONITORING = 1
#: [string] InfluxDB 2.x workspace
ORGANIZATION = luna
#: [string] InfluxDB 2.x authentication token
TOKEN = kofqt4Pfqjn6o0RBtMDQqVoJLgHoxxDUmmhiAZ7JS6VmEnrqZXQhxDhad8AX9tmiJH6CjM7Y1U8p5eSEocGzIA==
#: [string] InfluxDB 2.x bucket name
BUCKET = luna_monitoring
#: [string] InfluxDB IP address
HOST = 127.0.0.1
#: [integer] InfluxDB port
PORT = 8086
#: [integer] use HTTPS to connect to InfluxDB
USE_SSL = 0
#: [integer] frequency of sending monitoring data to InfluxDB (in seconds)
FLUSHING_PERIOD = 1
[LUNA_EVENTS_HTTP_SETTINGS]
#: web server http settings
#: [integer] service request timeout (in seconds)
REQUEST_TIMEOUT = 60
#: [integer] service response timeout (in seconds)
RESPONSE_TIMEOUT = 600
#: [integer] max request size (in bytes), default 1gb
REQUEST_MAX_SIZE = 1073741824
#: [integer] service http keep-alive timeout (in seconds)
KEEP_ALIVE_TIMEOUT = 15
[LUNA_SERVICE_METRICS]
#: [int] whether to enable /metrics path and statistics collection
ENABLED = 0
# [string] statistics data format (prometheus is the only option yet)
METRICS_FORMAT = prometheus
[DESCRIPTOR_ENCRYPTION]
#: [int] whether to enable descriptors encryption
ENABLED = 0
#: [string] encryption algorithm
ALGORITHM = aes256-gcm
[DESCRIPTOR_ENCRYPTION.PARAMS]
#: [string] encryption key source type
SOURCE = raw
#: [string] encryption key
KEY = 3gDyT4o+YlKLV4NZRjP/wznuhgxMI0mNNJWqc782Z9M=
[LUNA_SERVICE_METRICS.EXTRA_LABELS]
[OTHER]
#: [string] time format used in database records: "LOCAL" or "UTC"
STORAGE_TIME = LOCAL
#: [integer] default face descriptor version
DEFAULT_FACE_DESCRIPTOR_VERSION = 62
#: [integer] default human body descriptor version
DEFAULT_HUMAN_DESCRIPTOR_VERSION = 116
#: [float] save events timeout. 0 or negative means no timeout
SAVE_EVENTS_TIMEOUT = -1
#: [list(string)] list of active plugins
LUNA_EVENTS_ACTIVE_PLUGINS = []