TomcatをSystemdで起動すると、接続できない
解決済
回答 2
投稿
- 評価
- クリップ 1
- VIEW 10K+
発生している事象
CentOS7環境のサーバ上で、Tomcat8を使用しています。
サーバ起動時の自動起動を、Systemdのserviceで行いたいと思っています。
コマンドライン上で起動スクリプトを実行した場合は問題なくブラウザからアクセスできるのですが、
Systemdから起動した場合はどういうわけかアクセスができません。(起動には成功します)
原因についてご教授いただければと思います。
設定ファイル・環境等
~rootユーザで、コマンドライン上で起動スクリプト(startup.sh)を実行する場合~
○コンソール出力
Using CATALINA_BASE: /opt/apache-tomcat/apache-tomcat-8.0.24
Using CATALINA_HOME: /opt/apache-tomcat/apache-tomcat-8.0.24
Using CATALINA_TMPDIR: /opt/apache-tomcat/apache-tomcat-8.0.24/temp
Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
Using CLASSPATH: .:/opt/apache-tomcat/apache-tomcat-8.0.24/lib/servlet-api.jar:/root/postgresql_jdbc/postgresql-9.4-1202.jdbc42.jar:/opt/apache-tomcat/apache-tomcat-8.0.24/bin/bootstrap.jar:/opt/apache-tomcat/apache-tomcat-8.0.24/bin/tomcat-juli.jar
Tomcat started.
○envコマンド結果
XDG_SESSION_ID=278
HOSTNAME=erp
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
CATALINA_HOME=/opt/apache-tomcat/apache-tomcat-8.0.24
HISTSIZE=1000
SSH_CLIENT=10.0.0.224 49329 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/opt/apache-tomcat/apache-tomcat-8.0.24/bin
LANG=ja_JP.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
CLASSPATH=.:/opt/apache-tomcat/apache-tomcat-8.0.24/lib/servlet-api.jar:/root/postgresql_jdbc/postgresql-9.4-1202.jdbc42.jar
SSH_CONNECTION=10.0.0.224 49329 10.0.0.12 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env
OLDPWD=/root
○/etc/profile
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
fi
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
CATALINA_HOME=/opt/apache-tomcat/apache-tomcat-8.0.24
export JRE_HOME CATALINA_HOME
export CLASSPATH=".:/opt/apache-tomcat/apache-tomcat-8.0.24/lib/servlet-api.jar:/root/postgresql_jdbc/postgresql-9.4-1202.jdbc42.jar"
~Systemdから起動する場合~
○/usr/lib/systemd/system/tomcat8.service
[Unit]
Description=Apache Tomcat 8
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/opt/apache-tomcat/apache-tomcat-8.0.24/bin/startup.sh
ExecStop=/opt/apache-tomcat/apache-tomcat-8.0.24/bin/shutdown.sh
RemainAfterExit=yes
User=root
Group=root
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
○/etc/sysconfig/tomcat
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64"
JRE_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64"
CATALINA_HOME="/opt/apache-tomcat/apache-tomcat-8.0.24"
CLASSPATH=".:/opt/apache-tomcat/apache-tomcat-8.0.24/lib/servlet-api.jar:/root/postgresql_jdbc/postgresql-9.4-1202.jdbc42.jar:/opt/apache-tomcat/apache-tomcat-8.0.24/bin/bootstrap.jar:/opt/apache-tomcat/apache-tomcat-8.0.24/bin/tomcat-juli.jar"
○systemctl status tomcat8.service -l コマンド結果
● tomcat8.service - Apache Tomcat 8
Loaded: loaded (/usr/lib/systemd/system/tomcat8.service; enabled; vendor preset: disabled)
Active: active (running) since 金 2016-09-30 14:24:06 JST; 10s ago
Process: 14700 ExecStop=/opt/apache-tomcat/apache-tomcat-8.0.24/bin/shutdown.sh (code=exited, status=0/SUCCESS)
Process: 14997 ExecStart=/opt/apache-tomcat/apache-tomcat-8.0.24/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 15004 (java)
CGroup: /system.slice/tomcat8.service
mq15004 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat/apache-tomcat-8.0.24/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/apache-tomcat/apache-tomcat-8.0.24/endorsed -classpath .:/opt/apache-tomcat/apache-tomcat-8.0.24/lib/servlet-api.jar:/root/postgresql_jdbc/postgresql-9.4-1202.jdbc42.jar:/opt/apache-tomcat/apache-tomcat-8.0.24/bin/bootstrap.jar:/opt/apache-tomcat/apache-tomcat-8.0.24/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat/apache-tomcat-8.0.24 -Dcatalina.home=/opt/apache-tomcat/apache-tomcat-8.0.24 -Djava.io.tmpdir=/opt/apache-tomcat/apache-tomcat-8.0.24/temp org.apache.catalina.startup.Bootstrap start
9月 30 14:24:06 erp systemd[1]: Starting Apache Tomcat 8...
9月 30 14:24:06 erp startup.sh[14997]: Using CATALINA_BASE: /opt/apache-tomcat/apache-tomcat-8.0.24
9月 30 14:24:06 erp startup.sh[14997]: Using CATALINA_HOME: /opt/apache-tomcat/apache-tomcat-8.0.24
9月 30 14:24:06 erp startup.sh[14997]: Using CATALINA_TMPDIR: /opt/apache-tomcat/apache-tomcat-8.0.24/temp
9月 30 14:24:06 erp startup.sh[14997]: Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
9月 30 14:24:06 erp startup.sh[14997]: Using CLASSPATH: .:/opt/apache-tomcat/apache-tomcat-8.0.24/lib/servlet-api.jar:/root/postgresql_jdbc/postgresql-9.4-1202.jdbc42.jar:/opt/apache-tomcat/apache-tomcat-8.0.24/bin/bootstrap.jar:/opt/apache-tomcat/apache-tomcat-8.0.24/bin/tomcat-juli.jar
9月 30 14:24:06 erp startup.sh[14997]: Tomcat started.
9月 30 14:24:06 erp systemd[1]: Started Apache Tomcat 8.
試したこと
・ポートの使用状況、LISTEN状態は両起動方法で差異なし
補足情報(言語/FW/ツール等のバージョンなど)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+1
手元の環境(CentOS72)で試してみました。まずは OpenJDK を入れます。
vagrant@localhost:~$ sudo yum install java-1.8.0-openjdk-headless
残りの手順は、基本的に http://weblabo.oscasierra.net/installing-tomcat8-centos7-1/
に従いました。ただし Oracle JDK8 は入れず、tomcat のバージョン番号を
8.0.37 に読み替えています。追加の jar は入れていません。
/etc/sysconfig/tomcat も作らず、/etc/profile もいじっていません。
vagrant@localhost:~$ w3m -dump_source http://localhost:8080 | grep 8.0.37
<title>Apache Tomcat/8.0.37</title>
<h1>Apache Tomcat/8.0.37</h1>
違いといえば、systemd の起動タイプが oneshot であるところでしょうか。
forking にする場合は PID を記憶しておく必要があるようです。
http://enakai00.hatenablog.com/entry/20130917/1379374797
yum で入る tomcat7 でも simple になっていましたので、あえて forking
にする必要はないと思います。
なお、root として起動するのはセキュリティ上推奨されません。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
0
もし、tomcatユーザがあるならtomcatユーザで起動
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/opt/apache-tomcat/apache-tomcat-8.0.24/bin/startup.sh
ExecStop=/opt/apache-tomcat/apache-tomcat-8.0.24/bin/shutdown.sh
RemainAfterExit=yes
User=root
Group=root
SuccessExitStatus=143
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/opt/apache-tomcat/apache-tomcat-8.0.24/bin/startup.sh
ExecStop=/opt/apache-tomcat/apache-tomcat-8.0.24/bin/shutdown.sh
RemainAfterExit=yes
User=tomcat
Group=tomcat
SuccessExitStatus=143
それに、selinuxを無効化して試してみてはいかがでしょうか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
mit0223
2016/10/01 01:24
アクセスできないというのは、現象でしょうか?ブラウザ上のエラーメッセージはどのようなものですか?エラーになるまでに時間はかかりますか?tomcatのログにはエラーは出て無いのでしょうか?