Python-デーモンプロセス管理ツール(Supervisor)

2309 ワード

一、はじめに
1、SupervisorはPythonが開発したclient/serverシステムで、類UNIXオペレーティングシステムの上のプロセスを管理し監視することができる.プロセスを起動、再起動、閉じるのに便利です(Pythonプロセスだけではありません).
2、Supervisorのインストールが完了したら、プロファイルを作成して、自分のニーズを満たすことができます.便宜上、構成を2つの部分に分けます.supervisord(これはserver側で、client側:supervisorctl)とアプリケーション(つまり、管理するプログラム)が対応しています.
  • supervisord(server部分):主にサブプロセスの管理、クライアントコマンドの応答、ログの出力などを担当し、制御されたリスニングプロセスはサブプロセスとして表示されますが、supervisordのメインプロセスが正常に終了しない場合、管理されているプロセスはまだ実行状態です.
  • supervisorctl(clientセクション):コマンドラインクライアントで、ユーザーは異なるsupervisordプロセスに連絡し、サブプロセスの状態などを取得できます.

  • 3、Supervisordは管理するプログラムが非daemonプログラムであることを要求し、supervisordはそれをdaemonプログラムに変えることができるので、supervisordでnginxを管理する場合は、nginxのプロファイルにdaemon offを追加してnginxを非daemon方式で起動させる必要があります.もちろん、redisなどもそうです. 
    二、supervisorのインストール
    1、supervisorのインストール
    [root@localhost ~]# pip install supervisor
    

    2、supervisorのインストールが成功したかどうかをテストする
    [root@localhost ~]# echo_supervisord_conf
    

    3、supervisorをアンインストールする
    [root@localhost ~]# pip uninstall supervisor
    

    supervisorのインストールが完了すると、supervisortd、supervisorctl、echoの3つの実行プログラムが生成されます.supervisord_conf.それぞれsupervisorのデーモンサービス(プロセス管理コマンドを受信するため)、クライアント(プロセスと通信し、管理プロセスを送信するためのコマンド)、初期プロファイルプログラムを生成します.
    三、supervisordの構成
    supervisorのインストールが完了したら、プロファイルを作成して、自分のニーズを満たすことができます.便宜上、構成を2つの部分に分けます.supervisord(これはserver側、対応するclient側:supervisorctl)とアプリケーション(つまり、管理するプログラム)です.まずsupervisordのプロファイルを見てみましょう.
    1、echo_を実行するsupervisord_confコマンドsupervisorの初期化プロファイルを生成する:supervisord.conf(supervisord.confファイルの場所はどうでもいいが、ここでは2番目の場所とする)
    [root@localhost ~]# echo_supervisord_conf > /etc/supervisord.conf
    [root@localhost ~]# echo_supervisord_conf > /etc/supervisor/supervisord.conf
    

    2、supervisordサービスを起動する(-cオプションでプロファイルパスを指定し、指定しない場合はこの順序でプロファイルを検索する:$CWD/supervisord.conf、$CWD/etc/supervisord.conf、/etc/supervisord.conf):
    [root@localhost ~]# supervisord -c /etc/supervisord.conf                        
    [root@localhost ~]# supervisord -c /etc/supervisor/supervisord.conf
    

    3、supervisordサービスが実行されているかどうかを確認する.
    [root@localhost ~]# ps aux | grep supervisord
    

    4、supervisordサービスが有効かどうかを確認する
    [root@localhost ~]# ps -ef | grep ProjectName