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

"/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」へ 変更することで実現は可能ですが、 ルートユーザーとして[update-rc.d]コマンドを実行してください:

update-rc.d myapp start 20 2 3 4 5 . stop 20 0 1 6 .

次の出力が見えるはずです:

 Adding system startup for /etc/init.d/myapp ...
   /etc/rc0.d/K20myapp -> ../init.d/myapp
   /etc/rc1.d/K20myapp -> ../init.d/myapp
   /etc/rc6.d/K20myapp -> ../init.d/myapp
   /etc/rc2.d/S20myapp -> ../init.d/myapp
   /etc/rc3.d/S20myapp -> ../init.d/myapp
   /etc/rc4.d/S20myapp -> ../init.d/myapp
   /etc/rc5.d/S20myapp -> ../init.d/myapp

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

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

shutdown -r now

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

問題?

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

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

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

update-rc.d myapp start 21 2 3 4 5 . stop 19 0 1 6 .

動作レベルを解除する

上記のセクションで登録した動作レベルを解除するには、次のコマンドを実行してください。

update-rc.d -f myapp remove

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