Tomcat

Table of Content

javaのインストール

パッケージでインストール

# dnf install java-11-openjdk java-11-openjdk-devel

使用するjavaのバージョンを指定

# alternatives --config java

2 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*  1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre/bin/java)
 + 2           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java)

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

Tomcatのインストール

グループとユーザアカウントの作成

# groupadd --system tomcat
# useradd -d /opt/tomcat -r -s /bin/false -g tomcat tomcat

Apache Tomcatのダウンロード~展開

# cd /opt/
# # curl -O https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
# tar xvf /opt/apache-tomcat-9.0.56.tar.gz
# mv /opt/apache-tomcat-9.0.56 /opt/tomcat

アクセス権の設定

# cd /opt/tomcat
# chgrp -R tomcat /opt/tomcat
# chmod -R g+r conf
# chmod g+x conf
# chown tomcat:tomcat /opt/tomcat -R

設定ファイル変更

ローカルアドレスからのアクセスの許可

# cp /opt/tomcat/webapps/manager/META-INF/context.xml /opt/tomcat/webapps/manager/META-INF/context.xml.org
# vi /opt/tomcat/webapps/manager/META-INF/context.xml
-----------------------------------------------------------------------------------------
 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
 ↓接続元IPを追加(192.168.x.0/24)
 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.x\.\d+" />
-----------------------------------------------------------------------------------------
# cp /opt/tomcat/webapps/host-manager/META-INF/context.xml /opt/tomcat/webapps/host-manager/META-INF/context.xml.org
# vi /opt/tomcat/webapps/host-manager/META-INF/context.xml
-----------------------------------------------------------------------------------------
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
↓接続元IPを追加(192.168.x.0/24)
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.x\.\d+" />
-----------------------------------------------------------------------------------------

managerのパスワードを追加

# cp /opt/tomcat/conf/tomcat-users.xml /opt/tomcat/conf/tomcat-users.xml.org
# vi /opt/tomcat/conf/tomcat-users.xml
-----------------------------------------------------------------------------------------
<tomcat-users>

<role rolename="manager-gui"/>
<user username="kanri" password="xxxxxx" roles="manager-gui"/>

</tomcat-users>
-----------------------------------------------------------------------------------------

firwallの設定

tomcat用の設定ファイル作成

# vi /etc/firewalld/services/tomcat.xml
-----------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Apache Tomcat</short>
<description>Apache Tomcat Web Application Container</description>
<port protocol="tcp" port="8080"/>
</service>
-----------------------------------------------------------------------------------------

firewall有効化

# firewall-cmd --zone=internal --add-service=tomcat --permanent
# firewall-cmd --reload
# firewall-cmd --list-all --zone=internal

自動起動

Systemd Unitファイルの作成

# vi /etc/systemd/system/tomcat.service
-----------------------------------------------------------------------------------------
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
#ExecStop=/bin/kill -15 $MAINPID
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target
-----------------------------------------------------------------------------------------

※メモリの割り当ての「CATALINA_OPTS」は適当なので、使用する環境に合わせて変更が必須

systemctlコマンド

Systemdをリロードして、Tomcatユニットファイルをロード
# systemctl daemon-reload
Tomcatサービスを開始
# systemctl start tomcat
サービスが正常に開始されたことを確認
# systemctl status tomcat
サービスの常時機動化
# systemctl enable tomcat

動作確認

file
http://www.chinaz.org:8080/manager/html

デプロイ

manager経由
「Tomcat Webアプリケーションマネージャ」の「WARファイルの配備」でwarファイルを指定後に「配備」を押下
直接
「webapps」配下にwarファイルをコピー後にアクセス権をtomcatに変更後サービスを再起動する。

# cp ./test.war  /opt/tomcat/webapps
# chown tomcat:tomcat /opt/tomcat/webapps/test.war
# systemctl restart tomcat.service

※古いコンテキストパスのディレクトリを削除する。(これを忘れやすい)

エラー

PIDファイルを削除することで復旧

# vi /var/log/messages
---------------------------------------------------------------------------------------------------------------------------
Jan 22 23:21:10 hp systemd[1]: tomcat.service: Service RestartSec=10s expired, scheduling restart.
Jan 22 23:21:10 hp systemd[1]: tomcat.service: Scheduled restart job, restart counter is at 132.
Jan 22 23:21:10 hp systemd[1]: Stopped Apache Tomcat Web Application Container.
Jan 22 23:21:10 hp systemd[1]: Starting Apache Tomcat Web Application Container...
Jan 22 23:21:10 hp startup.sh[8283]: Existing PID file found during start.
Jan 22 23:21:10 hp startup.sh[8283]: Tomcat appears to still be running with PID 1075. Start aborted.
Jan 22 23:21:10 hp startup.sh[8283]: If the following process is not a Tomcat process, remove the PID file and try again:
Jan 22 23:21:10 hp startup.sh[8283]: UID          PID    PPID  C STIME TTY          TIME CMD
Jan 22 23:21:10 hp startup.sh[8283]: root        1075       1  0 22:43 ?        00:00:00 /usr/sbin/gssproxy -D
Jan 22 23:21:10 hp systemd[1]: tomcat.service: Control process exited, code=exited status=1
Jan 22 23:21:10 hp systemd[1]: tomcat.service: Failed with result 'exit-code'.
Jan 22 23:21:10 hp systemd[1]: Failed to start Apache Tomcat Web Application Container.
---------------------------------------------------------------------------------------------------------------------------
# systemctl stop tomcat.service
# rm -f /opt/tomcat/temptomcat.pid
# systemctl start tomcat.service
# systemctl status  tomcat.service

使用するjavaのバージョンを再指定したら復旧

CentOS8からAlmaLinuxへの移行したら、tomcatが起動しなくなった。

# vi /var/log/messages
---------------------------------------------------------------------------------------------------------------------------
Jan 15 19:41:07 hp systemd[1]: tomcat.service: Service RestartSec=10s expired, scheduling restart.
Jan 15 19:41:07 hp systemd[1]: tomcat.service: Scheduled restart job, restart counter is at 4.
Jan 15 19:41:07 hp systemd[1]: Stopped Apache Tomcat Web Application Container.
Jan 15 19:41:07 hp systemd[1]: Starting Apache Tomcat Web Application Container...
Jan 15 19:41:07 hp startup.sh[11904]: Existing PID file found during start.
Jan 15 19:41:07 hp startup.sh[11904]: Removing/clearing stale PID file.
Jan 15 19:41:07 hp startup.sh[11904]: Tomcat started.
Jan 15 19:41:07 hp systemd[1]: Started Apache Tomcat Web Application Container.
Jan 15 19:41:07 hp systemd[1]: tomcat.service: Main process exited, code=exited, status=126/n/a
Jan 15 19:41:07 hp systemd[1]: tomcat.service: Failed with result 'exit-code'.
---------------------------------------------------------------------------------------------------------------------------
# vi /opt/tomcat/logs/catalina.out
---------------------------------------------------------------------------------------------------------------------------
/opt/tomcat/bin/catalina.sh: 行 502: /usr/lib/jvm/jre/bin/java: ディレクトリではありません
---------------------------------------------------------------------------------------------------------------------------

使用するjavaのバージョンを再指定したら復旧

# alternatives --config java

コメントを残す

メールアドレスが公開されることはありません。