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

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

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

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

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

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

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

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

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

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

httpd
postgresql
postgresql-server
postgresql-odbc
libpqxx-devel
mod_auth_kerb
blas-devel
python-virtualenv
lapack-devel
libffi-devel
pcre-devel
unixODBC-devel
zlib-devel
unzip
postgis
gdal-devel
supervisor
rabbitmq-server
bzip2
gcc
sudo

Подключить репозиторий EPEL:

# yum -y install epel-release

Установка пакетов в CentOS:

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

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

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

В системе должны быть запущены 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:

# systemctl enable postgresql
# postgresql-setup initdb
# systemctl start postgresql

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

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

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

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

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

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

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

# visudo

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

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

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

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

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

Все команды выполняются без 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 секунд*;

Запуск NetDB

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

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

$ source ~/.bashrc

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

$ bash

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

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

$ netdb_init_db

Старт NetDB

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

$ 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