水曜日 4 22, 2009

SJSMS - Solaris 10 の SMF に登録しよう

今回は久しぶり(なんと半年振り!)に Messaging Server ネタです。
以前のブログ記事(その 1,その 2)でインストールしてみた Messaging Server 関連コンポーネントを Solaris 10 の SMF に登録して、自動起動の設定をしてみましょう。
前回インストールした関連コンポーネントは以下の通りです。

  • Directory Server 6.3
  • Messaging Server 7.0
  • Application Server 9.1
    • Access Manager 7.1
    • Delegated Administrator 6.4
    • Sun Convergence 1.0

上記コンポーネントの中で、Access Manager, Delegated Administrator, Sun Convergence は、Application Server 9.1 上に配備されておりますので、SMF に登録して自動起動の設定をする必要があるコンポーネントは以下 の 3 つになります。

  • Directory Server 6.3
  • Messaging Server 7.0
  • Application Server 9.1

では、順番に、SMF に登録していきましょう。

目次

  1. Directory Server 6.3 を SMF に登録
  2. Messaging Server 7.0 を SMF に登録
  3. Application Server 9.1 を SMF に登録
  4. 参考情報

Directory Server 6.3 を SMF に登録

実は、Directory Server 6.3 の提供方法は、パッケージ版と ZIP アーカイブ版の 2 種類があり、 インストール・設定に若干の差異があります。
パッケージ版の Directory Server では、dsadm コマンドから SMF にサービスを登録する方法が あるのですが、ZIP アーカイブ版では、dsadm コマンドから SMF にサービスを登録する事が出来ません。
  ※ パッケージ版のためのご参考
