Установка 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
redis
libreoffice
При наличии доступа в интернет, пакеты можно поставить следующим образом:
Подключить следующие репозитории:
# 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
Запустить redis:
# systemctl enable redis
# systemctl start redis
Если БД расположена на этом же сервере, то необходимо инициализировать и запустить 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_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.
$ 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");
* 'login_max_attempts' - максимальное число попыток неуспешного входа, после которых пользователь блокируется, по умолчанию - 0 (отключено);
* 'login_lock_time' - время блокировки, в секундах, по умолчанию - 0 (отключено);
* 'user_max_inactive_period' - время бездействия в секундах, после которого при попытке логина пользователь будет сделан "неактивным", т.е. не сможет пользоваться системой (чтобы активировать - необходимо поставить галочку "активен" в реестре пользователей), по умолчанию - 0 (отключено);
* 'session_cookie_age' - настройка SESSION_COOKIE_AGE из Django, время сессии пользователя в секундах. По истечении этого времени залогиненного пользователя выкинет на страницу логина при выполнении какого-либо действия. По умолчанию - 2 недели;
* 'user_max_sessions' - максимальное количество одновременных сессий одного пользователя, по умолчанию - 0 (отключено);
* 'strict_password_checking' - настройка, включающая проверку сложности пароля, по умолчанию - False
* 'admin_password_min_len' - минимальная длина пароля для администратора, по умолчанию - 16 (только в случае 'strict_password_checking'=True);
* 'user_password_min_len' - минимальная длина пароля для обычного пользователя, по умолчанию - 8 (только в случае 'strict_password_checking'=True);
* 'password_expiration' - время, через которое система потребует сменить пароль в днях, по умолчанию - 90 (только в случае 'strict_password_checking'=True).
Чтобы изменить значения параметров, необходимо выполнить команду со значениями параметров:
$ netdb_update_config timeout=10800,processes=4
и перезагрузить приложение, выполнив команду:
$ netdb_restart
В случае изменения server_name, ssl, celery_processes , необходимо выполнить:
$ netdb_start
Запуск по https¶
Необходимо задать параметры SSL:
$ netdb_update_config certificate=/path/to/certificate.crt,certificate_key=/path/to/key.key
И запустить:
$ netdb_start ssl