Конфигурационный файл сервера (appserver.config)

Файл конфигурации сервера приложений (appserver.config)

Параметры работы сервера приложений (СП) задаются в специальном конфигурационном файле appserver.config, который должен располагаться в корне каталога СП. Файл имеет формат XML и, соответственно, должен начинаться с сигнатуры:

<?xml version="1.0" encoding="windows-1251"?>

Все параметры настройки сервера приложений задаются в тэге server-config. Внутри данного тэга прописываются параметры настроек. Таким образом, общий вид файла конфигурации выглядит следующим образом:

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 

</server-config>

Все настройки сгруппированы по их назначению. Каждая группа настроек прописывается в отдельном тэге. Для сервера приложений определены следующие группы настроек:

  • database - параметры подключения к БД;
  • logging - настройка протоколирования;
  • security-config - настройка безопасности (назначение ролей сервера приложений группам пользователей операционной системы);
  • network – настройка сервисных портов сервера приложений;
  • storage - конфигурация хранилища;
  • audit - настройка параметров логирования действий пользователей;
  • instance - настройка отображаемого имени БД на клиенте

Параметры подключения к БД <database>

Обязательный тэг. Определяет параметры подключения сервера приложений к серверу БД. Внутри тэга определяется название поставщика СУБД (тэг provider), строка подключения к БД (тэг work-db-connection-string), лимит времени ожидания выборки СУБД (тэг select_timeout), лимит времени ожидания команды СУБД (тэг command_timeout).

Синтаксис:

<database>

  ...

</database>

Провайдер сервера БД <provider>

Обязательный тэг provider определяет имя поставщика сервера БД.

Синтаксис:

<provider>провайдер БД</provider>

 

где:

  • провайдер БД - имя провайдера БД. В настоящее время платформа предоставляет следующий перечень провайдеров БД:
  • MSSQL;
  • PostgreSQL.

Строка подключения к БД <work-db-connection-string>

 

Обязательный тэг work-db-connection-string определяет строку подключения к БД, которая используется поставщиком БД.

Синтаксис:

<work-db-connection-string>строка подключения</work-db-connection-string>

где:

  • строка подключения - строка подключения к БД.

Время ожидания ответов СУБД

Необязательный тэг select_timeout лимит времени ожидания получения результата выборки с сервера БД в секундах.

Синтаксис:

<select_timeout>число</select_timeout>

где:

  • число - лимит времени ожидания получения результата выборки с сервера БД в секундах.

Необязательный тэг command_timeout лимит времени ожидания выполнения команды серверу БД в секундах.

Синтаксис:

<command_timeout>число </command_timeout>

где:

  • число - лимит времени ожидания выполнения команды на сервера БД в секундах.

Пример:

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  …

  <database>

    <provider>MSSQL</provider>

    <work-db-connection-string>Integrated Security=SSPI;Initial Catalog=MyDB;Data source=(local)\SQLEXPRESS</work-db-connection-string>

    <select_timeout>30000</select_timeout>

    <command_timeout>30000</command_timeout>

  </database>

  …

</server-config>

Внимание! Максимальное значение для параметров select_timeout и command_timeout равно 65535. 

 

Настройка протоколирования <logging>

Необязательный параметр конфигурации logging определяет настройку протоколирования работы сервера приложений. В платформе определены следующие типы хранилищ протокола, в которые выводятся сообщения работы СП:

  • Консольный вывод
  • Текстовой файл
  • Журнал событий ОС

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

Внутри тэга logging определяется тэг loggers, в котором, используя тэги logger, перечисляются один за другим все необходимые варианты протоколирования.

Пример:

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  ...

  <logging>

    <loggers>

      <logger type="...">...</logger>

      <logger type="...">...</logger>

    </loggers>

  </logging>

 

</server-config>

Для выбора типа протоколирования у тэга logger используется атрибут type, значением которого является полное имя класса (включая имя сборки) соответствующего типа протокола. Внутри тэга logger с помощью тэгов filter-level и params задаются настройки текущего протокола.