以前のブログ記事で紹介したインストール手順では、ZIP アーカイブ版の Directory Server を 使用しているので、dsadm enable-service コマンドが使えません。
そこで今回は、/opt/SUNWdsee/ds6/install 配下に用意されているテンプレートファイルを 使って、SMF に登録します。

 sw-89# pwd
 /opt/SUNWdsee/ds6/install
 sw-89# cp tmpl_smf.manifest ds6_for_ms7_smf.manifest
  ※ あらかじめ、template ファイルをコピーします。
 sw-89# vi ds6_for_ms7_smf.manifest
  ※ manifest ファイルを下記 diff に示される様に編集します。
  ※ 具体的には、"%%%DATE_CREATED%%%", "%%%INSTALL_PATH%%%"
  ※ "%{sunds/path}", "%%%TIMEOUT_SECONDS%%%" を適宜編集します。
 sw-89# diff ds6_for_ms7_smf.manifest tmpl_smf.manifest
 6c6
 <     Created on : 2009/04/16
 ---
 >     Created on : %%%DATE_CREATED%%%
 24,25c24,25
 <                  exec="/opt/SUNWdsee/ds6/bin/dsadm start --exec /var/opt/SUNWdsee/dsins1"
 <                  timeout_seconds="600">
 ---
 >                  exec="%%%INSTALL_PATH%%%/bin/dsadm start --exec %{sunds/path}"
 >                  timeout_seconds="%%%TIMEOUT_SECONDS%%%">
 35,36c35,36
 <                  exec="/opt/SUNWdsee/ds6/bin/dsadm stop --exec /var/opt/SUNWdsee/dsins1"
 <                  timeout_seconds="600">
 ---
 >                  exec="%%%INSTALL_PATH%%%/bin/dsadm stop --exec %{sunds/path}"
 >                  timeout_seconds="%%%TIMEOUT_SECONDS%%%">
 sw-89#
 
 sw-89# cat ds6_for_ms7_smf.manifest
 <?xml version='1.0'?>
 <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>

 <!--
     Document   : ds6-service.xml
     Created on : 2009/04/16
     Author     : Directory Server Enterprise Edition Team
     Description: The SMF Service Manifest file for Directory Server 6
 -->

 <service_bundle type="manifest"
                 name="SUNWldap-directory services">
   <service name="application/sun/ds" type="service" version="1">
     <dependency name="filesystems" grouping="require_all"
               restart_on="none" type="service">
       <service_fmri value="svc:/system/filesystem/local:default"/>
     </dependency>
     <dependency name="network" grouping="require_all"
              restart_on="none" type="service">
       <service_fmri value="svc:/network/initial:default"/>
     </dependency>
     <exec_method type="method"
                  name="start"
                  exec="/opt/SUNWdsee/ds6/bin/dsadm start --exec /var/opt/SUNWdsee/dsins1"
                  timeout_seconds="600">
       <method_context working_directory=":default">
         <method_credential user="root"
                            group=":default"
                            privileges=":default"/>
       </method_context>
       <stability value="Evolving"/>
     </exec_method>
     <exec_method type="method"
                  name="stop"
                  exec="/opt/SUNWdsee/ds6/bin/dsadm stop --exec /var/opt/SUNWdsee/dsins1"
                  timeout_seconds="600">
       <method_context working_directory=":default">
         <method_credential user="root"
                            group=":default"
                            privileges=":default"/>
       </method_context>
       <stability value="Evolving"/>
     </exec_method>
     <instance name="default" enabled="false"/>
     <stability value="Evolving"/>
     <template>
       <common_name>
         <loctext xml:lang="C"> Directory Server </loctext>
       </common_name>
       <documentation>
         <doc_link name="Directory Server Enterprise Edition 6 Administration Guide" uri="http://docs.sun.com/doc/819-0995/"/>
       </documentation>
     </template>
   </service>
 </service_bundle>
 sw-89#
 
 sw-89# svccfg import ./ds6_for_ms7_smf.manifest
  ※ 上記で作成した manifest ファイルを svccfg コマンドにて import します。
 
 sw-89# svcs ds
 STATE          STIME    FMRI
 disabled       14:52:43 svc:/application/sun/ds:default
  ※ svc:/application/sun/ds:default が追加されている事を確認します。
 
 sw-89# svcadm enable ds
  ※ svc:/application/sun/ds:default サービスをスタートします。
 
 sw-89# ps -ef | grep slapd
     root 13460  8891   0 14:54:59 ?           0:01 /opt/SUNWdsee/ds6/lib/64/ns-slapd -D /var/opt/SUNWdsee/dsins1 -i /var/opt/SUNWd
     root 13463  9868   0 14:55:01 pts/3       0:00 grep slapd
 sw-89# 
  ※ ns-slapd (Directory Server のプロセス) が起動している事が確認出来ます。
 
 sw-89# svcs ds
 STATE          STIME    FMRI
 online         14:55:02 svc:/application/sun/ds:default
 sw-89# 
  ※ svc:/application/sun/ds:default サービスも online になっている事が確認出来ます。
 
 sw-89# svcadm disable ds
  ※ svc:/application/sun/ds:default サービスを停止します。 
 
 sw-89# svcadm disable ds
 sw-89# svcs ds
 STATE          STIME    FMRI
 online\*        14:57:23 svc:/application/sun/ds:default
 sw-89# svcs ds
 STATE          STIME    FMRI
 disabled       14:57:27 svc:/application/sun/ds:default
 sw-89# 
  ※ svc:/application/sun/ds:default サービスが停止された事が確認出来ます。
 
 sw-89# svcadm enable ds
 sw-89# svcs ds
 STATE          STIME    FMRI
 offline\*       14:58:12 svc:/application/sun/ds:default
 sw-89# svcs ds
 STATE          STIME    FMRI
 online         14:58:19 svc:/application/sun/ds:default
 sw-89# 
  ※ 最後に svc:/application/sun/ds:default サービスを起動させておきます。

以上で、Directory Server の SMF の登録が完了しました。

Messaging Server 7.0 を SMF に登録

次に Messaging Server を SMF に登録しましょう。
Messaging Server の登録方法も Directory Server と同様テンプレートファイル を利用して SMF に登録します。

 sw-89# pwd
 /opt/sun/comms/messaging64/data/install
 sw-89# ls
 pab.ldif                   schema2ug_store.ldif       schema2usergroup.ldif.rej
 restofmessaging.xml        schema2usergroup.ldif      watcher.xml
 sw-89#

