Перейти к содержанию

Установка DocPrinter Broker

Общие замечания

  1. Так как данное приложение написано на python, его установка — копирование файлов с кодом на сервер. Основные трудности могут возникнуть с настройкой окружения — установкой интерпретатора python и необходимых модулей

  2. Обновление можно осуществить простой подменой файлов с исходным кодом. Возможно нужно будет ещё установить недостающие модули. После этого нужно просто перезапустить приложение.

  3. Рекомендуется всегда использовать виртуальное окружение — таким образом можно будет легко избежать проблем с версиями python или отдельных модулей, если на том же сервере потребуется запустить что-то ещё

  4. Все операции (кроме установки) проводятся в root-папке приложения (там, где находятся папки source, config и т.д.)

Установка python

Для работы приложения нужен интерпретатор версии не ниже 3.10. Если в системе уже установлен python более ранней версии его удалять не нужно.

Если нужны несколько версий python на одной машине, то - WINDOWS: В командах создания виртуального окружения используется утилита py launcher, которая идёт с установщиком python версии выше 3.3 - LINUX: придётся использовать не такую удобную pyenv, гайд тут

Особенности установки на Windows

  1. для запуска установки нужны права администратора
  2. если запуск приложения будет не из-под администратора, то нужно установить python для всех пользователей и обязательно проверить, что папка назначения доступна всем пользователям
  3. я отключаю ограничение на длину путей, чтобы потом не было проблем (хотя на практике я их и не встречал)

Настройка виртуального окружения

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

Создание виртуального окружения

  1. С дефолтной версии интерпретатора

    python -m venv venv
    
    python3 -m venv venv
    
  2. Если нужна определённая версия

    Запуск определённой версии с помощью py launcher

    py -3.10 -m venv venv
    

    Заходим в нужную директорию и выполняем

    pyenv local 3.10.4
    python -m venv venv
    

Загрузка виртуального окружения

call venv/Scripts/activate.bat
source venv/bin/activate

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

Установка производится из файла requirements.txt

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

pip install -r path_to/requirements.txt

Простая загрузка под текущую архитектуру пакетов whl

Warning

Пытаться загружать пакеты не под текущую архитектуру крайне не рекомендуется (могут быть проблемы с компилируемыми пакетами)

Сохранить все пакеты:

pip download -r requirements.txt -d "./dependencies"

Отдельный пакет, уже установленный в окружении (если на предыдущем пункте был загружен, например tar.gz вместо whl) :

py -m pip wheel --wheel-dir=./dependencies SomePackage

Установка из локальных пакетов whl

Локально хранимые файлы пакетов whl под нужную платформу должны быть в папке dependencies

pip install --no-index --find-links ./dependencies -r requirements.txt

Запуск приложения

Запуск производится простой командой

python ./source/main.py

Нужно будет ввести мастер-пароль для расшифровки хранимых паролей

Если нужно настроить автозапуск брокера, а необходимость в хранении паролей отсутствует, то нужно использовать опцию командной строки --no_crypt — мастер-пароль не будет запрошен.

Warning

ВНИМАНИЕ! Если в настройках сервера или агента присутствуют поля с суффиксом _enc, вылетит ошибка, так как расшифровать их невозможно.

python ./source/main.py --no_crypt

Сообщение об успешном запуске выглядит так: Примерный вид успешного старта

Сетевую доступность можно проверить по адресу

url/status
Там будет вывод о статусе агентов и самого брокера:

{
    "requests": {
        "total": 164,
        "byAgentType": {
            "VBA": {
                "total": 15,
                "byAgent": {
                    "10.10.100.124:3001": 15
                }
            },
            "MYOFFICE": {
                "total": 57,
                "byAgent": {
                    "python_agent1:5000": 54,
                    "python_agent2:5000": 3
                }
            },
            "R7": {
                "total": 92,
                "byAgent": {
                    "r7_agent1:5002": 91,
                    "r7_agent2:5002": 1
                }
            }
        }
    },
    "VBA": {
        "10.10.100.124:3001": {
            "XLqueueLength": 0,
            "WDqueueLength": 0,
            "PPqueueLength": 0,
            "foldersOnDisk": 0,
            "XLprocesses": 0,
            "WDprocesses": 0,
            "PPprocesses": 0,
            "isAlive": true,
            "isActive": false,
            "responseStatus": 200
        }
    },
    "MYOFFICE": {
        "python_agent1:5000": {
            "jobsSinceStart": 54,
            "foldersOnDisk": 0,
            "runningSubprocesses": 0,
            "activeJobs": 0,
            "maxParallelJobs": 10,
            "isAlive": true,
            "isActive": true,
            "responseStatus": 200
        },
        "python_agent2:5000": {
            "jobsSinceStart": 3,
            "foldersOnDisk": 0,
            "runningSubprocesses": 0,
            "activeJobs": 0,
            "maxParallelJobs": 10,
            "isAlive": true,
            "isActive": true,
            "responseStatus": 200
        }
    },
    "R7": {
        "r7_agent1:5002": {
            "jobsSinceStart": 91,
            "foldersOnDisk": 0,
            "runningSubprocesses": 1,
            "activeJobs": 0,
            "maxParallelJobs": 10,
            "isAlive": true,
            "isActive": true,
            "responseStatus": 200
        },
        "r7_agent2:5002": {
            "jobsSinceStart": 1,
            "foldersOnDisk": 0,
            "runningSubprocesses": 1,
            "activeJobs": 0,
            "maxParallelJobs": 10,
            "isAlive": true,
            "isActive": true,
            "responseStatus": 200
        }
    }
}

Автозапуск

Windows

Как таковой системы авто запуска нет, достаточно создать bat-файл с командами активации виртуального окружения и запуска брокера и положить его/его ярлык в автозагрузку. Такой автозапуск будет работать только при входе пользователя в систему (логине). После запуска приложение будет работать до окончания работы сессии пользователя.

Чтобы брокер запускался вместо с загрузкой системы вне зависимости от логина, нужно обернуть его в службу ОС. Для этого можно использовать стороннюю утилиту nssm (настройка крайне проста, не забудьте включить сохранение вывода консоли в файл). В таком режиме возможно, что первая выгрузка окончится с ошибкой (далее будет работать стабильно, причины не изучались).

Linux

Пока не настроена и не тестирована работа через systemd. Предложений по авто запуску вместе с системой нет. Для того, чтобы приложение продолжило работать после окончания терминальной сессии, можно использовать команду nohup:

nohup python ./source/main.py --no_crypt &

Дополнительно

Не рекомендуется напрямую давать доступ к брокеру через сеть, желательно использовать реверс-прокси, например nginx