Установка приложения на Linux (deb-based + rpm-based)

В разделе приводится пример установки NSMP с использованием следующего ПО системного окружения: ОС Linux (deb-based + rpm-based), СУБД (PostgreSQL, Microsoft SQL Server, Oracle), OpenJDK и Apache Tomcat. Полный перечень возможного ПО системного окружения приводится в разделе Требования к программному и аппаратному обеспечению.

Для корректной работы приложения имя сервера (hostname) должно локально разрешаться в ip-адрес.

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

PostgreSQL. Создание пользователя и базы данных

Пользователь и база данных создаются графической утилитой PGAdmin или утилитой командной строки psql.

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

postgres=# create user nausd4 encrypted password 'nausd4';
postgres=# create database nausd4 owner nausd4 encoding 'UTF8';

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

Microsoft SQL Server. Создание пользователя и базы данных

SQL Server Management Studio Создание базы данных

SQL Server Management Studio Создание пользователя

Включение версионирования Microsoft SQL Server

SQL-запросы

Подготовка серверов

Установка русской локали

Наиболее критична данная настройка на сервере СУБД, т.к. она влияет на правила сортировки. На сервере приложения можно оставить ту, с какой удобнее работать администраторам. Для унификации рекомендуется делать одинаковые настройки на всех серверах системы.

  • Дистрибутивы, основанные на Debian, использующие формат пакетов Deb

    Сгенерируйте локаль:

    # locale-gen ru_RU.UTF-8

    Отсортируйте список существующих локалей, содержащих ru:

    # localectl list-locales | grep ru

    Установите локаль:

    # localectl set-locale ru_RU.UTF-8

  • Дистрибутивы на базе RedHat, использующие формат пакетов RPM

    Установите языковую библиотеку:

    # dnf install glibc-langpack-ru

    Отсортируйте список существующих локалей, содержащих ru:

    # localectl list-locales | grep ru

    Установите локаль:

    # localectl set-locale ru_RU.UTF-8

    Чтобы в консоли нормально отображался русский шрифт, выполните команду:

    # setfont UniCyr_8x16

    В файле /etc/vconsole.conf пропишите:

    FONT="UniCyr_8x16"

Установка времени

Проверьте текущие настройки времени на сервере:

# timedatectl

Если они не соответствуют вашему часовому поясу, узнайте название вашей временной зоны отфильтровав список временных зон по городу, например:

# timedatectl list-timezones | grep Moscow

Установите временную зону:

# timedatectl set-timezone Europe/Moscow

Для корректной работы системы на всех ее серверах время должно быть одинаковым.

Рекомендуем настроить синхронизацию времени с NTP сервером. Установите chrony.

  • Дистрибутивы, основанные на Debian, использующие формат пакетов Deb

    # apt install chrony

  • Дистрибутивы на базе RedHat, использующие формат пакетов RPM

    # dnf install chrony

В файле /etc/chrony/chrony.conf укажите с какими NTP серверами нужно синхронизировать время.

Перезапустите сервис chrony:

# systemctl restart chronyd

Установка пакетов, необходимых для работы и удобства администрирования

  • Установка пакетов для удобства администрирования

    Установка этих пакетов не является обязательной для работы системы, но рекомендуется для удобства администрирования.

    • Дистрибутивы, основанные на Debian, использующие формат пакетов Deb

      # apt install iotop atop unzip zip tar wget vim curl nano sysstat net-tools

    • Дистрибутивы на базе RedHat, использующие формат пакетов RPM

      # dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
      # dnf install iotop atop unzip zip tar wget vim curl nano sysstat net-tools 
  • Установка пакетов для работы отчетов

    Для корректного определения шрифтов, установленных в системе, требуется наличие пакета fontconfig.

    Установите пакет fontconfig следующим образом:

    • Дистрибутивы, основанные на Debian, использующие формат пакетов Deb

      # apt install fontconfig

    • Дистрибутивы на базе RedHat, использующие формат пакетов RPM

      # yum install fontconfig

    Для корректной работы выгрузки в PDF отчетов, использующих шрифты Microsoft (например, Arial), на сервере приложения необходимо установить пакет со шрифтами Microsoft

    • Дистрибутивы, основанные на Debian, использующие формат пакетов Deb

      # apt install ttf-mscorefonts-installer

    • Дистрибутивы на базе RedHat, использующие формат пакетов RPM

      # yum install epel-release
      # yum install cabextract xorg-x11-font-utils
      # yum install https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm 

