Доступ к переменным среды оболочки в катализаторе с помощью Apache / FastCGI - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть каталитическое веб-приложение на экземпляре Amazon EC2 Linux, и его содержимое обслуживается Apache / FastCGI. Каждый раз, когда я запускаю новый экземпляр, мне нужно получить внутренний IP-адрес сервера базы данных и назначить его переменной среды, выполнив эту команду при запуске:

export MYSQL_HOST=$(dig +short ec2-*-*-*-*.compute-1.amazonaws.com);

У меня есть модуль perl, который должен создать соединение с базой данных после поиска значения переменной среды $ MYSQL_HOST.

Моя проблема довольно хорошо задокументирована в том, что FastCGI не может напрямую обращаться к этим переменным среды оболочки.

Я вижу, что вы можете использовать PassEnv из Apache mod_env для доступа к переменным среды и что вы можете присваивать значения переменным среды FastCGI, используя директиву Apache, FcgidInitialEnv (если я здесь жестко закодирую значение, я могу получить его, используя мой Модуль Perl).

Мои навыки настройки Apache довольно просты, поэтому мне было интересно, может ли кто-нибудь порекомендовать способ связать их вместе, чтобы мой модуль perl получил доступ к $ MYSQL_HOST.

Спасибо!

1 Ответ

2 голосов
/ 13 февраля 2012

Если вы пытаетесь прочитать переменные окружения, взгляните на $ 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))
}
...