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

Установка Python Agent

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

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

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

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

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

Установка python

Для работы приложения нужен интерпретатор версии строго 3.8. Если в системе уже установлен 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.8 -m venv venv
    

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

    pyenv local 3.8.10
    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

Установка SDK МойОфис

SDK МойОфис распространяется разработчиком ПО МойОфис и должен быть загружен отдельно. Для установки необходимо использовать команду установки пакета из .whl файла. Например, для SDK под Windows

pip install MyOfficeSDKDocumentAPI-2022.1-cp38-cp38-win_amd64.whl

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

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

python ./source/main.py

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

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

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

url/status

Там будет вывод о статусе агента:

{
    "jobsSinceStart": 0,
    "foldersOnDisk": 0,
    "runningSubprocesses": 0,
    "activeJobs": 0,
    "maxParallelJobs": 10
}

Автозапуск

Windows

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

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

Linux

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

nohup python ./source/main.py &

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

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