Синтаксис:

<logger type="тип протокола">

  <filter-level>уровень фильтрации сообщений</filter-level>

  <params>

    <item key="имя параметра" value="значение параметра"></item>

    <item key="имя параметра" value="значение параметра"></item>

    …

  </params>

</logger>

где:

  • тип протокола - определяет тип протокола и может принимать следующие значения:

Значение

Описание

Parus.Net.Logger.StandardStores.ConsoleLogStore, AppServer.Common

Консольный вывод

Parus.Net.Logger.StandardStores.TextFileLogStore, AppServer.Common

Текстовой файл

Parus.Net.Logger.StandardStores.SysLogStore, AppServer.Common

Журнал событий ОС

  • уровень фильтрации сообщений - определяет один из предопределенных уровней фильтрации выводимых сообщений:

Значение

Описание

Minimal

Все сообщения без исключений

VeryLow

Все сообщения на уровне обращения к БД

Low

Все сообщения на уровне публикации объектов для доступа удаленного клиента, а также события отключения сессии

BelowNormal

Все сообщения на уровне менеджера нотификации клиента

Normal

Все сообщения на уровне развертывания пакетов

AboveNormal

Все сообщения менеджера нотификации клиента

BelowHigh

Ошибки асинхронных задач

High

Все ошибки

AboveHigh

В настоящее время не используется (уровень фильтрации такой же, как и VeryHigh)

VeryHigh

Вывод отладочной информации

Maximal

Вывод всех сообщений отключен

  • По умолчанию для консольного режима работы сервера приложений используется уровень фильтрации VeryLow, а для режима работы в качестве службы - AboveNormal.
  • имя параметра - имя параметра для настройки конкретного типа протокола;
  • значение параметра - значение параметра для настройки конкретного типа протокола.

Имена параметров и их значения зависят от конкретного типа протокола.

Вывод протокола в консольное окно сервера приложений
(type = "Parus.Net.Logger.StandardStores.ConsoleLogStore")

Этот тип протоколирования не имеет специфических параметров, и поэтому тэг params может быть опущен.

Пример:

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  ...

  <logging>

    <loggers>

      …

      <logger type="Parus.Net.Logger.StandardStores.ConsoleLogStore, AppServer.Common">

        <filter-level>Low</filter-level>

      </logger>

      …

    </loggers>

  </logging>

  …

</server-config>

Вывод протокола в текстовый файл
(type = "Parus.Net.Logger.StandardStores.TextFileLogStore")

Определяет вывод протокола в файл.

Дополнительные параметры (тэг params):

  • path - путь к папке, где хранятся создаваемые файлы протокола. Имена файлов протоколов формируются автоматически;
  • period - период создания файлов. Значением данного параметра является одна из предопределенных констант.

Значение

Описание

hourly

Новый файл протокола создается каждый час. Имена файлов имеет вид ГГГГ_ММ_ДД_ЧЧ.log, где ГГГГ - год, ММ - месяц, ДД -день, ЧЧ - час, например: 2012_10_16_13.log

daily

Новый файл протокола создается ежедневно. Имена файлов имеет вид ГГГГ_ММ_ДДD.log, где ГГГГ - год, ММ - месяц, ДД -день, например: 2012_10_16D.log

weekly

Новый файл протокола создается еженедельно. Имена файлов имеет вид ГГГГ_ММ_ННW.log, где ГГГГ - год, ММ - месяц, НН -неделя года, например: 2012_10_41W.log

monthly

Новый файл протокола создается ежемесячно. Имена файлов имеет вид ГГГГ_ММ.log, где ГГГГ - год, ММ - месяц, например: 2012_10.log

