我有一个名为 DISTANT_APP_ADDR
的环境变量:
$ echo $DISTANT_APP_ADDR
$ 172.17.0.102
我想在我的虚拟主机中使用这个变量,所以我在 /etc/apache2/envvars
文件中添加了:
export DISTANT_APP_ADDR=${DISTANT_APP_ADDR}
在我的虚拟主机中:
FastCgiExternalServer /var/www/cgi-bin/php5.external -host ${DISTANT_APP_ADDR}:9000
但是当我重新启动 apache 时,出现错误:
$ service apache2 restart
$ FastCgiExternalServer /var/www/cgi-bin/php5.external: failed to resolve "" to exactly one IP address
通过将 envvars 文件中的 ${DISTANT_APP_ADDR}
替换为其有效的实际值。
我还必须在我的 vhost 文件中放置一个 PassEnv DISTANT_APP_ADDR
,但结果是一样的。
如何将我的环境变量传递到我的虚拟主机文件?
最佳答案
export DISTANT_APP_ADDR=${DISTANT_APP_ADDR}
是废话。如果 DISTANT_APP_ADDR 已经设置,它什么都不做,如果没有设置——它怎么知道要设置什么?
您也不希望启动脚本提取您的环境变量。假设您或其他人执行了一次 apachectl restart,而您忘记了 30 分钟前出于某种原因更改了环境变量。这是管理员的噩梦——您的 Web 应用程序“突然”停止工作,但任何配置文件都没有更改。找出问题所在将非常非常困难。
因此,请务必将 DISTANT_APP_ADDR 设置为常量。或者在 httpd.conf 或一些 vhost 配置文件中使用 SetEnv 指令。但是永远不要使服务器服务依赖于用户启动服务时碰巧拥有的环境。 (当您的系统启动并启动 apache 时,启动代码并不知道您正在 .profile 中设置变量)。
如果你真的真的想搬起石头砸自己的脚,加
echo "DISTANT_APP_ADDR='$DISTANT_APP_ADDR'" > /tmp/apachefile
到您的 .profile 的末尾,并将该文件包含到您的 envvars 文件中。
关于apache - 如何在 apache vhost 中使用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858878/