Настройка swappiness

Во избежание чрезмерного использования swap настройте параметр, который определяет при каком условии начинает задействоваться SWAP, равным 10:

# cat <<EOF | sudo tee /etc/sysctl.d/20-swappiness.conf
vm.swappiness = 10
EOF

Перечитайте конфигурацию демона proc:

# systemctl force-reload procps

Создание пользователя для работы основных сервисов

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

Команда для создания пользователя nausd4 с домашней директорией /home/nausd4:

# useradd -m -d /home/nausd4 -s /bin/bash nausd4

Команда для запроса пароля нового пользователя:

# passwd nausd4

Создание структуры каталогов для размещения ПО

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

# mkdir -p /opt/naumen/nausd4/{conf,deploy,logs,data}
# chown -R nausd4 /opt/naumen

Установка лимитов на файлы

Установите лимиты на количество открываемых файловых дескрипторов и количество процессов для пользователя, от имени которого будет запущен сервис. В основном все сервисы будут запускаться от имени пользователя nausd4, за исключением СУБД и nignx.

Пример для nausd4:

# cat <<EOF | sudo tee /etc/security/limits.d/nausd4.conf
nausd4 soft nproc 16384
nausd4 hard nproc 16384
nausd4 soft nofile 65535
nausd4 hard nofile 65535
EOF

В следующих пунктах установки все команды необходимо выполнять под созданным пользователем nausd4.
Исключение: если перед командой стоит символ "#", то команда выполняется под привилегированным пользователем (root).

Установка OpenJDK

Необходимо использовать версию OpenJDK, рекомендуемую в "Требованиях к программному и аппаратному обеспечению".

Для установки OpenJDK выполните следующие действия:

  1. Загрузите дистрибутив OpenJDK нужной версии и разрядности с сайта компании NAUMEN загрузить.

    OpenJDK можно загрузить с сайта https://adoptopenjdk.net

  2. Скопируйте дистрибутив OpenJDK в подготовленную директорию приложения.

    cp <файл дистрибутива OpenJDK> /opt/naumen/

  3. Разархивируйте дистрибутив.

    cd /opt/naumen
    tar -xaf <файл дистрибутива OpenJDK>
  4. Создайте символическую ссылку "java", указывающую на распакованный каталог java (для удобства администрирования).

    ln -s <папка OpenJDK> java

Установка сервера приложений Apache Tomcat

Необходимо использовать версию Apache Tomcat, рекомендуемую в "Требованиях к программному и аппаратному обеспечению".

Для установки Apache Tomcat выполните следующие действия:

  1. Загрузите дистрибутив Apache Tomcat соответствующей разрядности и для нужной версии Java с сайта компании NAUMEN загрузить.

    Не рекомендуется загружать Apache Tomcat с официального сайта Apache, т.к. дистрибутив не адаптирован для запуска приложения SMP (не создан файл bin/setenv.sh с нужными настройками, не поправлен специальным образом conf/server.xml).

  2. Распакуйте архив и переименуйте полученную директорию в tomcat:

    cd /opt/naumen/nausd4
    wget <ссылка на дистрибутив tomcat>
    tar -xaf <файл дистрибутива tomcat>
    mv <папка tomcat> tomcat
  3. Если необходимо определить нестандартные ограничения на потребление памяти java (Xmx, Xms) отредактируйте параметры в файле /opt/naumen/nausd4/tomcat/bin/setenv.sh, см. Приложение 1. Файл setenv.sh.

Автозапуск приложения на ОС Linux

После настройки автозапуска обязательно проверьте его работоспособность.

Для Linux-систем, использующих при загрузке систему systemd

Чтобы настроить автозапуск приложения для Linux-систем, использующих при загрузке систему systemd (например, CentOS 7, Ubuntu 18.04, Debian 9), выполните следующие действия:

  1. Создайте файл /lib/systemd/system/tomcat.service:

    [Unit]
    Description=Naumen SD 4 Tomcat service
    After=network.target
    
    [Service]
    Type=forking
    User=nausd4
    Group=nausd4
    ExecStart=/opt/naumen/nausd4/tomcat/bin/startup.sh
    ExecStop=/opt/naumen/nausd4/tomcat/bin/shutdown.sh 60 -force
    SuccessExitStatus=143
    
    [Install]
    WantedBy=multi-user.target
  2. Выполните команду:

    # systemctl daemon-reload
    # systemctl enable tomcat
    # systemctl start tomcat

