Tomcat用の簡単なupstartスクリプトがあります。シェフのテンプレートは次のとおりです。
description "Tomcat Server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
# run as non privileged user
# add user with this command:
## adduser --system --ingroup www-data --home /opt/Apache-Tomcat Apache-Tomcat
setuid "<%= node['Tomcat']['user'] %>"
setgid "<%= node['Tomcat']['group'] %>"
# paths:
env Java_HOME="<%= node["Java"]["home"] %>"
env CATALINA_BASE="<%= node["Tomcat"]["base"] %>"
env CATALINA_HOME="<%= node["Tomcat"]["home"] %>/current"
exec $CATALINA_HOME/bin/catalina.sh run
# cleanup temp directory after stop
post-stop script
rm -rf $CATALINA_HOME/temp/*
end script
Initスクリプトから上記のupstartスクリプトに切り替えた後、すべてのTomcatログが/ var/log/upstart/Tomcatに書き込まれます。すべてのログが起動ログに記録される理由はありますか?それを回避するための良い方法は何ですか?これはubuntu12.04にあります
pstart Cookbook は、何が起こっているのかを説明しています。つまり、「標準出力と標準エラーは...ディレクトリ/ var/log/upstart /内のファイルに自動的に記録されます」。 'catalina.sh run'コマンドは、すべての出力をstdoutに送信します。したがって、upstartはstdoutをupstartログにリダイレクトしています。
私はこの問題に対して次のアプローチを取りました。
# Manually specify CATALINA_OUT, so we can redirect ourselves
env CATALINA_OUT=<path to catalina_base>/logs/catalina.out
# Stop upstart from handling stdout/stderr & redirect to the log file ourselves
console none
exec $CATALINA_HOME/bin/catalina.sh run >> "$CATALINA_OUT" 2>&1
'catalina.sh start'を実行しようとしました。これは、catalinaスクリプトを見ると、出力をCATALINA_OUT自体にリダイレクトします。しかし、upstartでプロセスを正しく管理することができませんでした。 「expectfork」も「expectdaemon」も、catalina起動スクリプトから作成されたバックグラウンドプロセスを管理できませんでした。