質問: tomcat自動起動がうまくいかない。 fc3でapache2+tomcat4+mod_jk2で環境を構築しています。 apache単体、tomcat単体、連繋とも全てうまくいきtomcatの自動起動設定を/etc/rc.d/init.d/tomcat というファイルで作製し、起動テストをおこなったのですが、実行時にエラーがでます。 作製したファイルの内容は以下のとおりです。 ここから #!/bin/sh # # startup script for the tomcat # # chkconfig: 345 80 15 # description: tomcat is a servlet+jsp engine. # source function library. . /etc/rc.d/init.d/functions case "$1" in 'start') if [ -f /usr/local/tomcat/bin/startup.sh ]; then echo "starting the tomcat service " su - nobody -c "export java_home=/usr/java/j2sdk1.4.2_07;\export tomcat_home=/usr/local/tomcat;/usr/local/tomcat/bin/startup.sh" fi ;; 'stop') echo "stopping the tomcat service." su - nobody -c "export java_home=/usr/java/j2sdk1.4.2_07;\export tomcat_home=/usr/local/tomcat;/usr/local/tomcat/bin/shutdown.sh" ;; 'restart') $0 stop $0 start ;; *) echo "usage: $0 {start|stop|restart}" ;; esac exit 0 ここまで rootでの/usr/local/tomcat/bin/startup.shを利用した起動は問題無く起動します。 java_homeとcatalina_homeは設定済みです。 どこが問題でしょうか。 よろしくお願いします。
回答: それでしたら、「エラー」ではないように思います。 お使いのスクリプトも正常かと。。 (ただ、スクリプト中のtomcat_homeは、catalina_home かもしれませんし、tomcatのディレクトリへのnobodyの アクセス権を与える必要はあります。) 先のrootで起動うんぬんはお忘れください。 そもそも、show_miz様がお使いの起動・終了スクリプトを /etc/rc.d/init.d/ に書く意味(目的)は、 /etc/rc.d/init.d/tomcat start と直接手動で実行させるためではありません。 それならば、tomcatを起動するユーザ(もちろんアクセス権がないといけませんが、)で、/usr/local/tomcat/bin/startup.sh とすればよいです。 /etc/rc.d/init.d/ に起動スクリプトを書くのは、 os起動時に「自動的」にtomcatを立ち上げたりする目的で書かれるものです。 os起動時に、誰もログインしていなくても デーモンは動きます。 rootはユーザ(人)ですが、デーモンはrootよりも 強いです。なにしろ魔物です。 su で、ユーザにスイッチするときに パスワードを聞いてくる?というようなことは ありません。 デーモンが、nobadyに、tomcatを立ち上げさせる ということですので、結果的には tomcatはnobodyにより起動される状態になります。 もうすでに行われているかもしれませんが、rootユーザで、 # chmod +x /etc/rc.d/init.d/tomcat でスクリプトに実行権を与え、 # --chkconfig --add tomcat として、chkconfigに登録して、 # chkconfig --list | grep tomcat で、登録されたのを確認してみてください。 ランレベル3や5がonになっていれば、 起動したときに、tomcatも立ち上がると思います。 linuxosを再起動して、 (再起動しても問題なければの話ですが。。。) tomcatを手動で立ち上げていないのに、 自動的に立ち上がっていれば成功です。 間違っているかもしれませんが、私の知る限りでは そんなところです。