0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Tomcatサーバ構築 <ユニット定義ファイルを用いた自動起動設定>

Posted at

#前提
・tomcat-8.5.68
・CentOS Linux release 7.5.1804

#自作ユニット定義ファイルでの自動起動ができない

https://weblabo.oscasierra.net/installing-tomcat8-centos7-1/
上記サイトを参考にしながら、構築したが、ユニット定義ファイル作成しても、自動起動ができなかったので、メモ。

/etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat service created by my own
After=network.target
ConditionPathExists=/usr/local/tomcat9

[Service]
User=tomcat
Group=tomcat
Type=oneshot
#PIDFile=/opt.apache-tomcat-8.5.68/tomcat.pid
RemainAfterExit=yes

ExecStart=/usr/local/tomcat9/bin/startup.sh
ExecStop=/usr/local/tomat9/bin/shutdown.sh
#ExecRestart=/usr/local/tomcat9/bin/shutdown.sh;/usr/local/tomcat9/bin/startup.sh
Restart=no

[Install]
WantedBy=multi-user.target

tomcatユーザに起動してもらうので、tomcat実行ファイル群の所有者をroot⇒tomcatに変更。
*rootを所有者にしたまま、実行権限を付与してもダメだった。

[root@client local]# pwd
/usr/local
[root@client local]# ls -l
total 10312
drwxr-xr-x. 9 tomcat tomcat      220 Jul  3 04:21 apache-tomcat-8.5.68
-rw-r--r--. 1 root   root   10559131 Jul  3 04:20 apache-tomcat-8.5.68.tar.gz
drwxr-xr-x. 2 root   root          6 Apr 11  2018 bin
drwxr-xr-x. 2 root   root          6 Apr 11  2018 etc
drwxr-xr-x. 2 root   root          6 Apr 11  2018 games
drwxr-xr-x. 2 root   root          6 Apr 11  2018 include
drwxr-xr-x. 2 root   root          6 Apr 11  2018 lib
drwxr-xr-x. 2 root   root          6 Apr 11  2018 lib64
drwxr-xr-x. 2 root   root          6 Apr 11  2018 libexec
drwxr-xr-x. 2 root   root          6 Apr 11  2018 sbin
drwxr-xr-x. 5 root   root         49 Apr 24 12:05 share
drwxr-xr-x. 2 root   root          6 Apr 11  2018 src
lrwxrwxrwx. 1 root   root         20 Jul  3 04:33 tomcat9 -> apache-tomcat-8.5.68
[root@client local]#

ただこれでもダメで、最終的にjournalctl-xeを見ると、

startup.sh[30325]: /usr/local/tomcat9/bin/catalina.sh: line 504: /usr/local/tomcat9/logs/catalina.out: Permission denied

となっており、どうやら/usr/local/tomcat9/logs/catalina.outというファイルへのpermission denyになっている。
確かに見ると、こいつだけrootが所有者になっていて、tomcatユーザは権限が足りていなかった(実行後、生成されるファイル?のため、所有者変更が効いてなかった?)ので、付与すると、とりあえずsystemctl start tomcatで実行可能に。

#JSP file [/index.jsp] not foundエラー

ただ、そのあとに上記エラーが発生。

しかしながら、"http://localhost:8080" にアクセスすると上記エラーが出ることを確認。
しかし、以下のディレクトリにアクセスするときちんと表示される。
"http://localhost:8080/examples"

つまり、最初の猫のページにアクセスしようとしたときにエラーメッセージに記載の通り、index.jspがないから、表示されていないようだ。
じゃあindex.jspってどこだ。

以下を参考にした。
引用:https://searchman.info/java_eclipse/1030.html

URLは、以下ですね。
http://localhost:8080/examples/servlets/servlet/HelloWorldExample

このURLのクラスは、以下のディレクトリにあります。
C:\tomcat9\webapps\examples\WEB-INF\classes \HelloWorldExample.class

つまり、\tomcat9\webappsにindex.jspがあればいいのか。
ダメだった。

./startup.shでtomcatを実行した場合、きちんと猫のページが表示される。
ということはやっぱりsystemctl start [ユニット]での実行時のミスがあるよう。
どうやら./startup.shを実行したときいくつかの環境変数が定義されているようだ。
その./startup.shを実行した際に定義されるJRE_HOMEとCATALINA_HOMEを/etc/profileに追記して、
改めて実行してみたが、変化なし。

/apache/logsの中身を見て切り分けを進めた。
…どうやらtomcat内の権限が足りなかったみたい。
参考:

tomcatをインストールしたディレクトリ全体の所有者と所有グループをtomcat:tomcatにしていた。
さらにtomcat配下webapps内の権限を755⇒775にしたらいけた。
(ただ、web閲覧時ってtomcatを動かしたユーザで各ファイル群にアクセスするはず。
もともと所有者においては7の権限を付与していたはずだが。。。?)

ということで、少し腑に落ちない部分はあるが、自作ユニット定義ファイルでのtomcat自動起動をしたい場合は、以下の観点で調べてあげればいいかもしれない。

・tomcat実行ファイル群の所有者:所有グループを起動者:起動グループにする(今回の場合、tomcat:tomcat)
・logs/catalina.outというファイルも上と同様の権限を与える
・さらにtomcatディレクトリ内webapps内の権限を所有グループについてもフルコントロールを与える

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?