我在Amazon EC2 Linux实例上有一个催化剂Web应用程序,其内容由Apache / FastCGI提供。 每当我启动一个新实例时,我需要获取数据库服务器的内部IP并通过在启动时运行此命令将其分配给环境变量:
export MYSQL_HOST=$(dig +short ec2-*-*-*-*.compute-1.amazonaws.com);
我有一个perl模块,它应该在查找$ MYSQL_HOST环境变量值后创建数据库连接。
我的问题很明确,因为FastCGI无法直接访问这些shell环境变量。
我看到你可以使用Apache mod_env中的PassEnv来访问环境变量,你可以使用Apache指令FcgidInitialEnv为FastCGI环境变量赋值(如果我在这里硬编码一个值,我可以使用我的Perl模块)。
我的Apache配置技巧非常基本,所以我想知道是否有人可以推荐一种方法将这些绑定在一起,以便我的perl模块访问$ MYSQL_HOST。
谢谢!
答案 0 :(得分:2)
如果您正在尝试阅读环境变量,请查看$ c-> engine-> env:
use Data::Dumper;
sub debugEnv :Local
{
my ( $self, $c ) = @_;
$c->res->headers->header("Content-type"=> 'text/plain');
my $req = $c->req;
$c->response->body('$c->engine->env is : '.Dumper($c->engine->env)
."c->req is $req\n"
.'c->config is ' .Dumper($c->config)
."\nENV is : ".Dumper(\%ENV))
}