我正在尝试在Linux上设置一个环境变量,它应该在shell和Apache中都可用。
我将变量添加到/etc/environment
,因此文件看起来像这样:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
MY_VAR="foo"
要在apache中使用MY_VAR
,这是我在/etc/apache2/envvars
中添加的内容:
. /etc/environment
export MY_VAR=$MY_VAR
经过大量的研究,这是我能够在整个系统范围内获得相同环境变量的唯一方法,而不必在Apache中声明它们两次。
此方法是否存在安全问题?
答案 0 :(得分:0)
我能够解决自己的问题。我从MY_VAR
删除了/etc/environment
并创建了一个单独的文件/etc/profile.d/apache.sh
,如下所示:
export MY_VAR="foo"
然后我在/etc/apache2/envvars
中采购了这个文件,如下所示:
. /etc/profile.d/apache.sh
apache.sh
中设置的任何变量都可在系统范围内以及在Apache apache.sh
是一个脚本,与/etc/environment
不同,变量不必在envvars
中再次“导出”apache.sh
,如果只需要在Apache中,则可以在envvars
中添加答案 1 :(得分:0)
通常,在采购脚本时不需要使用关键字export
。
因此额外的脚本(即my_apacheenv.sh
)应具有以下格式:
VARIABLE_A="some hardcoded value"
VARIABLE_B="${DYNAMIC_ONE}"
VARIABLE_C="${APACHE_HOSTNAME}"
并确保将其标记为可执行文件(chmod +x /path/to/my_apacheenv.sh
)。
文件/etc/apache2/envvars
应包含:
. /path/to/my_apacheenv.sh
然后,您可以在会话中或作为环境变量以任何常规方式定义DYNAMIC_ONE
或APACHE_HOSTNAME
的值。
对我来说,当它与docker-compose文件结合使用时效果非常好:
version: "3"
services:
single-apache-php:
build: ./../cicd/apache
environment:
APACHE_HOSTNAME: "my.dynamic.hostname.com"