问题描述:
在/etc/profile中添加了自定义的环境变量,并source了,在console中可以正常输出,python中也可以通过os.genenv方法正常获取到:1
export ODOO_ENV=test
1 | echo $ODOO_ENV |
1 | import os |
但是,启动服务service后,却获取不到ODOO_ENV这个变量:
原因:
在linux中service脚本只加载TERM、PATH和LANG三个环境变量,其他均被忽略了。
解决方案:
针对传统init服务,需要在服务启动脚本中添加export加入自定义环境变量。
1
2
3
4
5
6
7
8
9
10PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DAEMON=/usr/bin/odoo
NAME=odoo
DESC=odoo
CONFIG=/etc/odoo/odoo.conf
LOGFILE=/var/log/odoo/odoo-server.log
PIDFILE=/var/run/${NAME}.pid
USER=odoo
export LOGNAME=$USER
export ODOO_ENV=test针对systemd的服务,只需要在配置文件中添加Environment变量即可。
1
2
3
4
5
6[Service]
Type=simple
User=odoo
Group=odoo
ExecStart=/usr/bin/odoo --config /etc/odoo/odoo.conf --logfile /var/log/odoo/odoo-server.log
Environment=ODOO_ENV=test
centos 7.2 service 脚本目录:/usr/lib/systemd/system/