2012-02-07 13 views
0

Amazon EC2 Linuxインスタンスに触媒ウェブアプリケーションがあり、そのコンテンツはApache/FastCGIによって提供されています。 私は新しいインスタンスを起動するたびに、私はデータベースサーバの内部IPを取得し、起動時にこのコマンドを実行して、環境変数に代入する必要があります。Apache WebアプリケーションでApache/FastCGIを使用してシェル環境変数にアクセスする

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

私はデータベースを作成する必要がありますPerlモジュールを持っています$ MYSQL_HOST環境変数の値を検索した後、

私の問題は、FastCGIがこれらのシェル環境変数に直接アクセスすることができないという点で、かなりよく文書化されています。

Apache mod_envのPassEnvを使用して環境変数にアクセスすることができ、Apache指令、FcgidInitialEnvを使用してFastCGI環境変数に値を割り当てることができます(ここで値をハードコードすると、私のPerlモジュール)。

私のApache設定スキルは基本的なものなので、私のperlモジュールが$ MYSQL_HOSTにアクセスするためには、これらをまとめて結びつける方法をお勧めしますか?

ありがとうございます!

+0

それはApacheや触媒、代わりのFCGI – zgpmax

+0

を接続するためにPSGIを使用するのに役立つかもしれません環境変数をどこに設定するかは、ちょっと変わってきます。 fcgiプロセスにApacheの環境を継承させたい場合、それは一つの課題です。別のオプションは、fcgiサブプロセスに値自体を計算させることです。 – djsadinoff

答えて

2

あなたは、環境変数を読み込むしようとしている場合は、$ C->エンジン> 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)) 
} 
関連する問題