Supervisorは、UNIX系システムにおけるプロセスマネージャーで、特にバックグラウンドで実行されるプログラムやサービスを監視・管理するためのツールです。UbuntuやDebianのようなLinuxディストリビューションにインストールすることで、サービスを簡単に制御し、監視することができます。以下では、Supervisorのインストールから設定、管理方法までを包括的に解説します。
1. Supervisorのインストール
まず、UbuntuやDebianにSupervisorをインストールする方法を説明します。
1.1 必要なパッケージの更新
最初に、システムを最新の状態に更新します。以下のコマンドを実行してください。
bashsudo apt update sudo apt upgrade
1.2 Supervisorのインストール
次に、Supervisorをインストールします。UbuntuやDebianの標準リポジトリに含まれているため、apt
コマンドを使って簡単にインストールできます。
bashsudo apt install supervisor
インストールが完了すると、Supervisorは自動的にサービスとして起動されます。
1.3 インストール確認
Supervisorが正常にインストールされたかを確認するために、以下のコマンドを実行します。
bashsudo systemctl status supervisor
「active (running)」と表示されれば、正常にインストールされています。
2. Supervisorの設定
Supervisorを使用してサービスを管理するには、設定ファイルを作成する必要があります。設定ファイルは通常、/etc/supervisor/conf.d/
ディレクトリに配置されます。
2.1 サービス用設定ファイルの作成
例えば、myapp
というアプリケーションをSupervisorで管理する場合、次のように設定ファイルを作成します。
bashsudo nano /etc/supervisor/conf.d/myapp.conf
設定ファイルの内容は以下のようになります:
ini[program:myapp]
command=/usr/bin/python3 /path/to/your/app.py
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
command
:実行するコマンドを指定します。autostart
:システム起動時に自動的に開始するかを指定します。autorestart
:プロセスが終了した場合に自動的に再起動するかを指定します。stderr_logfile
とstdout_logfile
:標準エラーと標準出力のログファイルを指定します。
2.2 設定ファイルの反映
設定ファイルを保存したら、Supervisorに新しい設定を読み込ませるために、以下のコマンドを実行します。
bashsudo supervisorctl reread sudo supervisorctl update
これにより、Supervisorは新しいプログラムの設定を認識し、管理を開始します。
3. Supervisorでのプロセス管理
Supervisorを使用してサービスを管理する方法は簡単です。以下に、よく使用されるコマンドを紹介します。
3.1 サービスの起動
新しく設定したプログラムを起動するには、以下のコマンドを使用します。
bashsudo supervisorctl start myapp
3.2 サービスの停止
プログラムを停止するには、次のコマンドを実行します。
bashsudo supervisorctl stop myapp
3.3 サービスの再起動
プログラムを再起動するには、以下のコマンドを使用します。
bashsudo supervisorctl restart myapp
3.4 サービスのステータス確認
現在実行中のサービスの状態を確認するには、次のコマンドを実行します。
bashsudo supervisorctl status
これにより、現在監視中のすべてのプログラムの状態が表示されます。
3.5 サービスの自動起動設定
autostart=true
を設定しても、システム起動時に自動的に起動しない場合があります。これは、supervisord
の設定ファイルで[supervisord]
セクションにnodaemon=true
を設定している場合に発生することがあります。この場合、以下のコマンドで再起動して解決できます。
bashsudo systemctl restart supervisor
4. Supervisorのログ管理
Supervisorでは、各プログラムの標準出力と標準エラー出力をログファイルに保存することができます。これにより、プログラムの状態を追跡したり、エラーを特定したりすることができます。
4.1 ログファイルの確認
設定ファイルで指定したログファイルに出力される情報を確認することができます。例えば、myapp
のエラーログは以下のコマンドで確認できます。
bashcat /var/log/myapp.err.log
4.2 ログのローテーション
ログファイルが大きくなるのを防ぐために、ログローテーションを設定することが推奨されます。logrotate
を使用して、定期的にログを圧縮してバックアップすることができます。/etc/logrotate.d/
ディレクトリに設定ファイルを作成して、ログローテーションのスケジュールを指定します。
5. Supervisorの停止とアンインストール
Supervisorを完全にアンインストールするには、以下の手順を実行します。
5.1 Supervisorの停止
まず、Supervisorを停止します。
bashsudo systemctl stop supervisor
5.2 Supervisorのアンインストール
次に、Supervisorをアンインストールします。
bashsudo apt remove --purge supervisor
5.3 不要なパッケージの削除
最後に、不要なパッケージを削除します。
bashsudo apt autoremove
6. まとめ
Supervisorは、Linuxシステムで複数のプロセスを管理・監視するための非常に強力で便利なツールです。UbuntuやDebianでのインストールと設定方法を理解することで、サービスの自動起動、監視、ログ管理が簡単に行えるようになります。これにより、システム管理の負担を軽減し、サービスの信頼性を高めることができます。
Supervisorを使用することで、アプリケーションやサービスがダウンしても自動的に再起動され、常に稼働し続ける環境を維持することができます。