如何在apache vhost中使用环境变量

时间:2013-12-31 14:40:20

标签: apache environment-variables fastcgi

我有一个名为DISTANT_APP_ADDR的环境变量:

$ echo $DISTANT_APP_ADDR
$ 172.17.0.102

我想在我的虚拟主机中使用此变量,因此我已在/etc/apache2/envvars文件中添加:

export DISTANT_APP_ADDR=${DISTANT_APP_ADDR}

在我的vhost中:

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,但结果是一样的。

如何将我的env vars传递给我的vhost文件?

1 个答案:

答案 0 :(得分:1)

export DISTANT_APP_ADDR=${DISTANT_APP_ADDR}

是胡说八道。如果已经设置了DISTANT_APP_ADDR,它什么也没做,如果没有设置 - 它怎么知道要设置什么?

您也不希望启动脚本拉动您的环境变量。假设你或其他人做了一次apachectl重启,你忘了你因为某种原因改变了你的env变量,30分钟前。这是管理员的噩梦 - 您的网络应用程序“突然”停止工作,但任何配置文件都没有变化。找出问题是非常困难的。

因此,无论如何,请将DISTANT_APP_ADDR设置为常量。或者在httpd.conf或某些vhost配置文件中使用SetEnv指令。但从不使服务器服务依赖于用户在启动服务时碰巧所具有的环境。 (当你的系统启动时,apache启动,启动代码不知道你在.profile中设置变量)。

如果你真的想要用脚射击自己,请添加

echo "DISTANT_APP_ADDR='$DISTANT_APP_ADDR'" > /tmp/apachefile

到你的.profile的末尾,并将该文件包含在你的envvars文件中。