Ubuntu 16.04でのスーパーバイザのインス​​トールと構成

スーパーバイザは、多くのUNIXプロセス、具体的にはプロジェクトまたは顧客に関連するプロセスを制御するために使用されるクライアント/サーバーシステムです。たとえば、スーパーバイザを使用して、Webアプリケーションの任意の数のワーカーキューを生成および監視できます。

このシステムのコンポーネントは次のとおりです。

  • supervisord:システムのサーバー部分。
  • supervisorctl:サーバーとの対話に使用されるコマンドラインインターフェイス。
  • Webサーバー:シンプルなWebサーバーと、supervisorctlと比較して基本的な機能を持つWebユーザーインターフェイス。
  • XML-RPCインターフェース: Webクライアントで使用されるのと同じHTTPサーバーが、スーパーバイザープログラムの制御に使用できるXML-RPCインターフェースを提供します。

このチュートリアルでは、最新バージョンのスーパーバイザーをインストールし、を介してプログラムを生成および管理する方法を示しsupervisorctl、プログラムを管理するためのWebインターフェースを構成します。

インストールと基本構成

easy_installpythonのsetuptoolsの機能であるを介してスーパーバイザーをインストールします。

まず、ローカルパッケージリストを更新してから、pythonをインストールしますsetuptools

sudo apt-get update && sudo apt-get install python-setuptools

これでスーパーバイザーをインストールできます。

sudo easy_install supervisor

インストールが完了したら、構成ファイルを生成する必要があります。supervisorinside という名前のフォルダを作成します/etc

sudo mkdir /etc/supervisor

そして、以下を実行します。

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

rootユーザーでログインしていない場合は、Permission deniedエラーが発生する可能性があります(を使用してもsudo)。これはリダイレクトによるものです。これを克服するには、rootとしてログインします。

sudo su

その後、コマンドを再度実行できます。

echo_supervisord_conf > /etc/supervisor/supervisord.conf

これで、rootユーザーにexitコマンドを残すことができます。echo_supervisord_confコマンドは、当社のスーパーバイザーのインストールによって提供されました。

基本構成

/etc/supervisor/supervisord.confファイルを開き、内容を確認します。この構成ファイルはINI構文に従っており、セクションで区切られていることに注意してください(のように括弧で表します[section-name])。

監督者が管理するプログラムを追加するには、適切な[program]セクションを作成するだけです。ただし、プログラムを追加(または変更)する必要があるたびにメイン構成ファイルをいじるのを避けるために、[include]セクションを使用します。このセクションを見つけてコメントを外し、次のように編集します。

[include]
files=conf.d/*.conf

追加するプログラムごと.iniに、/etc/supervisor/conf.d/ディレクトリ内にファイルを作成します。このフォルダを作成してみましょう。

sudo mkdir /etc/supervisor/conf.d

スーパーバイザサーバーの起動

前述のように、スーパーバイザーはサーバーとそれに接続するクライアントで構成されています。プログラムを管理および制御できるようにするには、サーバーを起動する必要があります。これを行うには、スーパーバイザーサーバーをに登録systemdし、サーバーがシステムの起動時に起動されるようにします。

そのためにsupervisord.serviceは、/etc/systemd/systemディレクトリにというファイルを作成します。

sudo touch /etc/systemd/system/supervisord.service

次の内容をファイルに追加します。

[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
Alias=supervisord.service

監視対象サービスをアクティブ化します。

sudo systemctl start supervisord.service

サービスファイルが/etc/systemd/systemディレクトリにある限り、システムの起動時に自動的に開始されます。

サービスの状態を確認できます。

systemctl status supervisord.service

また、ログを確認することもできます。

sudo journalctl -u supervisord.service

プログラムを追加する

スーパーバイザによって制御されるプログラム[program]は、構成のさまざまなセクションで提供されます。管理するプログラムごとに、スタンドアロンの構成ファイルを作成して、コマンド実行可能パス、環境変数、シャットダウン時の実行方法を通知します。

まず、タイムスタンプを記録する簡単なスクリプトを作成しましょう。というファイルを作成しますhello_supervisor.sh(任意の場所に、このスクリプトの完全パスを参照します)。

touch hello_supervisor.sh

さて、以下の内容を入れてください

#!/bin/bash
while true
do 
    # Echo current timestamp to stdout
    echo Hello Supervisor: `date`
    # Echo 'error!' to stderr
    echo An error ocurred at `date`! >&2
    sleep 1
done

それを実行可能にします

chmod +x hello_supervisor.sh

実際には、このスクリプトはほとんど役に立ちません。しかし、それを使用して、監督者の力を示すことができます。以下を実行して、対応する構成ファイルを作成します。

sudo touch /etc/supervisor/conf.d/hello_supervisor.conf

次の内容をこのファイルに入れます。

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

注: 必ずUSERユーザー名に置き換えてください。

この構成を段階的に確認します。

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh

まず、設定はhello_supervisorという名前のプログラムを定義することから始まります。また、実行する実行可能ファイルの完全パスも通知します。

autostart=true

この行は、スーパーバイザが起動すると、このプログラムが自動的に起動することを示しています。

autorestart=true

プログラムが何らかの理由で終了した場合、この行はスーパーバイザーにプロセスを自動的に再起動するように通知します。

stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

これらの行は、stderrおよびのログファイルの場所をstdoutそれぞれ定義しています。

プログラムの管理

スーパーバイザをインストールして構成したので、プロセスを管理できます。

新しいプログラムを追加したら、次の2つのコマンドを実行して、構成ファイルを再度読み取り、変更を適用するようサーバーに通知する必要があります。

sudo supervisorctl reread
sudo supervisorctl update

supervisorctlクライアントを実行します。

sudo supervisorctl

登録されているプロセスのリストが表示されます。あなたは呼ばproccess表示されますhello_supervisorRUNNING状況を。

hello_supervisor                 RUNNING   pid 6853, uptime 0:22:30
supervisor>

使用help可能なコマンドのリストを入力します。

supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

簡単に言えば、プログラム名を引数として各コマンドに渡すことstartstoprestartプログラムを実行できます。

supervisor> stop hello_supervisor 
hello_supervisor: stopped
supervisor> start hello_supervisor 
hello_supervisor: started
supervisor> restart hello_supervisor 
hello_supervisor: stopped
hello_supervisor: started
supervisor> 

tailコマンドでプログラムの出力を確認することもできます。

supervisor> tail hello_supervisor 
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017

以下の場合stderr、出力は、使用することができますtailだけでなくとして。

supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!

statusコマンドを呼び出すと、登録されているすべてのプログラムのステータスを表示できます。

終了したら、終了できます。

supervisor> quit

ウェブサーバークライアント

スーパーバイザWebサーバーへのアクセスを許可するには、スーパーバイザ構成ファイルを開き、[inet_http_server]セクションを見つけます。

nano /etc/supervisor/supervisord.conf

このセクションの構成を次のように更新します。

[inet_http_server]
port=*:9001
username=your_username
password=your_password

を希望の資格情報に置き換えてyour_usernameyour_password変更内容を保存し、監視対象サービスを再起動します。

sudo systemctl restart supervisord.service

ファイアウォールTCPのポートへのアクセスを許可してから、ブラウザからの9001アクセスを許可http://{server-ip}:9001してください。尋ねられたとき、あなたを提供usernameしてpassword。Webからプロセスを制御できるようになりました。

結論

最新バージョンのsupervisordをインストールし、systemdを使用してシステムを自動起動するように構成する方法を学び、の基本的な使用方法も確認しましたsupervisorctl。より高度な構成と使用例については、公式の監視ドキュメントを参照してください。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。