9

セットアップしようとしていますsupervisor.conf。私のアプリの 1 つは node.js を必要としますが、ノードはシステムごとにインストールされていません。また、ポート 80 にバインドする必要があるため、root として実行する必要があります。PATHスーパーバイザーが実行可能ファイル (ディレクトリにある) を見つけてnodenode.js アプリを実行できるように、変数を変更するにはどうすればよいですか。


私はこのようにしようとしています

[supervisord]
environment=PATH=/path/to/where/node/executable/is

[program:web]
command=node web.js -c config.json

これは失敗します

2011-08-25 16:49:29,494 INFO spawnerr: can't find command 'node'
4

3 に答える 3

5

スーパーバイザーで使い始めたパターン (zenbeni に似ています) は、シェル スクリプトを使用して実行中のプログラムを起動し、環境変数などを設定できるようにすることです。

例えば

#!/bin/sh
export EXAMPLE_VARIABLE=something
export PYTHONPATH=/something
export PATH=$PATH:/somewhere/else
exec python somescript.py

「exec」の使用は重要です。/bin/sh を子として生成するのではなく、実行中のプログラムに置き換えます。これは、周囲に追加のプロセスがなく、シグナルが期待どおりに機能することを意味します。

zenbeni の方法に対するこの (小さな) 利点は、環境変数などを更新するときに、スーパーバイザーの再起動のみが必要になることです。つまり、再読み込み/更新などが必​​要ありません。私がしたのと同じバグ (イベント リスナーの環境変数を更新するためにスーパーバイザーを完全に再起動する) に遭遇した場合、イベント リスナーを使用すると、この利点はさらに大きくなります。

于 2014-11-04T21:42:47.833 に答える
-1

コマンドに絶対パスを設定するだけです:

[program:web]
command=/path/to/where/node/executable/is/node web.js -c config.json
于 2011-08-25T14:00:34.247 に答える