Установка Triafly на CentOS

Состав дистрибутива ИС

Дистрибутив состоит из одного файла:

  • netdb_{version}_installer_{platform}.sh, где version - версия платформы Triafly, platform - операционная система, под которую собран дистрибутив.

Подготовка Системы

В данном разделе в качестве основного используемого дистрибутива операционной системы Linux рассматривается Centos 7.5. В качестве пакетного менеджера используется утилита yum. Примеры выполнения команд в инструкции представляют собой работу с командной строкой (используемой командной оболочкой является BASH). Во всех примерах символы «#» и «$» в начале строки являются приглашением командной строки для пользователя «root» и для обычного пользователя соответственно.

Предполагается, что:

  • Установка платформы выполняется квалифицированным администратором ОС.
  • Операционная система установлена и функционирует.
  • Установка производится из предоставляемого дистрибутива ИС.

Установка необходимых приложений и библиотек

В системе должны быть установлены следующие пакеты:

httpd
postgresql12
postgresql12-server
postgresql12-odbc
libpqxx-devel
mod_auth_kerb
blas-devel
python-virtualenv
lapack-devel
libffi-devel
pcre-devel
unixODBC-devel
zlib-devel
unzip
postgis25_12
gdal-devel
supervisor
rabbitmq-server
bzip2
gcc
sudo
python3
python3-devel
yum-utils

При наличии доступа в интернет, пакеты можно поставить следующим образом:

Подключить следующие репозитории:

# yum -y install epel-release
# yum -y install centos-release-scl
# yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Установить пакеты с помощью yum:

# yum -y install httpd postgresql12 postgresql12-server postgresql12-odbc libpqxx-devel mod_auth_kerb blas-devel python-virtualenv lapack-devel libffi-devel pcre-devel unixODBC-devel zlib-devel unzip postgis25_12 gdal-devel supervisor rabbitmq-server bzip2 gcc sudo python3 python3-devel yum-utils

Пакеты postgresql12-server и postgis25_12 не нужны, если БД расположена на другом сервере.

Запуск сервисов

В системе должны быть запущены httpd, rabbitmq-server, supervisord и postgresql, если БД должна быть расположена на этом же сервере.

Необходимо проверить, активирован ли Selinux и какие у него политики:

# getenforce

Если команда выводит «Enforcing» (Selinux активирован, правила политики Selinux - принудительные), то необходимо изменить (временно) политику на «Permissive» (политики Selinux - непринудительные):

# setenforce 0

Запустить и разрешить автозагрузку supervisord:

# systemctl enable supervisord
# systemctl start supervisord

Запустить и разрешить автозагрузку Apache:

# systemctl enable httpd
# systemctl start httpd

Запустить и разрешить автозагрузку rabbitmq-server:

# systemctl enable rabbitmq-server
# systemctl start rabbitmq-server

Если БД расположена на этом же сервере, то необходимо инициализировать и запустить postgreql:

# /usr/pgsql-12/bin/postgresql-12-setup initdb
# systemctl enable --now postgresql-12

Создание пользователя

Установка Triafly должна производиться от пользователя не-«root».

Создание пользователя:

# adduser имя_пользователя
# passwd имя_пользователя

Для работы c БД postgresql необходимо завести пользователя в БД:

# sudo -u postgres -i createuser -s -w имя_пользователя

Для запуска Triafly после установки пользователю будут необходимы права суперпользователя:

# visudo

Добавить строчку:

имя_пользователя ALL=(ALL)       NOPASSWD: ALL

После создания пользователя для установки Triafly необходимо переключиться на этого пользователя и перейти в его домашнюю папку:

# su имя_пользователя
$ cd

Установка проекта Triafly

Все команды выполняются без sudo (тем командам, которым нужны права суперпользователя, использование sudo прописано внутри самих команд).

Запустить инсталлятор:

$ bash netdb_{version}_installer_{platform}.sh

Дополнительными аргументами командной строки инсталлятору можно передать дополнительные параметры в виде параметр1=значение1,параметр2=значение2 (набор «параметр=значение», разделенные запятыми). Например, если БД расположена на другом сервере, то работу с удаленной БД можно задать так:

$ bash netdb_{version}_installer_{platform}.sh dbhost=IP_АДРЕС_БД,dbport=ПОРТ

Доступные параметры:

*dbname* - имя БД приложения, по умолчанию *nedbapp_db*.
*dbuser* - имя пользователя для доступа к БД, по умолчанию - *текущий пользователь*, от которого устанавливается приложение.
*dbpassword* - пароль для доступа к БД, по умолчанию - *пустая строка*.
*dbhost* - имя или адрес хоста БД, по умолчанию - *пустая строка*.
*dbport* - порт сервера БД, по умолчанию - *пустая строка*, и в этом случае работа с БД производится через локальный сокет.
*server_name* - имя виртуального хоста проекта для http-сервера Apache2 , по умолчанию *netdb.local*.
*guniport* - номер порта для работы приложения, по умолчанию - *10003*.
*admin_email* - почтовый адрес администратора, по умолчанию - *admin@lists.chtd.ru*.
*processes* - количества рабочих процессов приложения, по умолчанию - *2*.
*mapdbname* - имя БД с картографической информацией, по умолчанию - *map_db*.
*timeout* - таймаут работы приложения, по умолчанию - *180 секунд*.

