1. はじめに Supervisor は Python で開発された汎用プロセス管理プログラムです。通常のコマンドライン プロセスをバックグラウンド デーモンに変換し、プロセスの状態を監視し、異常終了したときに自動的に再起動することができます。現在、Supervisor はほとんどの Unix システムで実行できますが、Windows システムでの実行はサポートされていません。 Supervisor には Python 2.4 以降が必要ですが、Python 3 バージョンはサポートされていません。 2. 組み込みのWeb管理プログラム スーパーバイザーには 4 つのコンポーネントがあります。 1. 監督者 2. スーパーバイザー 3. Web サーバー これは supervisord の Web クライアントです。ユーザーは Web ページ上で supervisorctl と同様の機能を実行できます。 4. XML-RPC インターフェース これは、サードパーティ統合用に予約されたインターフェースです。サービスはこれらの XML-RPC インターフェースをリモートで呼び出して、supervisord によって管理されるサブプロセスを制御できます。上記の Web サーバーは、実際にはこの XML-RPC インターフェイスを通じて実装されています。 3. インストール 以下の3つの方法からお選びいただけます 1. インストール echo "supervisor-3.3.4 のインストール (はいの場合は 1 を入力してください。いいえの場合はその他を入力してください):" SVを読む [ "$SV" = "1" ]の場合; cd $ベースパス $basepath/supervisor-3.3.4.zip を解凍します。 cd スーパーバイザー-3.3.4 python setup.py インストール echo "supervisor-3.3.4 のインストールが完了しました" それ以外 echo "supervisor-3.3.4 をインストールしないことを選択しました" フィ 2. ソースコードのインストール https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419eae/supervisor-3.3.4.tar.gz を実行します。 tar -zxvf スーパーバイザー-3.3.4.tar.gz cd スーパーバイザー-3.3.4 python setup.py install #ローカルの python バージョンは python2.7 です 3. Yumのインストール yum インストール スーパーバイザー 4. 設定ファイル インストール後に /etc/supervisord.conf 構成ファイルが存在しない場合は、次のコマンドで生成します。 echo_supervisord_conf > /etc/supervisord.conf 5. スタートアップ スーパーバイザード -c /etc/supervisord/supervisord.conf echo "supervisor-3.3.4 が正常に起動しました" 6. スタートアップを設定する systemctl は supervisord.service を有効にします 7. supervisordが実行中かどうかを確認する ps aux | grep supervisord 8. supervisorctl 管理コマンド supervisorctl status #ステータス supervisorctl stop nginx #nginx をシャットダウン supervisorctl start nginx #nginxを起動する supervisorctl restart nginx #nginxを再起動します supervisorctl reload #すべてを再起動 supervisorctl update #設定を更新 このコマンドは、個別に使用することも、組み合わせて使用することもできます。 9. 設定ファイルの説明 [unix_http_サーバー] file=/tmp/supervisor.sock ;UNIX ソケット ファイル、supervisorctl が使用します。chmod=0700 ;ソケット ファイル モード、デフォルトは 0700 です。 ;chown=nobody:nogroup ;ソケットファイルの所有者、形式: uid:gid ;[inet_http_server] ;Web 管理インターフェースを提供する HTTP サーバー;port=127.0.0.1:9001 ;Web 管理バックエンドの IP とポート。パブリック ネットワークに公開されている場合は、セキュリティに注意する必要があります;username=user ;管理バックエンドにログインするためのユーザー名;password=123 ;管理バックエンドにログインするためのパスワード [supervisord] logfile=/tmp/supervisord.log; ログファイル、デフォルトは $CWD/supervisord.log logfile_maxbytes=50MB; ログ ファイルのサイズ。これを超えるとローテーションされます。デフォルトは 50MB です。0 に設定すると、サイズ制限がないことを意味します。logfile_backups=10; ログ ファイルのバックアップのデフォルト数は 10 です。0 に設定すると、バックアップがないことを意味します。loglevel=info; ログ レベル。デフォルトは info、その他: debug、warn、trace pidfile=/tmp/supervisord.pid ;pid ファイル nodaemon=false ;フォアグラウンドで起動するかどうか。デフォルトは false、つまりデーモン モードで起動します。 minfds=1024 ;開くことができるファイル記述子の最小値。デフォルトは 1024 です。 minprocs=200; 開くことができるプロセスの最小数。デフォルトは200です。 [スーパーバイザーctl] serverurl=unix:///tmp/supervisor.sock ; UNIX ソケット経由で supervisord に接続します。パスは unix_http_server 部分のファイルと一致します。 serverurl=http://127.0.0.1:9001 ; HTTP 経由で supervisord に接続します ; [program:xx] は管理対象プロセスの構成パラメータ、xx はプロセスの名前です [program:xx] command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; プログラムの起動コマンド autostart=true ; supervisord の起動時に自動的に起動 startsecs=10 ; 起動後 10 秒経過しても異常終了がない場合は、プロセスが正常に起動したことを意味します。デフォルトは 1 秒です autorestart=true ; プログラム終了後、自動的に再起動します。オプションの値: [unexpected、true、false]。デフォルトは、unexpected です。つまり、プロセスは、誤って強制終了された場合にのみ再起動します startretries=3 ; 起動が失敗した場合の自動再試行回数。デフォルトは 3 です user=tomcat; プロセスを開始するために使用されるユーザー。デフォルトはrootです。 priority=999; プロセス起動の優先度、デフォルトは999、値が小さいプロセスが最初に起動されます redirect_stderr=true; stderrをstdoutにリダイレクトします、デフォルトはfalseです stdout_logfile_maxbytes=20MB; stdout ログ ファイルのサイズ、デフォルトは 50MB stdout_logfile_backups = 20 ; stdout ログファイルのバックアップ数。デフォルトは 10 です。 ; stdout ログ ファイル。指定されたディレクトリが存在しない場合は正常に起動できないため、手動でディレクトリを作成する必要があります (supervisord はログ ファイルを自動的に作成します)。 stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out stopasgroup=false; デフォルトは false で、プロセスが強制終了されたときに、子プロセスを含むプロセス グループに停止信号を送信するかどうかを指定します。killasgroup=false; デフォルトは false で、子プロセスを含むプロセス グループに強制終了信号を送信します。その他の設定ファイルが含まれます [include] files =/etc/supervisord.d/*.ini ; .iniで終わる1つ以上の設定ファイルを指定できます。 10. ini設定ファイルの例 [プログラム:MysqlToRedis] ディレクトリ = /data/py/SmartServerModel/SmartServerModel/ModelManagerServer/ コマンド = python3 -u mysql2redis_robot_config.py cs 自動起動 = true 自動再起動=true 開始秒数 = 5 ユーザー =root リダイレクトstderr = true stdout_logfile = /data/logs/supervisord/mysqltoredis.log [プログラム:SmartBinLog] コマンド = /data/go/src/SmartBinLog/SmartBinLog 自動起動 = true 自動再起動=true 開始秒数 = 5 ユーザー =root リダイレクトstderr = true stdout_logfile = /data/logs/supervisord/smartbinlog.log [グループ:nlp] programs=MysqlToRedis、SmartBinLog ;server、progname2 はそれぞれ [program:x] 定義の 'x' を参照します priority=999 ; 相対的な開始優先度(デフォルト 999) 11.ウェブページ管理プログラムを開く conf設定ファイル内のコメント行をすべてコメント解除し、ポート、ユーザー名、パスワードを変更します。 [inet_http_server] ;Web 管理インターフェイスを提供する HTTP サーバーport=127.0.0.1:9001 ;Web 管理バックエンドの IP とポート。パブリック ネットワークに公開されている場合は、セキュリティに注意してくださいusername=user ;管理バックエンドにログインするためのユーザー名password=123 ;管理バックエンドにログインするためのパスワード 12. 「unix:///tmp/supervisor.sock そのようなファイルはありません」という問題を解決する 時々、次のような問題に遭遇します:
①. 既存のsupervisorctlプロセスを停止する ②. 設定ファイル「/etc/supervisord.conf」を修正し、tmpをetcに変更します。 /tmpディレクトリ内のファイルはオペレーティングシステムによって定期的にリサイクルされるため、変更する必要があります。 ③. 変更した設定ファイルを使用して supervisord を起動すると、すべてが正常に戻ります。 以下もご興味があるかもしれません:
|
>>: MySQLデュアルマシンホットスタンバイと負荷分散の実装手順の詳細説明
目次pom 構成Setting.xml 構成ログインステータスログインが必要ですログインは必要ありま...
序文実際のビジネスでは、ページングは一般的なビジネス要件です。次に、制限クエリを使用します。制限...
ページにDOCTYPEを追加するブラウザによってタグやスタイルシートの解釈が異なるため、さまざまなブ...
最近、Textrea に転送したときに、データが本当に行ごとに保存できるかどうかという問題に遭遇しま...
Linux が NFS サーバーを構築異なるオペレーティング システム間でデータを共有するために、通...
毎日jQueryプラグインを学ぶ - フローティングメニュー、参考までに、具体的な内容は次のとおりで...
ツール型ウェブサイトについて、まず疑問に思うのは、無数のオンラインウェブサイトの中で、どのようなウェ...
目次Vueのレスポンシブシステムの基本原則1. Object.definePropertyの使い方を...
1. はじめに要件は、特定の時間範囲内で、1 時間ごとのデータと前の 1 時間ごとのデータの差と比率...
目次ユーティリティ: vue での使用:説明する:画像安定化:スロットル:ユーティリティ: // 手...
Git は vscode に統合されており、git コマンドをいくつか記述しなくても、クリックするだ...
実践こそが真実をテストする唯一の方法です。この記事では、インデックスの全体的な使用法についてのみ説明...
関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...
Arthas はあなたのために何ができるでしょうか? Arthas 、開発者に深く愛されている Al...
WeChat 関連サービスをデバッグする場合など、職場のサーバー環境でリモートデバッグを行う必要があ...