Я работаю с Odoo12, запущенным пользовательским сервисом в Ubuntu 18.04 (в основном на основе этого руководства https://linuxize.com/post/how-to-deploy-odoo-12-on-ubuntu-18-04/). Используя systemctl
, я могу нормально запускать, останавливать, перезапускать сервис.
Проблема в том, что сервер Odoo (в режиме феникса) останавливается, когда работник убивается из-за достигнутого лимита времени процессора, служба прекращено с некоторыми странными ошибками. После исследования я обнаружил, что двоичный файл python в виртуальной среде больше не используется для перезапуска сервера Odoo, в результате чего многие необходимые для Odoo модули не могут быть загружены должным образом.
Вот некоторые фрагменты кода
- Сервисный блок
[Unit]
Description=Odoo12
[Service]
Type=simple
SyslogIdentifier=xxx_odoo12
PermissionsStartOnly=true
ExecStart=/opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /opt/odoo12/conf/odoo.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Odoo bin (с некоторым отладочным кодом для устранения причины проблемы)
#!/opt/odoo12/odoo-venv/bin/python3
# set server timezone in UTC before time module imported
__import__('os').environ['TZ'] = 'UTC'
#import odoo
import sys
import os
print('--------------------------Python Odoo path: ', sys.path)
sys.stdout.flush()
import odoo
if __name__ == "__main__":
odoo.cli.main()
Журнал некоторых услуг
Mar 15 10:19:05 ip-172-31-35-210 xxx_odoo12[2140]: --------------------------Python Odoo path: ['/opt/odoo12/odoo', '/opt/portable_platform/python/lib/python37.zip', '/opt/portable_platform/python/lib/python3.7', '/opt/portable_platform/python/lib/python3.7/lib-dynload', '/opt/odoo12/odoo-venv/lib/python3.7/site-packages']
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: --------------------------Python Odoo path: ['/opt/odoo12/odoo', '/opt/portable_platform/python/lib/python37.zip', '/opt/portable_platform/python/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/opt/portable_platform/python/lib/python3.7/site-packages']
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: Traceback (most recent call last):
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: File "/opt/odoo12/odoo/odoo-bin", line 13, in <module>
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: import odoo
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: File "/opt/odoo12/odoo/odoo/__init__.py", line 73, in <module>
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: import babel
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: ModuleNotFoundError: No module named 'babel'
Mar 15 10:20:07 ip-172-31-35-210 systemd[12816]: xxx_odoo12.service: Main process exited, code=exited, status=1/FAILURE
Mar 15 10:20:07 ip-172-31-35-210 systemd[12816]: xxx_odoo12.service: Failed with result 'exit-code'.
Вы можете заметить разницу между первыми 2 строками журнала фрагмента. Первый выводится, когда я запускаю службу вручную командой systemctl
. Второй - результат перезапущенного сервиса, о котором я понятия не имею ...
Есть идеи, чтобы помочь?