質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

15096閲覧

TomcatをSystemdで起動すると、接続できない

hirottsu76

総合スコア13

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

1クリップ

投稿2016/09/30 05:26

###発生している事象
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/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mit0223

2016/09/30 16:24

アクセスできないというのは、現象でしょうか?ブラウザ上のエラーメッセージはどのようなものですか?エラーになるまでに時間はかかりますか?tomcatのログにはエラーは出て無いのでしょうか?
guest

回答2

0

手元の環境(CentOS72)で試してみました。まずは OpenJDK を入れます。

bash

1vagrant@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 もいじっていません。

bash

1vagrant@localhost:~$ w3m -dump_source http://localhost:8080 | grep 8.0.37 2 <title>Apache Tomcat/8.0.37</title> 3 <h1>Apache Tomcat/8.0.37</h1>

違いといえば、systemd の起動タイプが oneshot であるところでしょうか。
forking にする場合は PID を記憶しておく必要があるようです。

http://enakai00.hatenablog.com/entry/20130917/1379374797

yum で入る tomcat7 でも simple になっていましたので、あえて forking
にする必要はないと思います。

なお、root として起動するのはセキュリティ上推奨されません。

投稿2016/09/30 07:23

編集2016/09/30 07:25
hotta

総合スコア1613

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirottsu76

2016/09/30 09:23

ご回答ありがとうございます。 Type=simple にしてみましたが、挙動変わらずでした。 起動ユーザは後日直してみたいと思いますが、今回の問題とは無関係とみています。
guest

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を無効化して試してみてはいかがでしょうか?

投稿2016/11/02 12:56

nagaetty

総合スコア1106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問