py3o отчеты в Odoo 10 на CentOS 7

Недавно мы рассматривали установку довольно интересной CMS с открытым исходным кодом — Odoo.
К ней прилагается огромное количество модулей. Один из таких модулей — py3o_report. Этот модуль используя опять таки открытое программное обеспечение позволяет генерировать отчеты в формате ODT, XLS, PDF, HTML, DOC, DOCX и т.д. В действительности все форматы, которые поддерживает LibreOffice.
В официальной документации коротко описаны основные шаги по установке модуля и компонентов. И то для системы Debian.
Я же адаптировал инструкцию под CentOS и добавил автоматизации от себя. Выношу материал на ваш суд.
Сперва устанавливаем необходимые зависимости:

yum -y install epel-release
yum -y install java-1.7.0-openjdk libreoffice-writer python2-pip gcc libffi-devel python-devel openssl-devel python2-pip python2-jpype

После этого обновляем pip до последней версии

pip install --upgrade pip

Теперь устанавливаем python-модули, необходимые для работы отчетов

pip install Twisted==16.4.1 pysftp py3o.template py3o.formats py3o.fusion service-identity py3o.renderers.juno py3o.renderserver 

Если ошибок не возникло, то можно проверить корректность установки выполнив 2 команды.
Первая команда:

/usr/bin/python /usr/bin/start-py3o-fusion --debug -s localhost

Терминал будет заблокирован.
После запуска нужно открыть в браузере ссылку http://Your_IP:8765
Должна быть примерно следующая картинка

Если вы это увидели, то можно вернуться в терминал и нажать Ctrl+C что бы прервать процесс.
Вторая команда:

/usr/bin/python /usr/bin/start-py3o-renderserver --java=/usr/lib/jvm/jre-openjdk/lib/amd64/server/libjvm.so --ure=/usr/share --office=/usr/lib64/libreoffice --driver=juno --sofficeport=8997

Тут проще. Если не посыпались ошибки то установка выполнена корректно.
Сперва я запустил оба эти процесса в screen, но после первой же перезагрузки сервера решил что это не дело и нужно добавить команды в автозапуск.
Для этого были созданы 2 файла-демона.

 cat /etc/systemd/system/odoo_render.service
[Unit]
Description=Renderserver for Odoo reports

[Service]
Type=simple
PIDFile=/var/run/odoo_render.pid
User=root
ExecStart=/usr/bin/python /usr/bin/start-py3o-renderserver --java=/usr/lib/jvm/jre-openjdk/lib/amd64/server/libjvm.so --ure=/usr/share --office=/usr/lib64/libreoffice --driver=juno --sofficeport=8997
ExecStop=/usr/bin/ps aux | /usr/bin/grep [r]enderserver | /usr/bin/awk '{print $2}' | /usr/bin/xargs kill -9
TimeoutSec=300
Restart=always

[Install]
WantedBy=multi-user.target

и

cat /etc/systemd/system/odoo_fusion.service
[Unit]
Description=Fusion for Odoo reports

[Service]
Type=simple
PIDFile=/var/run/odoo_fusion.pid
User=root
ExecStart=/usr/bin/python /usr/bin/start-py3o-fusion -s localhost
ExecStop=/usr/bin/ps aux | /usr/bin/grep [f]usion | /usr/bin/awk '{print $2}' | /usr/bin/xargs kill -9
TimeoutSec=300
Restart=always

[Install]
WantedBy=multi-user.target

И последнее. Перечитываем конфиг systemd, добавляем скрипты в автозапуск и запускаем

systemctl daemon-reload
systemctl enable odoo_render.service
systemctl enable odoo_fusion.service
systemctl start odoo_render.service
systemctl start odoo_fusion.service

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

Добавить комментарий