Пример:

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  ...

  <logging>

    <loggers>

      <logger type="Parus.Net.Logger.StandardStores.TextFileLogStore">

        <filter-level>Minimal</filter-level>

        <params>

          <item key="path" value="C:\Temp\Logs"/>

          <item key="period" value="daily"/>

          <item key="size" value="1000000" />

        </params>

      </logger>

    </loggers>

  </logging>

</server-config>

 

 

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

Настройка безопасности <security-config>

Во вложенном тэге <role-groups> определяются назначения ролей сервера приложений группам пользователей ОС. В текущей версии применяются две роли: право на работу в приложениях системы (роль User) и право на администрирование системы (роль ServerAdministrator). Обязательно должны быть перечислены обе роли: User и ServerAdministrator. Допускается назначение обеих ролей одной группе пользователей, но назначить нескольким группам операционной системы одну роль сервера приложений нельзя.

Пример:

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  ...

  <security-config>

    <role-groups>

      <role-group group-name="Users" role="User"/>

      <role-group group-name="AppServerAdministrators" role="ServerAdministrator"/>

    </role-groups>

  </security-config>

</server-config>

Пример файла конфигурации:

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 

  <!-- подключение к базе tornado локально установленного SQL Server-->

  <database>

    <provider>MSSQL</provider>

    <work-db-connection-string>Integrated Security=SSPI;Initial Catalog=tornado;Data Source=(local)</work-db-connection-string>

  </database>

 

  <!-- одновременно вывод в файл и консольное окно-->

  <logging>

    <loggers>

      <!-- самый подробный файл протокола создается ежедневно в папке C:\Temp\Logs-->

      <logger type="Parus.Net.Logger.StandardStores.TextFileLogStore, AppServer.Common">

        <filter-level>Minimal</filter-level>

        <params>

          <item key="path" value="C:\Temp\Logs"/>

          <item key="period" value="daily"/>

        </params>

      </logger>

      <!-- в консольное окно выводятся ошибки-->

      <logger type="Parus.Net.Logger.StandardStores.ConsoleLogStore, AppServer.Common">

        <filter-level>High</filter-level>

      </logger>

    </loggers>

  </logging>

  <!-- члены группы Сотрудники могут использовать и администрировать сервер приложений -->

  <security-config>

    <role-groups>

      <role-group group-name="Сотрудники" role="User"/>

      <role-group group-name="Сотрудники" role="ServerAdministrator"/>

    </role-groups>

  </security-config>

</server-config>

Настройка сервисных портов <network>

Параметры notify-service и help-service определяют соответственно порты для вспомогательного порта обеспечивающего работу ассинхронных задач и порта для работы со справкой.

  • notify-service содержит только вложенный тэг <port>. Тэг <port> определяет номер порта для сервисной работы КСП и СП.
  • help-service содержит только вложенный тэг <port>. Тэг <port> определяет номер порта на котором будет работать сервис справочной системы.

Пример:

<network>

 

  <notify-service>

    <port>8083</port>

  </notify-service>

 

  <help-service>

  <port>8084</port>

  </help-service>

 

</network>

Настройка рабочей папки сервера приложений <storage>

Необязательный параметр storage позволяет переопределить рабочую папку сервера приложений. Данная папка используется сервером приложений для хранения своего кэша и других вспомогательных файлов. При автоматическом обновлении путь этой папки также используется для сохраняется копии БД и полученных пакетов.

 

Пример:

      <storage>

            <path>C:\ProgramData\Parus.TornadoServer</path>

      </storage>

Настройки параметров аудита сервера <audit>

  • Необязательные вложенные параметр <buffered>,  <flush-on-events-count> и <flush-on-seconds-pass> отвечают за настройку параметров аудита. 
  • buffered определяет включение или отключение режима буферизации записи лога.
  • Установленное значение true указывает, что режим буферизации включен.
  • flush-on-events-count устанавливает предельное количество (буфер) записей журнала действий, хранящихся в памяти, до записи в БД. 
  • flush-on-seconds-pass задает предельный промежуток времени в секундах для хранения журнала действий в памяти, до записи в БД. 

