web-dev-qa-db-ja.com

スーパーバイザーと環境変数

スーパーバイザーが環境変数を操作する方法を本当に知りません。

以下は設定スニペットです。

[program:htNotificationService]
priority=2
#autostart=true
#autorestart=true
directory=/home/ubuntu/workspace/htFrontEnd/heythat/htsite
command = /usr/bin/python htNotificationService.py -service
stdout_logfile=/var/log/heythat/htNotificationService.log
redirect_stderr=true
environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat
stopsignal=QUIT

私は次を試しました:

environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat
environment=PYTHONPATH=$PYTHONPATH:/home/ubuntu/workspace/htFrontEnd/heythat
environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat,PYTHONPATH=$PYTHONPATH:/home/ubuntu/workspace/htFrontEnd/heythat

スーパーバイザーを起動すると

htNotificationService: ERROR (abnormal termination)

pythonパスを設定することにより、シェルから起動できますが、スーパーバイザーからは起動できません。ログに、インポートが見つからないというエラーが表示されます。スーパーバイザーが動作する場合、/ etc/environmentsにもパスがありますか?

スーパーバイザーが機能しないのはなぜですか?

62
Tampa

既存のenv変数の参照は、%(ENV_VARNAME)sを使用して行われます

https://github.com/Supervisor/supervisor/blob/master/supervisor/skel/sample.conf を参照)

複数の環境変数を設定するには、それらをコンマで区切ります。

http://supervisord.org/subprocess.html#subprocess-environment を参照)

試してください:

environment=PYTHONPATH=/opt/mypypath:%(ENV_PYTHONPATH)s,PATH=/opt/mypath:%(ENV_PATH)s
93
edibleEnergy

スーパーバイザーブロックの下の.confファイルで、環境のキーと値のペアをすべて追加できます。

[supervisord]
environment=CELERY_BROKER_URL="amqp://guest:[email protected]:5672//",FLASK_CONFIG="TESTING"

[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000

変数をハードコーディングしたくないが、os環境から変数を取得したい場合は、bashのステップ1

環境変数のエクスポート

>> Sudo export CELERY_BROKER_URL="amqp://guest:[email protected]:5672//"

Bashのリロード

>> . ~/.bashrc

環境変数が適切に設定されているかどうかを確認します

>> env

次に、confファイルを変更して読み取ります- :ENV_を使用してenv変数を追加

[supervisord]
environment=CELERY_BROKER_URL="%(ENV_CELERY_BROKER_URL)s",FLASK_CONFIG="%(ENV_FLASK_CONFIG)s"

[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000
23
jetpackdata.com

これは私のために動作します。各行の前のタブに注意してください。

environment=
    CLOUD_INSTANCE_NAME=media-server-xx-xx-xx-xx,
    CLOUD_APPLICATION=media-server,
    CLOUD_APP_COMPONENT=none,
    CLOUD_ZONE=a,
    CLOUD_REGION=b,
    CLOUD_PRIVATE_IP=none,
    CLOUD_PUBLIC_IP=xx.xx.xx.xx,
    CLOUD_PUBLIC_IPV6=xx.xx.xx.xx.xx.xx,
    CLOUD_PROVIDER=c
16
FuzzyAmi

パッケージインストーラからスーパーバイザをインストールする場合は、使用しているスーパーバイザのバージョンを確認してください。 2016年8月の時点で、.0b2が得られます。この場合、新しいバージョンのスーパーバイザーが必要になります。スーパーバイザーを手動でインストールするか、Pythonのpipを使用して取得できます。 supervisordがサービスとして機能し、システムの起動時に起動するように、すべての依存関係がupstartセットアップとともに満たされていることを確認します。

5
user260826