スーパーバイザーが環境変数を操作する方法を本当に知りません。
以下は設定スニペットです。
[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にもパスがありますか?
スーパーバイザーが機能しないのはなぜですか?
既存の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
スーパーバイザーブロックの下の.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
これは私のために動作します。各行の前のタブに注意してください。
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
パッケージインストーラからスーパーバイザをインストールする場合は、使用しているスーパーバイザのバージョンを確認してください。 2016年8月の時点で、.0b2が得られます。この場合、新しいバージョンのスーパーバイザーが必要になります。スーパーバイザーを手動でインストールするか、Pythonのpipを使用して取得できます。 supervisordがサービスとして機能し、システムの起動時に起動するように、すべての依存関係がupstartセットアップとともに満たされていることを確認します。