2012-08-05 11 views
8

MYSQL_URL = mysql://などの環境変数にいくつかのアプリケーション設定を保存する予定です。私はsupervisordを使ってアプリケーションプロセスを管理します。サブプロセスを開始する前に環境変数をロードする方法は?特にこれらの設定が変更された場合、サブプロセスを再起動すると新しい設定がロードされることを願っています。実行前に環境変数をロードする

また、私はこれらの環境変数をどこに保存するのだろうかと思っています。私は "export $(cat filename)"できるファイルですか?またはいくつかの良い方法。私はHerokuが環境変数をどのように管理しているのか不思議です。

答えて

19

それは起動時に、これらのプロセスに渡されます各変数。上記の例でも改行を使用しましたが、これはオプションです。環境値にスペースがある場合は、値を引用符で囲む必要があります。

セクションのすべてのプロセスの環境変数を同じ形式で設定することもできます。

スーパーバイザーの開始時に設定された環境変数は、supervisordによって管理されるプロセスにも渡されます。詳細は、documentation section on environment variablesを参照してください。

することで、設定ファイルで構成された環境変数を変更した場合、あなたは彼らがこれらの変更をピックアップするための設定をリロードし、サブプロセスを再起動するsupervisordする合図する必要がありますのでご注意ください:

supervisorctl update 
supervisorctl restart yourprocess 

場合しかし、あなたはこれらを拾うために一緒にsupervisordすべてシャットダウンする必要があります、supervisordの外部環境変数を変更します。

supervisorctl shutdown 
supervisord 
+3

あなたも – Dustin

+1

@Dustinをrバージョン管理に上司の設定ファイルを保存する場合は目的に反しight。これを回避する方法はありますか?おそらくファイルのインクルード? – surjikal

+0

@surjikal:buildoutのようなツールを使って設定ファイルを生成します。 –

0

the docsによると、このようなenvironmont変数として設定することができます「supervisord.confは、グローバル設定をする[supervisordという名前のセクションが含まれています」。 (リンク先のページで、「環境」という単語を検索してください)。

環境変数はset an a per-program basisでもかまいません。あなたが間にコンマを使用する必要が

[program:yourprocess] 
# ... other settings 
environment = 
    MYSQL_URL=mysql://, 
    OTHER_VAR="some other value" 

注:あなたが[program:x]セクションでsupervisord構成でプロセスごとの環境変数を設定することができ

関連する問題