Запуск Triafly

После установки приложения пользователю, от которого производилась установка, доступны команды: netdb_init_db, netdb_init, netdb_restart, netdb_update_config, netdb_command, netdb_load_dump.

Если сразу после установки при попытке выполнения команды возникает ошибка «команда не найдена», то необходимо «обновить» параметры текущей сессии пользователя командой:

$ source ~/.bashrc

или начать новую сессию:

$ bash

Инициализация БД для Triafly

Выполнить команду:

$ netdb_init_db

Старт Triafly

Выполнить команду:

$ netdb_start

После этого приложение будет доступно по указанному при установке server_name или по ip-адресу сервера, если server_name не был указан.

Перед началом работы с приложением необходимо проверить, что оно доступно для работы, для этого:

Проверить, открыт ли 80-й порт:

$ sudo iptables -L -v | grep http

В том случае, если 80-й порт закрыт файрволом, необходимо его открыть для доступа:

$ sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
$ sudo iptables-save

или:

$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --reload

Приложение готово к работе.

Описание остальных команд

$ netdb_update_config
  • изменение настроек приложения. Настройки задаются аргументом команды в виде параметр1=значение1,параметр2=значение2 (набор параметр=значение, разделенные запятыми). Допустимые параметры - те же, что и для скрипта установки.
$ netdb_restart
  • рестарт приложения. Необходимое действие после изменения настроек командой netdb_update_config.
$ netdb_command
$ netdb_load_dump
  • загрузка данных в БД из дампа.

Настройка почты для рассылки уведомлений

Своевременная отсылка почтовых уведомлений пользователям представляет собой одну из важных составляющих правильной работы системы.

По умолчанию отправка почтовых уведомлений в системе настроена через почтовый сервер, установленный на одном стенде с работающим приложением:

  • Имя хоста почтового сервера - localhost.
  • Номер порта для отправки - 25 (порт по умолчанию для работы по протоколу SMTP).

В случае использования почтового сервера, настройки которого отличаются от настроек по умолчанию, необходимо через команду netdb_update_config задать свои настройки для имени или IP-адреса почтового сервера, номера порта (для протокола SMTP - 25), имени и логина пользователя, если на почтовом указываемом сервере необходима авторизация для отправки почты, и в зависимости от того, включена ли TLS/SSL.

Пример использования команды для почтового сервера, расположенного на другом хосте (в качестве примера - example.com), с аутентификацией и шифрованием:

# netdb_update_config email_host=example.com,email_port=25,email_host_user=user@example.com,email_host_password=user_password,email_use_tls=yes
# netdb_restart

Изменение настроек приложения

Для изменения параметров конфигурации приложения используется команда netdb_update_config

Список основных параметров конфигурации:

* 'user' - имя пользователя, от которого работает приложение;
* 'db' - имя БД приложения;
* 'dbuser' - имя пользователя для доступа к БД, по умолчанию значение параметра 'user';
* 'dbpassword' - пароль для доступа к БД, по умолчанию - пустая строка;
* 'dbhost' - имя или  адрес хоста БД, по умолчанию - пустая строка;
* 'dbport' - порт сервера БД, по умолчанию - пустая строка, и в этом случае работа с
  БД производится через локальный сокет;
* 'server_name' - имя виртуального хоста проекта для http-сервера (Apache2 или Nginx),
  по умолчанию 'netdb.local';
* 'guniport' - номер порта для работы приложения;
* 'admin_email' - почтовый адрес администратора, по умолчанию - 'admin@lists.chtd.ru';
* 'processes' - количество рабочих процессов приложения, по умолчанию - 2;
* 'remote_memdb_processes' - количество ворекров memdb, по умолчанию - 1;
* 'celery_processes' - количество воркеров celery, по умолчанию - 2;
* 'mapdbname' - имя БД с картографической информацией, по умолчанию - 'map_db';
* 'timeout' - таймаут работы приложения, по умолчанию - 180 секунд;
* 'autostart' - признак того, что приложение запускается при старте supervisor,
  по умолчанию true;
* 'email_host' - хост, где расположен почтовый сервер;
* 'email_port' - используемый почтовым сервером порт для SMTP (по умолчанию 25);
* 'email_host_user' - имя пользователя, для аутентификации при отправке по SMTP;
* 'email_host_password' - пароль пользователя;
* 'email_use_tls' - признак того, что используется TLS/SSl для шифрования;
* 'certificate' - файл сертификата SSL (см. ниже "Запуск по https")
* 'certificate_key' - файл ключа SSL (см. ниже "Запуск по https")

Чтобы изменить значения параметров, необходимо выполнить команду со значениями параметров:

$ netdb_update_config timeout=10800,processes=4

и перезагрузить приложение, выполнив команду:

$ netdb_restart

В случае изменения server_name, необходимо выполнить:

$ netdb_start

Запуск по https

Необходимо задать параметры SSL:

$ netdb_update_config certificate=/path/to/certificate.crt,certificate_key=/path/to/key.key

И запустить:

$ netdb_start ssl