• atwiki
  • GOL @Wiki
  • Subversionを題材にしたSMF(Service Management Facility)いぢり

GOL @Wiki

Subversionを題材にしたSMF(Service Management Facility)いぢり

最終更新:

divadiva

- view
管理者のみ編集可


Solaris10になって、サービスの管理はSMFで行うようになりました。サービスの管理方法が統一されてとても便利ではあるのですが、いざ自分でサービスを登録しようとすると、XML形式のマニフェストファイルなど、覚えなければいけないことがいろいろと出てきます。ここでは特定のサービスを題材にSMFを勉強していきたいと思います。

Solaris10 SMFによるサービス管理

Solaris10以降、サービスはinetdではなくてSMFで管理されています。とっても便利なので、どんどん使いましょう!

  • inetd経由でSMF管理するための設定ファイル生成(Subversionの場合)
まずは/etc/servicesを書きます。
 (/etc/services)
 svn    3690/tcp           # Subversion server
 svn    3690/udp           # Subversion server
次に、inetd用のconfファイルを書きます。
 (inetd.conf_svn)
 svn stream tcp nowait svn /usr/local/bin/svnserve svnserve -i -r /export/home/cn/REPOSITORIES
上記2ファイルの内容に矛盾がないことを確認したら、SMF用ファイル変換コマンドを実行します。
 # inetconv -i ./inetd.conf_svnserve[Enter]
 svn -> /var/svc/manifest/network/svn-tcp.xml
 Importing svn-tcp.xml ...Done
これで、生成が完了します。

inetadmコマンドで確認しましょう。
 # inetadm | grep svn
 enabled online svc:/network/svn/tcp:default
inetd管理のものはinetadmコマンドで無効にできます。
 # inetadm -d /network/svn/tcp

  • SMFでちゃんと管理(Subversionの場合)
まずはSMFマニフェストをsubversion.xmlという名前で記述し、/var/svc/manifest/networkに置きます。今回の例ではFMRI(SMFサービス名)をsvc:/network/subversionにしています。
さらに、上記ファイルは/lib/svc/methodにおいてあるシェルスクリプトsubversionでサーバを起動・停止することを前提としていますので、subversionを記述して、/lib/svc/methodに置きます。

ファイルが揃ったら、SMFに登録します。
 # svccfg import /var/svc/manifest/network/subversion.xml
 # svcs -a | grep subv    <= 確認
 online 11:36:53 svc:/network/subversion:default
ちなみに、マニフェストの削除は、
 # svccfg delete svc:/network/subversion
サービスの開始、停止は、
 # svcadm enable svc:/network/subversion
 # svcadm disable svc:/network/subversion
になります!

  • その他
記事メニュー
目安箱バナー