Для Linux-систем, использующих при загрузке скрипт инициализации /sbin/init

Чтобы настроить автозапуск для Linux-систем, использующих при загрузке скрипт инициализации /sbin/init, выполните следующие действия:

  1. Добавьте скрипт tomcat в /etc/init.d:

    #!/bin/bash
    #
    # Startup script for the Apache Tomcat server
    #
    # chkconfig: - 85 15
    # description: tomcat
    # processname: tomcat
    # config:
    PREFIX="/opt/naumen/nausd4/tomcat/bin"
    NAUUSER="nausd4"
    STRTCMD="startup.sh"
    STPCMD="shutdown.sh 60 -force"
    case "$1" in
    start)
    echo "Starting up NAUMEN SD 4"
    su - ${NAUUSER} -c ${PREFIX}/${STRTCMD}
    ;;
    stop)
    echo "Shutting down NAUMEN SD 4"
    su - ${NAUUSER} -c ${PREFIX}/${STPCMD}
    ;;
    *)
    echo "Usage: nausd4 start|stop"
    ;;
    esac
    exit 0
  2. Добавьте скрипт в автоматический запуск.

    • Для redhat-based дистрибутивов Linux:

      # chmod +x /etc/init.d/tomcat
      # chkconfig --add tomcat
      # chkconfig tomcat on
    • Для debian-based дистрибутивов Linux:

      # chmod +x /etc/init.d/tomcat
      # update-rc.d tomcat defaults

После данной настройки сервер приложений Apache Tomcat будет автоматически запускаться при старте системы и останавливаться при выключении или перезагрузке.

Для управления сервисом приложения можно также использовать init-скрипты:

  • Для запуска приложения

    #/etc/init.d/tomcat start

  • Для остановки приложения

    #/etc/init.d/tomcat stop

Установка файлов приложения

Для установки файлов приложения выполните следующие действия:

  1. В папке /opt/naumen/nausd4/deploy/ создайте каталог, соответствующий текущей дате и скопируйте в него предоставленный файл дистрибутива sdng-war-*.war.

    mkdir -p /opt/naumen/nausd4/deploy/2020-01-24
    mv ./sdng-war-*.war /opt/naumen/nausd4/deploy/2020-01-24
  2. Скопируйте файл дистрибутива с названием sd.war в папку wepapps сервера приложений tomcat.

    cp /opt/naumen/nausd4/deploy/2020-01_24/sdng-war-*.war /opt/naumen/nausd4/tomcat/webapps/sd.war

Настройка конфигурационных файлов

Конфигурационные файлы приложения должны находиться в каталоге, путь к которому указан в параметре -Dext.prop.dir виртуальной машины Java (/opt/naumen/nausd4/conf).

Скачайте шаблоны файлов, указанных ниже, в каталог /opt/naumen/nausd4/conf.

При указании путей к различным файлам в dbaccess.properties и log4j.properties рекомендуется использовать прямой слеш "/" не зависимо от используемой операционной системы.
Обратный слеш "\" в сочетании с некоторыми символами может быть интерпретирован Java как управляющий символ и поэтому не рекомендуется к использованию.
Например, "\naumen.keytab" будет интерпретирован как символ перевода строки - "\n", за которым следует строка "aumen.keytab"."

log4j2.properties

В файле log4j2.properties настраивается конфигурация логирования приложения.

Скачайте шаблон файла с сайта компании NAUMEN загрузить.

Для 4.15 нужно загрузить файл log4j2.properties (с цифрой 2 в названии).

При необходимости измените путь до лога приложения в параметре appender.sdng.fileName.

dbaccess.properties

Файл dbaccess.properties основной конфигурационный файл приложения. Подробное описание всех параметров файла см. dbaccess.properties.

В файле dbaccess.properties определяются основные настройки приложения в формате "параметр=значение". В строке "параметр=значение" после указания значения параметра в конце строки не должно быть пробелов.

