Запуск дополнительной копии модуля

На одном сервере Asterisk могут быть запущены несколько копий модуля. Они могут быть подключены к одной телефонии, но к разным CRM.

Важно:

  1. Внутренние номера на порталах не должны пересекаться (иначе один звонок будет попадать в несколько порталов).

  2. У каждой копии модуля должен быть свой конфиг-файл и свои сетевые порты для подключения к админке, а также получения команд из CRM.

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

  4. Лицензирование осуществляется по адресам порталов.

  5. При запуске нескольких копий модуля на один и тот же портал возможно превышение лимита запросов API CRM (копии модуля не согласовывают между собой частоту запросов).

Изменения описаны для Itgrix_bx. Для Itgrix_amo всё так же, только пути будут содержать itgrix_amo вместо itgrix_bx.

Шаги создания копии

1. Создаём второй конфиг

Назовём его /etc/itgrix_bx/config-1.json

cp /etc/itgrix_bx/config{,-1}.json

В новом конфиге исправляем обязательно:

  • port, secure_port другой порт отличный от 8077, 8078

Пример обновлённых значений:

"port": 8075,
"secure_port": 8076,

2. Создаём файл конфигурации для нового сервиса

cp /etc/systemd/system/itgrix_bx{,-1}.service

В новом файле для systemd вносим следующие изменения:

  • Description поменять на имя новой службы (itgrix_bx-1);

  • В ExecStart добавить флаг --config с именем нового конфига, который был создан на шаге 2;

  • В ExecStart поменять имя лог-файла на новое.

Пример обновлённых значений:

[Unit]
Description=itgrix_bx-1

[Service]
ExecStart=/bin/sh -c "/opt/itgrix_bx/itgrix_bx --config=/etc/itgrix_bx/config-1.json >> /var/log/itgrix_bx-1.log"

3. Регистрация второй службы модуля интеграции

Запустим исполняемый файл модуля с ключом --register-instances для того, чтобы модуль обнаружил дополнительную копию:

/opt/itgrix_bx/itgrix_bx --register-instances

4. Настроить ротацию лога

Нужно создать отдельный файл лога cp /var/log/itgrix_bx{,-1}.log и поменять его владельца на пользователя, под которым будет стартовать служба.

В /etc/logrotate.d/itgrix_bx копируем всё содержимое с новым именем лога.

Новое содержимое файла:

/var/log/itgrix_bx.log {

# ротация раз в день. Возможные варианты daily, weekly, monthly, size (например size=1M)
daily

# сохраняется последние 5 ротированных файла
rotate 5

# сжимать ротируемый файл
compress

# сжимать предыдущий файл при следующей ротации
delaycompress

# отсутствие файла не является ошибкой
missingok

# не создаём новый файл, копируем содержимое и обнуляем старый
copytruncate
}

/var/log/itgrix_bx-1.log {

# ротация раз в день. Возможные варианты daily, weekly, monthly, size (например size=1M)
daily

# сохраняется последние 5 ротированных файла
rotate 5

# сжимать ротируемый файл
compress

# сжимать предыдущий файл при следующей ротации
delaycompress

# отсутствие файла не является ошибкой
missingok

# не создаём новый файл, копируем содержимое и обнуляем старый
copytruncate
}

5. Создаём второй кастомизатор

Для первой копии модуля кастомизатор располагается в папке /opt/itgrix_bx/customizer/.

В файле /opt/itgrix_bx/customizer/settings.json (начиная с версий Itgrix_bx-3.9.0 и Itgrix_amo-2.12.0) указаны конфиг и лог первой копии.

Для второй копии создаём папку /opt/itgrix_bx/customizer-1/ и в файле /opt/itgrix_bx/customizer-1/settings.json прописываем конфиг и лог второй копии:

{
  "configCrmField": "bitrix",
  "configPath": "/etc/itgrix_bx/config-1.json",
  "logPath": "/var/log/itgrix_bx-1.log",
  "requestTimeoutSec": 2
}

Для Itgrix_amo "configCrmField": "amo", значения путей содержат itgrix_amo.

ДО версий Itgrix_bx-3.9.0 и Itgrix_amo-2.12.0 настройки кастомизатора хранились в файле /opt/itgrix_bx/customizer/Settings.php:

class Settings {
    const CONFIG_CRM_FIELD    = 'bitrix'; // Название поля в CONFIG_PATH
    const CONFIG_PATH  = '/etc/itgrix_bx/config-1.json';
    const LOG_PATH     = '/var/log/itgrix_bx-1.log';
}

Также в конфиге второй копии /etc/itgrix_bx/config-1.json нужно указать соответствующий кастомизатор:

  "customizer": {
    ...
    "program_path": "/opt/itgrix_bx/customizer-1/customize.php",
    ...
  }

Теперь настраиваем кастомизации в /opt/itgrix_bx/customizer-1/actions/ в соответствии с потребностями второй копии.

6. Запуск/стоп/рестарт/статус/автозапуск

systemctl start itgrix_bx-1 systemctl stop itgrix_bx-1 systemctl restart itgrix_bx-1 systemctl status itgrix_bx-1 systemctl enable itgrix_bx-1 systemctl disable itgrix_bx-1

7. Авторизуемся на портале

При запущенной службе заходим в админку на страницу настройки CRM: localhost:8075/config/master/crm

Выполняем авторизацию.

Last updated