まずこの場所に messaging.xml ファイルが存在するか確認してください。
messaging.xml が存在する場合は下記の手順(messaging.xml の作成・msgexe の編集)を 省略してください。
  ※ 当初提供されていた restofmessaging.xml, watcher.xml を利用する方法では
  ※ ただしく動作しない問題が見つかっております。
  ※ その問題の回避のため、messaging.xml の作成・msgexe の編集を行ないます。

 sw-89# pwd
 /opt/sun/comms/messaging64/lib
 sw-89# cp msgexe msgexe.orig
  ※ SMF から利用する起動・停止スクリプトのバックアップを作成します。
 sw-89# vi msgexe
  ※ msgexe を下記に示される様に編集します。
  ※ 具体的には、start-msg, stop-msg の引数($2) を削除、
  ※ refresh 時のコマンドを refresh コマンドに変更します。
 sw-89# cat msgexe
 #!/sbin/sh

 ##  Copy/Rename this script to //lib/
 ##  Please change $REPOS to the location of your SVN Repo

 . /lib/svc/share/smf_include.sh

 parser() {
         PROPERTY=$1
         # VALUE=`svcprop -p ${PROPERTY} watcher`
         VALUE=`svcprop -p ${PROPERTY} messaging_server`
         if [ "${VALUE}" = "\\"\\"" ] ; then
                 VALUE=
         fi
         echo $VALUE
 }

         MESSAGING_BASE=`parser application/messaging_server_base`

         if [ -z "${MESSAGING_BASE}" ] ; then
                 exit $SMF_EXIT_ERR_CONFIG
         fi

 case $1 in

         'start')
                 # ${MESSAGING_BASE}/bin/start-msg $2
                 ${MESSAGING_BASE}/bin/start-msg
                 if [ $? -ne 0 ] ; then
                         exit $SMF_EXIT_ERR_FATAL
                 fi
                 exit $SMF_EXIT_OK
                 ;;
         'stop')
                 # ${MESSAGING_BASE}/bin/stop-msg $2
                 ${MESSAGING_BASE}/bin/stop-msg
                 if [ $? -ne 0 ] ; then
                         exit $SMF_EXIT_ERR_FATAL
                 fi
                 exit $SMF_EXIT_OK
                 ;;
         'refresh')
                 # ${MESSAGING_BASE}/bin/stop-msg        $2
                 # sleep 5
                 # ${MESSAGING_BASE}/bin/start-msg $2
                 ${MESSAGING_BASE}/bin/refresh
                 if [ $? -ne 0 ] ; then
                         exit $SMF_EXIT_ERR_FATAL
                 fi
                 exit $SMF_EXIT_OK
                 ;;
         \*)
                 echo "Usage: $0 { start | stop | refresh }"
                 exit $SMF_EXIT_ERR_FATAL
                 ;;
                 esac
 sw-89# 
 sw-89# cd /opt/sun/comms/messaging64/data/install
 sw-89# cp restofmessaging.xml messaging.xml
  ※ restofmessaging.xml を messaging.xml にコピーします。
 sw-89# vi messaging.xml
  ※ messaging.xml ファイルを下記に示される様に編集します。
  ※ 具体的には、dependency name='watcher' 部分をコメントアウト、
  ※ dependency name='DirectoryServer' を追加します。
  ※ 尚、dependency name='DirectoryServer' は、Directory Server
  ※ を別サーバにインストールしている場合は、不要です。
 sw-89# cat messaging.xml
 <?xml version="1.0"?>
 <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
 <!--
 Sun Java Enterprise System Messaging Server 7.0 ( Cascabel )
 -->
 
 <service_bundle type='manifest' name='messaging_server'>
 
         <service
             name='network/messaging_server'
             type='service'
             version='1'>
 
             <create_default_instance enabled='false' />
 
             <single_instance />
 
             <dependency
                 name='network-service'
                 grouping='require_all'
                 restart_on='none'
                 type='service'>
                 <service_fmri value='svc:/network/service' />
             </dependency>
 
             <dependency
                 name='fs-local'
                 grouping='require_all'
                 restart_on='none'
                 type='service'>
                 <service_fmri value='svc:/system/filesystem/local' />
             </dependency>
 
             <dependency
                 name='name-services'
                 grouping='require_all'
                 restart_on='refresh'
                 type='service'>
                 <service_fmri value='svc:/milestone/name-services' />
             </dependency>
 
             <dependency
                 name='identity'
                 grouping='optional_all'
                 restart_on='refresh'
                 type='service'>
                 <service_fmri value='svc:/system/identity:domain' />
             </dependency>
 <!--
             <dependency
                 name='watcher'
                 grouping='require_all'
                 restart_on='refresh'
                 type='service'>
                 <service_fmri value='svc:/network/watcher' />
             </dependency>
 -->
             <dependency
                 name='DirectoryServer'
                 grouping='require_all'
                 restart_on='refresh'
                 type='service'>
                 <service_fmri value='svc:/application/sun/ds:default' />
             </dependency>
 
             <exec_method
                 type='method'
                 name='start'
                 exec='/opt/sun/comms/messaging64/lib/msgexe start'
                 timeout_seconds='180' >
             </exec_method>
 
             <exec_method
                 type='method'
                 name='stop'
                 exec='/opt/sun/comms/messaging64/lib/msgexe stop'
                 timeout_seconds='180' >
             </exec_method>
 
             <exec_method
                 type='method'
                 name='refresh'
                 exec='/opt/sun/comms/messaging64/lib/msgexe refresh'
                 timeout_seconds='180' >
             </exec_method>
 
             <property_group name='application' type='framework'>
                     <propval name='messaging_server_base' type='astring'
                             value='/opt/sun/comms/messaging64' />
             </property_group>
 
             <property_group name='startd' type='framework'>
                 <propval name='ignore_error' type='astring'
                         value='core,signal' />
             </property_group>
 
             <stability value='Unstable' />
 
     </service>
 
 </service_bundle>
 sw-89#

