[訳]runit快速入門
ルニートquick start
概要
この教程を通して、私達は速やかにルニートを理解し、相応のサービスを構築することができます。
runitはサービス監視用のUNIXソフトウェアで、以下の2つのサービスを提供しています。は、サーバが起動すると定義されたサービスを開始する。 運転サービスを監視し、サービスが突然中断された場合、自動的にサービスを再開します。 この教程は簡単な例を通して、新しいルーニーサービスの作成方法を説明します。もっと知りたいなら、ルーニーの公式文書を見ることができます。
本教程には以下の3つの部分が含まれています。ルーニーテンプレート を作成します。は、最初のサービス を作成する。どうやって自動管理サービス 環境を築く
まず、システムはルーニーをインストールして、ほとんどのLinuxバージョンのソフトウェア倉庫にはルーニーバッグがあります。例えば、あなたのシステムがDebianに基づいている場合、以下のコマンドでインストールできます。
テンプレートを作成
注意出力結果の
監視されたサービスは、
runsvdirが新しいプロファイルを発見すると、自動的にこの設定のサービスを管理するためにrunsvプロセスを起動します。
ルニートのデザイン思想は各コンポーネントの機能が完全に独立していて、管理しています。
一時保存ディレクトリとして
まずロゴディレクトリを作成します。
サービスの例
次に、上で作成したテンプレートを使って簡単なサービス構成を作成します。まず、runスクリプトでchpspによって使用されるユーザを作成します。
管理サービス
最後に、svの使い方を勉強して、svはマニュアルでサービスを管理します。サービスの状態をチェックする サービスを停止した サービスを再開する より多くの用法
概要
この教程を通して、私達は速やかにルニートを理解し、相応のサービスを構築することができます。
runitはサービス監視用のUNIXソフトウェアで、以下の2つのサービスを提供しています。
本教程には以下の3つの部分が含まれています。
まず、システムはルーニーをインストールして、ほとんどのLinuxバージョンのソフトウェア倉庫にはルーニーバッグがあります。例えば、あなたのシステムがDebianに基づいている場合、以下のコマンドでインストールできます。
# apt-get install runit
centosならyumを使ってインストールできますが、デフォルトではcentosソフトウェア倉庫にはルーニーがありませんので、とりあえず相応の倉庫を配置してください。# curl -s https://packagecloud.io/install/repositories/imeyer/runit/script.rpm.sh | sudo bash
# sudo yum install runit-2.1.1-7.el7.centos.x86_64
以下のコマンドを実行して、ルビーがインストールされていたかどうかを確認して、システムは既にルニートを実行しています。# ps -ef | grep runsvdir
出力結果は以下の通りです。root 2783 1 0 15:34 ? 00:00:00 runsvdir -P /etc/service log:
runsvdirは実はセットのコンポーネントで、これらのコンポーネントはユーザーの各種の需要を満たすことができて、核心のコンポーネントはrunsvdir、runsv、chpspt、svlogdとsvを含みます。テンプレートを作成
注意出力結果の
runsvdir -P /etc/service log:.......
は、監視されたサービスを構成するためにルビンvdirが/etc/service/
ディレクトリのファイルを監視するという意味である。監視されたサービスは、
/etc/service
ディレクトリの下でサブディレクトリを作成し、実行可能なスクリプトrunを追加することによって実現される。runsvdirが新しいプロファイルを発見すると、自動的にこの設定のサービスを管理するためにrunsvプロセスを起動します。
ルニートのデザイン思想は各コンポーネントの機能が完全に独立していて、管理しています。
man
コマンドを使用して、特定のコンポーネントの使い方を確認することができます。# man runsvdir
/etc/service
が存在することを保証し、存在しない場合は、mkdirを使用して対応するディレクトリを作成する。# mkdir /etc/service
開発とテストを容易にするために、ここでは直接に/etc/service/
ディレクトリに配置ファイルを追加するのではなく、一時保存したディレクトリを作成して配置ファイルを配置します。私たちは自分のテストに満足した後、ソフトリンクを使って、一時ディレクトリを/etc/service
にリンクします。一時保存ディレクトリとして
/etc/runit
を作成します。# mkdir /etc/runit
本格的なルーニーサービスを作成する前に、まずテンプレートを作成します。このテンプレートはルーニーの基本的な使い方を示します。これからはこのテンプレートを使って新しいサービスを作成することができます。まずtemplateディレクトリを作成します。# mkdir /etc/runit/template
次に、runスクリプトを作成します。#!/bin/sh -e
exec 2>&1
exec chpst -u USER COMMAND
runに実行可能な権限を追加します。# chmod +x /etc/runit/template/run
このスクリプトはまず標準エラー出力ストリームを標準出力ストリームに出力して、chpsptコマンドを実行します。chpsptコマンドは、どのユーザを使用してコマンドを実行するかを指定します。runスクリプトはデフォルトではrootユーザによって実行されるので、chputによってrunを普通のユーザに設定して実行することができる。マンコマンドでchpspの詳細を確認できます。# man chpst
ルーnsvdirが/etc/service
ディレクトリの下に新しいディレクトリが含まれていることを確認すると、runsvdirはrunsvプロセスを起動して、runスクリプトを実行し、監視します。マンコマンドによりルーンvの詳細を確認します。#man runsv
runsvはログサービスを監視することもできます。ログはアプリケーションで非常に重要です。以下にログテンプレートを作成します。まずロゴディレクトリを作成します。
# mkdir /etc/runit/template/log
次にルンスクリプトを作成します。#!/bin/sh
exec chpst -u USER svlogd -tt LOGDIR
ルーンスクリプトに実行可能な権限を追加します。# chmod +x /etc/runit/template/log/run
上のスクリプトはchpspを使ってsvlogdを起動します。このプロセスはログ情報をLOGDIRディレクトリに書き込みます。マンコマンドを使用してsvlodgに関する情報を取得します。# man svlogd
/etc/service/
ディレクトリに新たな構成が発見されると、ルセンvdirはサブディレクトリのロゴを検索し続けます。見つかったら、ログディレクトリ下のルンスクリプトを実行し、監視するためにルンvプロセスを起動します。サービスの例
次に、上で作成したテンプレートを使って簡単なサービス構成を作成します。まず、runスクリプトでchpspによって使用されるユーザを作成します。
# adduser foo
次にサービス配置のディレクトリを作成し、所属ユーザとユーザグループをfooに設定します。# mkdir /opt/example
# chown foo:foo /opt/example
次にfooユーザに切り替えます。# su foo
/opt/example
ディレクトリにスクリプトfoo-service.shを追加します。#!/bin/bash
echo "Started service..."
for i in {1..30}
do
echo "Doing stuff..."
sleep 1
done
echo "Oh no I crashed..." >&2
exit 1
スクリプトに実行権限を与えます。# chmod +x /opt/example/foo-service.sh
上のスクリプトは1秒ごとにログ情報を印刷し、最後にエラー情報を印刷します。このスクリプトを実行してみてもいいです。# /opt/example/foo-service.sh
次にログサービスを含むディレクトリを作成します。# mkdir /opt/example/logs
またrootユーザーに切り替えます。# exit
次に、以前に作成したテンプレートを使って、この例示的なサービスを監視し、一時保存したディレクトリのテンプレートファイルを新しいディレクトリのexampleにコピーする。# cp -R /etc/runit/template /etc/runit/example
/etc/runit/example/run
スクリプトの内容を更新し、fooユーザを使用してfoo-service.shスクリプトを実行する。#!/bin/sh -e
exec 2>&1
exec chpst -u foo /opt/example/foo-service.sh
同様に、/etc/runit/example/log/run
スクリプトの内容を更新する。#!/bin/sh
exec chpst -u foo svlogd -tt /opt/example/logs
/etc/service
にサービスを配置する前に、まず構成が正しいかどうかをテストする。# /etc/runit/example/run
スクリプトが正常に実行されれば、サービスを展開できます。ソフトリンクを作成します。# ln -s /etc/runit/example /etc/service/example
予期しない場合は、runsvdirは私たちが設定した二つのサービスを検出して、二つのrunsvプロセスを起動してサービスを実行して監視します。次のコマンドにより、サービスが正常に動作しているかどうかを検出することができます。# sv status example
出力結果は以下の通りです。run: example: (pid 3483) 3s; run: log: (pid 3324) 154s
tailコマンドを使用するとログ情報が表示されます。# tail -f /opt/example/logs/current
ログ情報と異常情報を見て、サービスを再開します。管理サービス
最後に、svの使い方を勉強して、svはマニュアルでサービスを管理します。
sv status example
sv stop example
はサービスを停止した後、ログ情報を出力しなくなり、自動的に再起動できなくなります。sv restart example
man sv