[Previous] [Next] [Contents]

5. Настройка сервера. Конфигурационные файлы.

5.1. Основной конфигурационный файл - amstat.conf

Основным конфигурационным файлом сервера является `amstat.conf'. Этот файл читается всеми компонентами сервера, поэтому каждая из них должна знать, где он находится. В связи с тем, что сервер доступен только в двоичной форме и, в то-же время, может быть установлен Вами в произвольный каталог, компоненты сервера ищут `amstat.conf' в каталоге `/etc'. Для удобства перехода от предыдущих версий сервера, компоненты сервера сначала пытаются читать файл `/etc/amstat-1.0.conf/' и только если он не найден - `/etc/amstat.conf' (это позволяет иметь на одном компьютере две версии сервера).

Если Ваша система поддерживает символьные ссылки, то я рекомендую не копировать файл в каталог `/etc', а сделать символьную ссылку командой:

      ln -s ~stat/amstat.conf /etc/amstat.conf

Рассмотрим все параметры конфигурации, которые Вы можете использовать в этом файле:

-- SQL процессор --

sql-database

Название базы данных SQL, используемой сервером. По умолчанию - statserv.

sql-type

Тип SQL-сервера. В настоящий момент поддерживается только shareware реализация SQL - mSQL (исходные тексты доступны с ftp://bond.edu.au/pub/Minerva/msql/, версии использованные для построения amstat - ftp://ftp.f1.ru/pub/msql/).

sql-server

Доменное имя компьютера, на котором установлен SQL сервер. По умолчанию подразумевается, что сервер установлен на локальном компьютере и доступ к нему осуществляется через unix-socket.

sql-port

TCP-порт, на котором ожидает запросов SQL сервер. Значение по умолчанию зависит от типа используемого сервера (для mSQL - 1112).

sql-socket

Для более быстрого обращения к серверу (в тех серверах, которые поддерживают это) может использоваться UNIX socket. Значение по умолчанию зависит от типа используемого сервера (для mSQL - /dev/msql).

-- Каталоги --

home-dir

Домашний каталог сервера. Здесь производится поиск большинства конфигурационных файлов, отсюда "растет" иерархия подкаталогов сервера. По умолчанию - `/var/local/stat'. Типичной настройкой является указание только этого параметра и никаких других из группы "каталоги".

lock-dir