messaging.xml ファイルがあった場合もここから先は実行してください。

 sw-89# svccfg import ./messaging.xml
  ※ messaging.xml ファイルが出来たら、svccfg コマンドにて import します。
 sw-89# svcs network/messaging_server
 STATE          STIME    FMRI
 disabled       15:12:37 svc:/network/messaging_server:default
 sw-89# 
  ※ svc:/network/messaging_server:default が追加されている事を確認します。
 
 sw-89# svcadm enable messaging_server
  ※ svc:/network/messaging_server:default サービスをスタートします。
 sw-89# svcs messaging_server
 STATE          STIME    FMRI
 offline\*       15:23:08 svc:/network/messaging_server:default
 sw-89# svcs messaging_server
 STATE          STIME    FMRI
 online         15:23:16 svc:/network/messaging_server:default
 sw-89#
  ※ svc:/network/messaging_server:default サービスが online になっている事が確認出来ます。

以上で、Messaging Server の SMF の登録が完了しました。


Application Server 9.1 を SMF に登録

最後に Application Server を SMF に登録しましょう。
Application Server は、テンプレートファイルの利用では無く、asadmin コマンドにて SMF に 登録出来ます。

 sw-89# cat /.passwordfile
 AS_ADMIN_USER=admin
 AS_ADMIN_PASSWORD=<admin ユーザの実際のパスワードを記載して下さい。>
 AS_ADMIN_MASTERPASSWORD=<マスターパスワードを記載して下さい。>
 sw-89# 
  ※ 自動起動用の password ファイルを作成します。
 sw-89# /opt/SUNWappserver/bin/asadmin create-service --type das --passwordfile /.passwordfile /opt/SUNWappserver/domains/domain1
 サービスが正常に作成されました。詳細は次のとおりです:
 サービスの名前:application/SUNWappserver/domain1
 サービスのタイプ:Domain
 サービスの設定場所:/opt/SUNWappserver/domains
 システム上のマニフェストファイルの場所:/var/svc/manifest/application/SUNWappserver/domain1_opt_SUNWappserver_domains/Domain-service-smf.xml
 このサービスは svcadm コマンドを使用して有効にできます。
 コマンド create-service は正常に実行されました。
 sw-89# 
  ※ asadmin create-service コマンドにて、SMF に登録します。
 sw-89# svcs domain1
 STATE          STIME    FMRI
 disabled       15:50:17 svc:/application/SUNWappserver/domain1:default
 sw-89# 
  ※ svc:/application/SUNWappserver/domain1:default が登録されている事が確認出来ます。
 sw-89# svcadm enable domain1
  ※ svc:/application/SUNWappserver/domain1:default サービスを起動します。
 sw-89# svcs domain1
 STATE          STIME    FMRI
 offline\*       15:50:38 svc:/application/SUNWappserver/domain1:default
 sw-89# svcs domain1
 STATE          STIME    FMRI
 offline\*       15:50:38 svc:/application/SUNWappserver/domain1:default
 sw-89# svcs domain1
 STATE          STIME    FMRI
 online         15:52:34 svc:/application/SUNWappserver/domain1:default
 sw-89# 
  ※ svc:/application/SUNWappserver/domain1:default サービスが online になっている事が確認出来ます。

以上で、前回インストールした Messaging Server 関連コンポーネントが Solaris の SMF に登録され、OS 起動時に自動起動されるように設定されました。

 sw-89# svcs ds messaging_server domain1
 STATE          STIME    FMRI
 online         14:58:19 svc:/application/sun/ds:default
 online         15:23:16 svc:/network/messaging_server:default
 online         15:52:34 svc:/application/SUNWappserver/domain1:default
 sw-89#


参考情報

About

Search

Archives
« 4月 2014
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
今日