リブート(再起動)でスタートするようにアプリケーションをインストールする(Solaris)DRAFT

"/etc/init.d"にシンボリックリンクを作成する

システムのシャットダウン時にアプリケーションをキレイにシャットダウンさせて、 システムのリブート(再起動)時には正しい順番でスタートアップさせる、 このようにアプリケーションを設定する最初のステップは、 「/etc/init.d」ディレクトリー内に、 アプリケーションのスクリプトへのシンボリックリンクを作成することです。 多くのアプリケーションでは、単純にデーモンスクリプトをこのディレクトリーにコピーすればよいのですが、 Wrapperのスクリプトでは、利用するシンボリックリンクの用意が必要であり、 それにより、スクリプトを編集する必要なく、 アプリケーションの残りのファイルの場所を配置できるようにします。

/etc/init.d」に、シンボリックリンクを作成するためには、 ルートユーザーでなければなりません。 単純に、次のコマンドシーケンスを入力してください:

ln -s /usr/lib/myapp/bin/myapp /etc/init.d/myapp

ではここで、 カレントディレクトリーを「/etc/init.d」へ変更して、 以下のコマンドを実行して、シンボリックリンクが正しく動作していることを確認してください。

./myapp console

システムスタートアップ上でアプリケーションが開始される時と同様のケースですが、 必ずルートとして動かすことを忘れないでください。 通常どおりにログオンするユーザーと、ルートユーザーとの間での環境の違いがあることは、 極めて一般的なことです。 この環境の差が引き起こす問題として、よくあるのは例えば「JVMを配置できない」などです。

アプリケーションは通常どおりにスタートするはずです。 アプリケーションを停止するには、[CTRL]+[C]のキー操作をしてください。

動作レベルを登録する

アプリケーションの開始や停止にあたり、 全てのマルチユーザーの実行レベルでアプリケーションを開始して、 HALTや単一のシングルユーザーやリブート(再起動)の実行レベルで停止するようにして欲しい。 そうするためには、 カレントディレクトリーを「/etc/init.d」へ 変更することで実現は可能ですが、 ルートユーザーとして次のコマンドを実行してください:

ln -s /etc/init.d/myapp /etc/rc0.d/K20myapp
ln -s /etc/init.d/myapp /etc/rc1.d/K20myapp
ln -s /etc/init.d/myapp /etc/rc2.d/S20myapp
ln -s /etc/init.d/myapp /etc/rc3.d/S20myapp

起動中の環境は、かなりまばらのため、パスや環境変数を利用している参照に失敗するかもしれません。 インストールのテストをするためにリブート(再起動)をする場合には、 [wrapper.logfile.loglevel] プロパティを「DEBUG」に設定することをお薦めします。

ではここで、インストールをテストするためにシステムをリブート(再起動)してみましょう:

shutdown -r now

再起動してシステムが戻ってきたとき、うまく動作していることを祈ります。

問題?:

もし何か問題に遭遇した場合には、ログファイルに その問題に関するヒントが含まれているはずですので、ログをチェックしてください。 「上記のセクションでは正しく動作しても、ここでは失敗する」という問題がある場合には、 ほとんどの場合、環境変数が欠けていることが原因であることが多いです。

順番をコントロールする:

もしアプリケーションが他のサービスを利用する場合、例えば「MySQL」などを利用の場合、 そのMySQLの後にアプリケーションが開始して、MySQLの前にアプリケーションが終了していることを、 必ず確認してください。 これは「スタートアップ/シャットダウン」の順番をコントロールすることで操作できます。 デフォルトでは、MySQLの開始と終了の順番は「20」です。 ですから、期待どおりにアプリケーションを動作させるためには、 その開始を「21」、終了を「19」の順番にすればよいわけです。

ln -s /etc/init.d/myapp /etc/rc0.d/K19myapp
ln -s /etc/init.d/myapp /etc/rc1.d/K19myapp
ln -s /etc/init.d/myapp /etc/rc2.d/S21myapp
ln -s /etc/init.d/myapp /etc/rc3.d/S21myapp

動作レベルを解除する

上記のセクションで登録した動作レベルを解除するには、次のコマンドを実行してください。 シンボリックリンクを作成するときに使われるものが一致するように順番を調整する必要があるかもしれません。

rm /etc/rc0.d/K20myapp
rm /etc/rc1.d/K20myapp
rm /etc/rc2.d/S20myapp
rm /etc/rc3.d/S20myapp

参照: Wrapper でアプリケーションを起動する