Каталог, в котором будут создаваться временные файлы - "замки". Сервер использует их для блокировки в те моменты, когда одновременный доступ к какому-либо ресурсу нескольких модулей нежелателен. Допустимо указать здесь системный каталог для блокировок (в BSD это обычно `/var/spool/locks'). По умолчанию - {home-dir}/locks

bin-dir

Каталог, в котором лежат исполняемые модули. Не рекомендуется указывать этот параметр. По умолчанию - {home-dir}/bin

server-dir

Каталог, в котором хранятся необработанные запросы пользователй к серверу, и прочая информация, относящаяся к запросам пользователей. По умолчанию - {home-dir}/server

userbase-dir

Каталог, в котором хранятся персональные каталоги пользователей. Внимание! В текущей версии список пользователей определяется считыванием списка подкаталогов в нем! В связи с этим в нем не должно быть "лишних" каталогов. Значение по умолчанию - {home-dir}/userbase

-- Адреса, домены --

domain

Домен по умолчанию для остальных параметров этой группы. На все остальные параметры группы распространяется следующее правило умолчания: если в адресе не найден символ '@', то к нему справа приписывается @{domain}.

postmaster

Адрес постмастера. По умолчанию - postmaster@{domain}.

from

Адрес, который будет подставляться в поле "From: " ответов сервера. По умолчанию - statserv@{domain}.

admin

Адрес администратора сервера. Используется в сообщениях в контексте "пишите администратору сервера по адресу ..", а также подставляется в исходящие от сервера письма в поле "Reply-To: ". По умолчанию - stat-adm@{domain}.

sender

Адрес, для подстановки в поле "Sender: ". Обычно именно этот адрес попадает в статистику - по нему выделить в статистике почту от сервера и, например, сделать ее бесплатной. Кроме того на этот адрес сыпятся различные сообщения об ошибках от почтовой службы - поэтому адрес должен быть реальным (обычно alias на postmaster или в /dev/null). По умолчанию поле "Sender: " не формируется.

carbon-copy

Адрес, на который будут дублироваться все почтовые сообщения, отсылаемые сервером. Удобно для отладки. Значения по умолчанию для этого параметра нет.

-- Имена и названия --

organization

Название Вашей организации по английски. Вписывается в поле Organization: писем всех исходящих от сервера статистики писем. Кроме того, к этому полю привязан ключ.

admin-name

Имя администратора по английски. Вписывается вместе с адресом (параметр конфигурации admin) в поле "Reply-To: " всех исходящих от сервера статистики писем.

-- Внешние модули --

mailer

Почтовый агент. Должен воспринимать на входе письмо со всеми заголовками и доставлять его по указаным в аргументах через пробел адресам. Если в определение входит комбинация "%s", то она заменяется на {sender}. Значение по умолчанию - "/usr/lib/sendmail -f%s ". Напоминание: параметры можно заключать в кавычки - это единственный способ передать в качестве параметра настройки строку, оканчивающуюся на пробел.

-- Файл ключа --

key-file

Этот параметр необходимо добавить после оплаты, регистрации и получения ключа для указания на его местоположение. Значения по умолчанию у этого параметра нет, однако рекомендуется разместить ключ с именем `.Key'> в домашнем каталоге сервера.

-- Почтовый сервер --

listener-uid

Если задан этот параметр, то модулем listener проверяется соответствие real user id с указанным значением. Полезно для предотвращения подсовывания писем в listener "гостями".

listener-gid

Если задан этот параметр, то модулем listener проверяется соответствие real group id с указанным значением.

server-run

Если задан этот параметр (значение может быть 'yes' или 'true'), то сразу после помещения запроса пользователя в очередь запускается разборщик очереди (фоновым процессом). Полезно на замену запуску модуля runqueue через cron.

Для использования этой опции не забудьте добавить listener флажки setuid/setgid. Это можно сделать такими командами:

      chown 0 listener
      chgrp 0 listener
      chmod ug+s listener

server-keep-jobs

Если задан этот параметр (значение может быть 'yes' или 'true'), то обработанные сервером почтовые задания не удаляются, а переименовываются. Это позволяет накапливать архив запросов клиентов к серверу.

-- Экономика и константы --

taxes

Ставка НДС в виде дробного числа меньшего единицы. По умолчанию - 0.2 (20%).

-- Денежные единицы --

currency-thousands

Разделитель тысяч в денежных единицах. По умолчанию значение берется из locale.

currency-precision

"Точность" валюты, ее минимальное значение. По умолчанию значение берется из locale.

transient-precision

Точность промежуточных величин. В настоящий момент используется только для цен прайс-листов. По умолчанию - одна сотая {currency-precision}.

-- Прочее --

language

Задает двухбуквенный код системного языка. Значение по умолчанию зависит от Вашего домена - для доменов .ru или .su значением будет `ru'. Во всех остальных случаях - `en'. Рекомендуется всегда задавать этот параметр в некоторое осмысленное значение (ua, by, uz, it и т.п.), даже если все Ваши пользователи пользуются одним и тем-же языком - никогда нельзя гарантировать, что завтра у Вас не появится пользователь из, скажем, Новой Гвинеи.

uid

Задает цифровой идентификатор пользователя, от имени которого будут выполнять все действия модули сервера. Может быть опущен - в этом случае изменения uid сервер делать не будет.

gid

Задает цифровой идентификатор группы пользователя, от имени которого будут выполнять все действия модули сервера. Может быть опущен - в этом случае изменения gid сервер делать не будет.

price-currency

Параметр позволяет задать валюту "по умолчанию" для всех прайс-листов. Полезно для случаев "долларовых" цен. Подробнее смотрите в описании модуля convertstat. По умолчанию цены прайс-листов считаются выраженными в единицах основной валюты.

report-delimiters

Параметр позволяет задать символы, которыми ограничиваются команды в текстах форм генератора отчетов. Должно быть указано не менее двух символов. Подробнее смотрите в описании модуля mkreport>. По умолчанию - "<>"

legal-chars

Список допустимых символов в доменах и именах пользователей (используется при преобразовании адресов из доменной формы в банговую); не должен включать в себя символы из набора `!@%<>,:' - в Internet адресах они имеют специальное значение. По умолчанию допустимыми считаются все буквы, все цифры и символы из набора `-_.[]/='.

-- Отладочные параметры --

debug-level

Уровень выдачи отладочной информации. Чем больше значение, тем более подробная информацию будет выводена. Смысл имеют значения от 0 до 10. По умолчанию - 0.

debug-allmail

Если этот параметр установлен в `yes' или `true', то вся генерируемая сервером почта будет отсылаться администратору сервера и только ему. Полезно после внесения изменений в формы отчетов для провеки (чтобы не беспокоить пользователей).

Проверить созданную Вами конфигурацию можно модулем ckconfig, запущенным без параметров.

Кроме того, проверить правильность интерпретации сервером параметров конфигурации можно запустив ckconfig с параметром `-n' .

Внимание! Для нормальной работы сервера модуль ckconfig должен быть доступен всем модулям сервера (с его помощью читают конфигурацию небинарные модули - shell и perl)! Наиболее удобно сделать символьную ссылку из каталога, в котором производится поиск программ общего назначения (например `/usr/local/bin') в ее местоположене в структуре сервера. Например, если сервер установлен в `/var/local/stat', то команда может выглядеть так:

      ln -s /var/local/stat/bin/ckconfig /usr/local/bin

5.2. Настройка SQL базы

Сервер хранит практически все данные за исключением конфигурационных файлов в SQL базе данных. Если иного не указано параметром конфигурации sql-database, то используется база данных statserv. Перед эксплуатацией сервера базу данных необходимо создать средствами используемого SQL сервера, например для mSQL соответствующая команда будет выглядеть так:

      msqladmin create statserv

Кроме того бывает полезно ограничить доступ к базе данных - в mSQL для этого используется файл `msql.acl'. Подробнее о его формате смотрите в документации к mSQL.

Также имеет смысл время от времени сохранять backup версии базы данных, в "серьезных" базах для этого обычно существуют штатные средства, а в mSQL можно воспользоваться командой `msqldump'.

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

Общим правилом является следующее - до тех пор, пока Вы не планируете делать что-то специфичное с таблицами или пытаться писать свои дополнения к серверу, не делайте действий по созданию, изменению или удалению данных из таблиц вручную. Таким образом, остаток этого раздела следует считать скорее справочным пособием для интересующихся структурой данных.

Все таблицы, описанные ниже, могут включать в себя дополнительные поля, если они Вам необходимы; указанные поля могут следовать в другом порядке; текстовые записи могут состоять из большего числа символов (не не из меньшего!). При включении новых полей необходимо помнить, что им нельзя присваивать опцию `NOT NULL', т.к. в этом случае сервер не сможет создать новую запись в такой таблице.

-- ids - идентификаторы --

Для удобства однозначной идентификации записей в таблицах сервера (что особенно удобно для разработки разного рода дополнительных модулей к серверу) каждая запись всех таблиц сервера имеет уникальный идентификатор ряда. Ввиду отсутствия штатных средств генерации идентификаторов в mSQL для их ведения используется отдельная таблица - ids.

Для создания таблицы ids Вы можете запустить модуль ckconfig без параметров или выполнить такую операцию SQL:

 
      CREATE TABLE ids
      ( tabname CHAR(16) NOT NULL PRIMARY KEY,
        tabid INT NOT NULL,
        cmt CHAR(200),
      )

Рассмотрим назначение полей:

tabname

Название таблицы (accounts, statistic, rates и т.д.).

tabid

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

cmt

Комметарий, название таблицы.

-- accounts - лицевые счета --

Лицевые счета пользователей хранятся в таблице accounts - необходимо создать ее создать. Для этого можно запустить модуль ckconfig без параметров или создать ее вручную, выполнив в базе данных сервера статистики такую команду (в mSQL это можно сделать запустив `msql statserv'):

 
      CREATE TABLE accounts
      ( id INT NOT NULL PRIMARY KEY,
        user CHAR(16) NOT NULL,
        date INT NOT NULL,
        sum REAL NOT NULL,
        cmt CHAR(200),
        flag INT
      )

Рассмотрим назначение полей:

id

Уникальный идентификатор ряда. Удобен для последующих операций с таблицей.

user

Внутреннее имя пользователя (будет объяснено при описании пользовательской конфигурации).

date

Здесь и в иных таблицах - дата, целое число, цифры которого представляют собой дату в формате YYYYMMDD.

sum

Сумма средств, добавленная или списанная с лицевого счета пользователя. Дробная величина, при внесении операции сервером округляется до точности основной денежной единицы (параметр currency-precision `amstat.conf').

cmt

Комментарий. Может быть довольно длинным - при выводе переносится на несколько строк.

flag

Поле сбрасываемое сервером в 0 для всех вносимых им записей. Никак не используется, предусмотрено для целей расширения и оставлено из старых версий скорее по традиции.

Не забудьте, что в mSQL для реального выполнения команды необходимо набрать `\g'!

Допустимо вводить в эту таблицу какие-то иные, дополнительные поля, но перечисленные выше должны присутствовать обязательно!

-- statistic - статистические сводки --

Для хранения статистики сервер использует SQL таблицу statistic. Для ее создания Вам необходимо выполнить SQL-команду (или запустить модуль ckconfig без параметров):

      CREATE TABLE statistic
      ( id INT NOT NULL PRIMARY KEY,
        user CHAR(16) NOT NULL,
        date INT NOT NULL,
        name CHAR(16) NOT NULL,
        group CHAR(16) NOT NULL,
        amount REAL NOT NULL,
        sname CHAR(16),
        sum REAL NOT NULL
      )

Назначение полей:

id

Уникальный идентификатор записи.

user

Внутреннее имя пользователя.

date

Дата (формат смотрите в описании accounts). Все операции проводимые сервером в этой таблице имеют отношение к всему месяцу сразу - для индикации этого факта поле `день месяца' устанавливается равным нулю. Например для записей за июнь 1996 года дата будет установлена в 19960600.

name

Имя сервиса. Если формируется сервером, то совпадает с названием сервиса в прайс-листе. Более подробно об этом написано в описании модуля convertstat.

group

Название группы сервиса. Генерируется автоматически на основании данных прайс листов модулем convertstat.

amount

Количество потребленной пользователем услуги. Дробная величина. Обычно имеет смысл подбирать формулы пересчета и единицы измерений таки образом, чтобы значение этого параметра было не меньше 0.01 по абсолютному значению. Это связано с тем, что при выводе генератором отчетов значение выводится с точностью до тысячных.

sname

Единица измерения услуги ("мин", "кб", "стр." и т.п.). Используется только генератором отчетов - mkreport.

sum

Стоимость потребленной услуги для пользователя. Цена услуги при генерации отчета получается делением стоимости на объем услуги.

-- rates - курсы валют --

Если в прайс-листах Вы используете иные валюты, кроме основной или в конфигурации задан параметр price-currency, то серверу необходимо знать курс указанной валюты по отношению к основной.

Для хранения курсов валют служит таблица rates (смотрите также описание модуля setrate). Для ее создания Вам необходимо выполнить SQL-команду (или запустить модуль ckconfig без параметров):

      CREATE TABLE rates
      ( id INT NOT NULL PRIMARY KEY,
        name CHAR(16) NOT NULL,
        date INT NOT NULL,
        rate REAL NOT NULL
      )

Назначение полей:

id

Уникальный идентификатор записи.

name

Название валюты, по нему на валюту ссылаются прайс-листы.

date

Дата, формат ее описан ранее.

rate

Число единиц основной валюты в единице указанной, дробная величина.

-- snames - названия видов сервиса --

Комментарии к сервисам сервер хранит в таблице snames. Именно эта таблица используется генератором отчетов при поиске комментария к указанному в таблице statistic сервису. Таблица генерируется и обновляется автоматически при чтении прайс-листов модулем convertstat (кроме этого модуля прайс-листы не анализируются ничем).

Для создания таблицы snames можно запустить модуль ckconfig без параметров или выполнить операцию SQL:

      CREATE TABLE snames
      ( id INT NOT NULL PRIMARY KEY,
        name CHAR(16) NOT NULL,
        descr CHAR(200) NOT NULL,
      )

Назначение полей:

id

Уникальный идентификатор записи.

name

Наименование сервиса (соответствует полю name таблицы statistic).

descr

Описание сервиса. При выводе переносится на несколько строк по словам, что позволяет делать его довольно длинным.

-- sgroups - названия групп сервиса --

Для хранения названий групп сервиса сервер использует таблицу sgroups. Таблица генерируется и обновляется автоматически при чтении прайс-листов модулем convertstat.

Для создания таблицы sgroups можно запустить модуль ckconfig без параметров или выполнить операцию SQL:

      CREATE TABLE sgroups
      ( id INT NOT NULL PRIMARY KEY,
        name CHAR(16) NOT NULL,
        descr CHAR(200) NOT NULL,
      )

Назначение полей:

id

Уникальный идентификатор записи.

name

Наименование сервиса (соответствует полю name таблицы statistic).

descr

Описание сервиса. При выводе переносится на несколько строк по словам, что позволяет делать его довольно длинным.

5.3. Создание базы пользователей

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

  1. Выбрать внутреннее имя пользователя. Имя должно состоять из не более 15 английских букв (допустимо использовать также цифры, знаки `.' (точка), `-' (минус) и `_' (подчерк)) и не должно начинаться с точки. Обычно бывает удобно назначить в качестве внутреннего имени uucp имя пользователя. Пользователь должен будет знать свое имя - оно используется для авторизации его запросов к серверу, поэтому не стоит давать имена luser, lamer и т.п. :)
  2. Создать персональный каталог пользователя в каталоге, который Вы указали в `amstat.conf' параметром userbase-dir. Название каталога должно совпадать с внутренним именем пользователя! В случае, если у вас более 100 пользователей, то обычно имеет смысл разбить пользователей по первой букве имени (а иногда и по второй). Для этого в каталоге, который Вы указали директивой конфигурации userbase-dir необходимо сделать следующие действия:

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

          {userbase-dir}
           |- alina         - пользовательский каталог
           |- impulse
           |- intusm
           |- informex
           |- itv
           \- julia
     и
          {userbase-dir}
           |- .alpha        - файл-признак разбивки по алфавиту
           |- a
           |  \- alina      - пользовательский каталог
           |
           |- i
           |  |- .alpha     - файл-признак разбивки второго уровня
           |  |- im
           |  |  \- impulse - пользовательский каталог
           |  |
           |  |- in
           |  |  |- intusm
           |  |  \- informex
           |  |
           |  \- it
           |     \- itv
           |
           \- j
              \- julia
    

  3. Создать в пользовательском каталоге файл ` user.cf' и отредактировать его (пример можно взять из поставляемого с сервером каталога `.example').

Для проверки созданного можно запустить модуль ulist или mkreport с параметрами `-a =public.fm'. Помните, что в демонстрационной версии пользователей может быть только 10!

5.4. Пользовательская конфигурация - user.cf

В персональном каталоге каждого пользователя должен находиться файл `user.cf', в нем описываются настройки сервера по отношению к пользователю. Обычно бывает удобно не писать этот файл "руками", а доверить это модулю adduuser (обязательно прочитайте его описание, прежде, чем запускать!) или скопировать его из `.example' и подредактировать, где необходимо.

Как и в остальных конфигурационных файлах сервера, строки, начинающиеся с символа `#', считаются комментариями; параметр(ы) от директивы отделяются произвольным количеством пробелов и/или табуляций. В файле user.cf могут быть указаны следующие директивы:

-- Технические параметры --
username

Внутреннее имя пользователя. Должно совпадать с названием каталога, в котором помещен `user.cf'. Начиная с версии 1.2 эта директива стала необязательной и более того, ее применение не рекомендуется.

accname

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

language

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

prices

Набор ценовых конфигураций через пробел. Используется модулем convertstat для преобразования `*.st' файлов в "денежную" статистику. Если первым символом названия является `~' (тильда), то соответствующее описание цены ищется в пользовательском каталоге, иначе - в подкаталоге `prices' домашнего каталога сервера.

legal

Набор regex (см. re_format (7)) масок, выделяющий допустимые адреса. Только с адресов, которые подойдут к указанным здесь маскам могут приходить команды серверу статистики. Используется "Return-Path: " или "From: " писем (приведенный к uucp нотации).

Примечание: на regex навешиваются спереди `^' и сзади `$' - таким образом сравнение происходит со всей строкой. Если это не нужно - добавьте в начале или конце строки `.*'.

postmaster

Адрес пользователя для переписки - на этот адрес отсылаются все документы генератором отчетов.

-- Для генератора отчетов --

Начиная с версии 1.3 сервер все дополнительные данные для генератора отчетов хранит и использует единообразно (смотрите команду print в описании mkreport). Используется следующий формат:

[ext] имя[/native|/english] значение

Т.е. строка определения дополнительного параметра может начинаться с ключевого слова ext, затем, через пробел, следует имя параметра и через пробел - значение параметра. После имени через наклонную черту может быть задан язык - родной (native) или международный (english). Допустимо указывать признак языка одной буквой (e или n). Если язык не указан, то подразумевается, что он `родной'. Пример:

# Имя директора по русски и по английски
#
ext     manager/e       Ivan I. Ivanov
ext     manager/native  Иван Иванович Иванов
#
# Здесь без префикса ext и без указания языка
#
fax                     +7 555 444 7777
#
# А можно было записать так:
#
# ext   fax/native      +7 555 444 7777

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

Для совместимости с предыдущими версиями сервера при чтении конфигурации распознаются некоторые дополнительные поля (в скобках указано эквивалентное название в новой системе):

addrr (location/native)

Почтовый адрес пользователя на русском языке.

addre (location/english)

Почтовый адрес пользователя на английском языке.

contract (contract)

Номер или название договора.

country (country)

Страна заключения договора (по традиции, из карточек).

domain (domain)

Основной домен пользователя

orgr (organization/native)

Название организации на русском языке.

orge (organization/english)

Название организации на английском языке.

phones (phones)

Телефоны, по которым можно связаться с пользователем.

realr (realname/native)

Имя ответственного представителя пользователя на русском языке. В связи с исторически сложившейся ошибкой в документации, этот параметр может так-же называться и namer.

reale (realname/english)

Имя ответственного представителя пользователя на английском языке (может так-же называться namee).

system (system)

Операционная система, в которой работает пользователь.

whowhen e-mail YYMMDD (whowhen)

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

5.5. Почтовый интерфейс к серверу

Сервер может быть настроен на прием команд от пользователей по электронной почте (существует также и WWW-интерфейс - htreport).

В связи со сравнительно небольшой почтовой нагрузкой на сервер статистики используется возможность sendmail (или другого MTA, например uumail) передавать письма во входной поток программам. Для этого Вы должны добавить в Ваш системный файл псевдонимов (обычно `/etc/aliases' или `/usr/lib/aliases') строки, подобные нижеследующим:

      statserv: "|/var/local/stat/bin/listener"
      stat-adm: root

Обычно sendmail запускает программы от имени малопривелегированного пользователя, поэтому проверьте возможность sendmail ``добраться'' до модуля listener. Для этого можно воспользоваться двумя способами:

  1. Все каталоги в пути к listener (в приведенном выше примере - `/var', `/var/local', `/var/local/stat' и `/var/local/stat/bin') должны иметь разрешение на поиск. Для этого выполните каждого из каталогов команды, подобные следующим:

    bash# chmod a+x /var
    bash# chmod a+x /var/local
    bash# chmod a+x /var/local/stat
    bash# chmod a+x /var/local/stat/bin
  2. Модуль listener должен буть перемещен в каталог, разрешение на поиск в котором у sendmail уже есть, - наиболее подходит по смыслу для этого (в BSD-like системах) каталог `/usr/libexec' или `/usr/local/libexec'.

Кроме того, при работе модуль listener должен располагать правами доступа к конфигурационным файлам, каталогам и базам данных сервера статистики. Команды могуть быть такими:

bash# chown root.wheel listener
bash# chmod ug+s listener

Обязательно прочитайте также описания модулей listener и runqueue.

5.6. Регулярные действия

Сервер должен выполнять некоторые действия регулярно:

  1. Если Вы не задали параметр `server-run yes' в `amstat.conf', то один или два раза в час (выбор конкретного интервала за Вами) должен запускаться модуль runqueue. Он выполняет команды к серверу, присланные пользователями и накопленные в очереди модулем listener. Однако рекомендуемым способом запуска runqueue остается все-таки указание параметра `server-run yes', ведущее к автоматическому его запуску при поступлении письма-задания от пользователя.

    Для того, чтобы запускать сервер периодически необходимо воспользоваться вписать строки, подобные следующим, в конфигурационный файл cron для пользователя root (обычно для этого лучше всего использовать команду `crontab -e -u root'):

          17,47 * * * * /var/local/stat/bin/runqueue
    

    Никакой магии в числах 17,47 нет - просто обычно я смещаю задания для cron вразнобой для плавного распределения нагрузки.

  2. Один раз в сутки должен запускаться модуль daily. Он подсчитывает расходы пользователей за сутки, рассылает предупреждения и т.п. Из него-же автоматически один раз в месяц вызывается модуль monthly, который зачисляет расходы на лицевые счета пользователей, рассылает Акты и т.п.

    Запуск модуля daily не рекомендуется производить из cron. Лучше задействовать для этой цели системный ежедневно выполняемый скрипт (обычно он называется `/etc/daily.local' или просто `/etc/daily'). Внесите в его конец строки, подобные этим:

          # Daily statistic processing
          #
          /var/local/stat/bin/daily
    

    Такая рекомендация связана с тем, что частично обработкой log-файлов и статистики обычно занимается `/etc/daily', что потенциально может привести к одновременной его работе с модулем daily сервера статистики в случае запуска последнего из cron. В большинстве ситуаций это нежелательно.

    Кроме того, обычно имеет смысл вставить в модуль daily или системный скрипт для ежедневных действий создание архивной копии SQL базы данных. В состав сервера статистики такой утилиты пока не входит.

Других требований к регулярно выполняемым действиям в текущей версии сервера нет.

5.7. Мелочи и подсказки

Файл `.month'

В домашнем каталоге сервера поместите файл `.month', внутри которого должна содержаться одна строка из одного слова - год и месяц в форме `YYYYMM' (например - `199606'). По этому файлу модуль monthly ориентируется в принятии решения - пора-ли рассылать месячную статистику и списывать суммы за прошедший месяц со счетов пользователей.

Неофициальные пользователи

Часто бывает так, что некоторые пользователи (свои сотрудники, просто "интересные" люди) не имеют договоров и итоговых актов им отсылать не надо. Для индикации этого факта создайте в домашнем каталоге такого пользователя текстовый файл `status' и поместите в него строку `Nonofficial'. Фактически, в этой строке важно лишь наличие большой буквы `N' - можно ей и ограничиться.

О том, как использовать такой статус пользователя смотрите в описании модуля mkreport.


[Previous] [Next] [Contents]