スーパーバイザーは、(実際には、今のpython3をサポートしての強力なツールpython2書き込み動作および保守である https://github.com/Supervisor/supervisor)
スーパーバイザーは、手順を監視し、どのようのpython3の使用?本論文では、CentOSので展開スーパーバイザインストールについて説明します。
1.インストールとセットアップ
すでにPIP3ののpython3であれば、PIP3をインストールすることで、あなたはインストールするには、次のコマンドを使用することができます
PIP3 インストールのgit +のhttps:// github.com/Supervisor/supervisorを
python2場合は、(システムは、Python 2来る)のCentOSを使用することができますがyumを搭載しています
sudoの yumを インストール監督を
ファイル名を指定して実行echo_supervisord_conf > /etc/supervisor/supervisord.conf
、非rootユーザーの権限エラーを回避するのではなく、セットを生成するために/etc/supervisor/supervisord.conf
内部に[unix_http_server]
この変更(chmodコマンドを変更します):
【unix_http_server] ファイル = / TMP / supervisor.sock。(ソケットへのパスファイル) のchmod = 0766 。ソケットファイルモード(デフォルト0700 ) 。chownコマンド =誰:nogroupが。ソケットファイルは、uidを:GIDの所有者を 、ユーザ名 = ユーザー; (デフォルトでは、ユーザー名(オープン系サーバ)ではありません) ;パスワード = 123 ; (デフォルトはパスワードなし(オープン系サーバ))
その後の最後[include]
のセクションは読むには:
[含める] ファイル =は/ etc /スーパーバイザー/ * .confのを、後者開始間違いは、「パスを含める持っていると言わ」と、この行削除した場合 、ファイル= /etc/supervisor/conf.d/*.conf
だから、簡単に個別に各アプリケーションのためのセットのconfファイルにグローバル内のすべてのセットを記述する必要はありません。
スタートでsupervisorctl
最初の起動する必要がありsupervisord
、存在することになるerror: <class 'socket.error'>, [Errno 99] Cannot assign requested address: file: /usr/lib/python/socket.py line: 575
エラー:
須藤 supervisord -cの/ etc /スーパーバイザ/ supervisord.conf(第1の開始supervisord) 須藤 supervisorctl -C /etc/supervisor/supervisord.conf
もし supervisord エラー:
エラー:別のプログラムがすでに我々のHTTPサーバのいずれかを使用するように設定されていることをポートで待機しています。supervisordを開始する前に、まずこのプログラムをシャットダウンします。
ヘルプについては、使用 / binに/ supervisord -h
検索と近いsupervisordプロセス
PS -ef | グリップ supervisord
あなただけのこれらのようなsupervisordのいくつかのPIDを取得します。
ルート2641 12938 0 04:52の PTS / 1 00:00:00 のgrep --color = supervisordオート ルート29646 1 0 04:45?00:00:00は/ usr / binに/ pythonのは/ usr / local / binに/ supervisord
あなたがそのような出力を得れば、あなたのPIDは、第二の一つです。あなたはsupervisordをシャットダウンしたい場合、あなたはこれを行うことができます
キル -s SIGTERM 29646
それが参考に願っています。REF: http://supervisord.org/running.html#signals
2. Aいくつかの例
例1:
[プログラム:恐ろしい] 環境は = PYTHONPATH = 「/home/username/.local/lib/python3.6/site-packages/を」 ;背中を実行しているときにエラーが発生した場合、このラインは、非常に重要である、と言うのパッケージを見つけることができない、必要性ここでは、パッケージ指定したパス のコマンド =は/ usr / binに/のpython3に/ SRV /素晴らしい/ WWW / app.py ディレクトリ = / SRV /素晴らしい/ WWW ユーザー = yshi2 startsecs = 。3 にredirect_stderrある = trueに stdout_logfile_maxbytes = 50メガバイト stdout_logfile_backups = 10 stdout_logfile = / SRV /素晴らしい/ログ/ app.log
例2:
[プログラム:アプリケーション] ディレクトリ =〜/ SU / ;スタートアッププログラムディレクトリ コマンド = /ホーム/ Hadoopの/ anaconda3 / binに/ Pythonの/ホーム/ Hadoopの/ SUの /app.py; Startコマンド、コマンドを手動でラインで見ることができます起動コマンドは、この家に同じ、注意を払うが利用できないです- 代わりに 自動 = trueに 、自動的に起動時間supervisordので始まり startsecs = 5 ;開始5は、それが正しく起動されているように、第二の後に予期せず終了しない 自動再起動をさ = trueに 、プログラム異常終了後の自動再起動 startretries = 3 ;自動的に再試行を開始できませんでした、デフォルトは3 ユーザー = のHadoop;ユーザーで起動 にredirect_stderrがある = trueに ; stdoutにリダイレクト標準エラー出力は、デフォルトではfalse stdout_logfile_maxbytesに = 20メガバイトを、標準出力ログファイルのサイズは、デフォルトの50メガバイトの stdout_logfile_backups = 20 ; STDOUTログファイルのバックアップの数を 、標準出力ログファイルを、手動でする必要があるので、指定されたディレクトリが存在しない場合に正常に起動しないときには注意を払うに必要ディレクトリを作成します(supervisordが自動的にログファイルが作成されます) stdout_logfile = /tmp/app.log
そして、2つの有用な設定項目を紹介stopasgroup
し、killasgroup
それからならば、私たちは休憩フラスコやその他のサービスを使用する場合、通常、それはいくつかのプロセスを開き、stopasgroup
その後、サービス(オフにすると、メインその子プロセスが閉じていない、オープンを再起動した後、有効になっていない、上司ができませんこれは、ポート)がプライマリ・プロセスによって占有されているようなエラー・メッセージを要求します。
;デフォルトはfalseを設定した場合は、trueにプロセスが停止信号を受信したとき、信号を自動的にプロセスの子プロセスに送信されます。この設定項目がある場合はtrueに、それは暗黙的にkillasgroupもあるtrueに。デバッグモードフラスコ、フラスコ内で使用された場合例えば、受信されません
。あなたは、設定項目を設定する必要がありますので、停止信号も、その子に伝達されます。 stopasgroup = falseに ;に停止信号を処理UNIXを送信し 、デフォルトはfalseには、設定されている場合はtrueにプロセスが場合に受信、キル信号を、信号が自動的にプロセスのサブプロセスに送られます。プログラムはPythonのマルチプロセッシングを使用している場合、それは自動的にその子スレッドを停止することができます。 killasgroup = falseに 、SIGKILL UNIXグループを処理(DEF はfalse)
スーパーバイザはpython2書き込みですが、ここでは、それを見ることができますが、限り、我々はのpython3インタプリタを指定するように、ライン上で実行するためのプログラムを実行します。
操作supervisorctl
、など、シェルの動作を容易にするためにstart app
、restart app
等が挙げられます。
ウェブインターフェースを所望する場合、することができる/etc/supervisor/supervisord.conf
内で変更、
【inet_http_server]。デフォルトでは無効になってINET(TCP)サーバー のポート = 127.0。0.1:9001 。(IP_ADDRESS:ポート指定、*:ポートのためのすべてのiface、若的形式* :ポート则开放外网访问) ;ユーザー名 = ユーザー; (デフォルトでは、ユーザー名(オープン系サーバ)ではありません) ;パスワード = 123 ; (デフォルトはパスワードなし(オープン系サーバ))
再起動しsupervisorctl
た直後に127.0.0.1:9001
Webインターフェイスを見て、
3.ノート
- あなたが/etc/supervisord.confを変更した場合、あなたはそれ以外の場合は動作しません、コンフィギュレーションファイルをリロードするsupervisorctlリロードを実行する必要があります。。。
- スーパーバイザー管理バックグラウンド・プロセスでの障害に非常に頻繁に発生しやすい、など
hbase/bin/hbase-daemon.sh start thrift
あなたがフォアグラウンドプロセスとしてこれを使用することができたときに、/usr/local/hbase/bin/hbase thrift start
。 - Supervisordサービスは、ランダムなスタートを可能に
supervisord有効systemctl
systemctl再起動supervisord