Пример:

      <audit>

          <buffered>true</buffered>

          <flush-on-events-count>1000</flush-on-events-count>

          <flush-on-seconds-pass>120</flush-on-seconds-pass>

      </audit>

 

Настройка отображаемого на клиенте имени БД <instance>

  • Необязательный параметр instance, имеет вложенный тэг <name>. Данный тэг позволяет идентифицировать принадлежность экземпляра клиентского приложения определенному серверу. В строке статуса рабочего стола клиента приложения, в секции Сервер, будет выводится указанное значение name.

Пример:

      <instance>

          <name>TestServer</name>

      </instance>

Пример файла appserver.config для SQL

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <database>

    <provider>MSSQL</provider>

    <work-db-connection-string>Data Source=(local);Initial Catalog=TESTINST1;Integrated Security=True;User ID=;Password=;Connect Timeout=1800</work-db-connection-string>

  </database>

  <logging>

    <loggers>

      <!--<logger type="Parus.Net.Logger.StandardStores.TextFileLogStore, AppServer.Common">

                        <filter-level>Minimal</filter-level>

                        <params>

                             <item key="path" value="C:\ProgramData" />

                             <item key="period" value="daily" />

                             <item key="size" value="1000000" />

                        </params>

                  </logger>-->

      <logger type="Parus.Net.Logger.StandardStores.ConsoleLogStore, AppServer.Common">

        <filter-level>High</filter-level>

      </logger>

    </loggers>

  </logging>

  <security-config>

    <role-groups>

      <role-group role="User" group-name="Пользователи" />

      <role-group role="ServerAdministrator" group-name="Администраторы" />

    </role-groups>

  </security-config>

  <network>

      <notify-service>

        <port>8083</port>

      </ notify-service>

      <help-service>

        <port>8084</port>

      </help-service>

    </network>

  <storage>

    <path>C:\ProgramData\Parus.TornadoServer</path>

  </storage>

  <audit>

    <buffered>true</buffered>

    <flush-on-events-count>1000</flush-on-events-count>

    <flush-on-seconds-pass>120</flush-on-seconds-pass>

  </audit>

  <instance>

    <name>TestServer</name>

  </instance>

</server-config>

Пример файла appserver.config для postgre

<?xml version="1.0" encoding="windows-1251"?>

<server-config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <database>

    <provider>PostgreSQL</provider>

    <work-db-connection-string>Server=127.0.0.1;Port=5432;Database=test;User ID=postgres;Password=12345678;MaxPoolSize=100;CommandTimeout=300;</work-db-connection-string>

  </database>

  <logging>

    <loggers>

      <!--<logger type="Parus.Net.Logger.StandardStores.TextFileLogStore, AppServer.Common">

                        <filter-level>Minimal</filter-level>

                        <params>

                             <item key="path" value="C:\ProgramData" />

                             <item key="period" value="daily" />

                             <item key="size" value="1000000" />

                        </params>

                  </logger>-->

      <logger type="Parus.Net.Logger.StandardStores.ConsoleLogStore, AppServer.Common">

        <filter-level>High</filter-level>

      </logger>

    </loggers>

  </logging>

  <security-config>

    <role-groups>

      <role-group role="User" group-name="Пользователи" />

      <role-group role="ServerAdministrator" group-name="Администраторы" />

    </role-groups>

  </security-config>

  <network>

      <notify-service>

        <port>8083</port>

      </ notify-service>

      <help-service>

        <port>8084</port>

      </help-service>

  </network>

  <storage>

    <path>C:\ProgramData\Parus.TornadoServer</path>

  </storage>

  <audit>

    <buffered>true</buffered>

    <flush-on-events-count>1000</flush-on-events-count>

    <flush-on-seconds-pass>120</flush-on-seconds-pass>

  </audit>

  <instance>

    <name>TestServer</name>

  </instance>

</server-config>