Настройка файла dbaccess.properties:

  1. Скачайте шаблон файла с сайта компании NAUMEN загрузить.

  2. Задайте параметр, определяющий корневой URL сервера. Данный URL будет использоваться при формировании ссылок на объекты.

    baseurl=http://<nsd_server_name>:8080/sd

  3. При необходимости, поменяйте путь к каталогу, в котором будут сохраняться файлы очереди событий системы, поисковые индексы, почтовые сообщения (параметр data.dir).
  4. Укажите параметры подключения к СУБД.

    Для СУБД PostgreSQL

    • db.driver=org.postgresql.Driver
    • db.url=jdbc:postgresql://<db_server_name>:<db_port>/<dbname>

      db_server_name — IP-адрес сервера СУБД

      dbname — название базы данных, пример, nausd4

    • db.user=<db_user>

      Имя пользователя, пример, nausd4

    • db.password=<db_user_password>

      Пароль для базы данных, пример, nausd4

    • db.max_active_connections=50

      Количество требуемых соединений может быть вычислено по формуле: [Количество одновременных пользователей] + 10

    • hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
    • hibernate.default_schema=public

      Схема, используемая по умолчанию

    Для СУБД MS SQL

    Для СУБД MS SQL с применением Windows-аутентификации

    Для корректной работы механизма Windows-аутентификации убедитесь, что приложение запускается от имени учетной записи Active Directory, используемой для подключения к SQL Server.

    Для СУБД Oracle

    • db.driver=oracle.jdbc.OracleDriver
    • db.url=jdbc:oracle:thin:@//<db_server_name>:<db_port>/<sid>

      <db_server_name> — IP-адрес сервера СУБД

      <sid> — название системного идентификатора Oracle

    • db.user=<db_user>

      Имя пользователя, пример, nausd4

    • db.password=<db_user_password>

      Пароль для базы данных, пример, nausd4

    • db.max_active_connections=50

      Количество требуемых соединений может быть вычислено по формуле: [Количество одновременных пользователей] + 10

    • hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
    • hibernate.default_schema=<db_user>

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

Завершение установки

После установки приложения, выполните проверку корректности инсталляции:

  1. Запустите приложение как сервис или через скрипты tomcat:

    # как сервис:
    service tomcat start
    # с помощью скриптов tomcat:
    su - nausd4
    /opt/naumen/nausd4/tomcat/bin/startup.sh
    
  2. Через 2-3 минуты откройте в браузере ссылку на приложение. По умолчанию tomсat доступен по порту 8080:

    http://localhost:8080/sd

    Должна открыться форма для ввода логина /пароля. Стандартный логин и пароль после установки на пустой базе: system /manager.

После выполнения проверки корректности инсталляции установка считается завершенной.

Информацию по сопровождению приложения SMP и его дополнительным возможностям можно получить в следующих разделах документации:

Приложение 1. Файл setenv.sh

В файле setenv.sh указываются дополнительные настройки для запуска Apache Tomcat на Linux-системах.

Дистрибутив Apache Tomcat на сайте компании NAUMEN адаптирован для запуска приложений SMP и содержит файл setenv.sh, в котором прописаны пути до Java, до каталога с конфигурационными файлами, конфигурируются порты, на которых работает Tomcat и указываются ограничения памяти для Java-процесса.

Описание некоторых параметров из файла setenv.sh:

  • JAVA_HOME — путь расположения java, например, /opt/naumen/java.
  • -Dext.prop.dir=/opt/nausd4/conf — расположение папки с конфигурационными файлами.
  • HTTP_PORT="8080" — порт, на котором Tomcat будет слушать http подключения.

    Ссылка подключения: http://<nsd_server_name>:8080/sd/ или http://<nsd_server_ip_addr>:8080/sd/.

    В UNIX-подобных операционных системах необходимы привилегии root для того, чтобы запускать службы на портах с номером менее 1024.

  • CATALINA_OPTS — список java-опций, передаваемых процессу java при запуске приложения. Подробное описание java-опций см. Конфигурация производительности Java-машины.

Приложение 2. Отличия дистрибутива Tomcat Naumen от официального дистрибутива Tomcat

Ссылка для скачивания дистрибутива Tomcat Naumen с сайта компании NAUMEN загрузить.

Отличия дистрибутива Tomcat Naumen от официального дистрибутива Tomcat:

  • Создан файл bin/setenv.sh, в котором задаются специфичные java-опции, путь до java и порты инсталляции.
  • В conf/server.xml в настройки коннектора 8080 добавлены специфичные параметры.
  • Из webapps/ROOT удалены все служебные приложения.
  • Добавлен webapps/ROOT/index.jsp для автоматического перенаправления корня на /sd/.