CentOS8でのTomcatの自動起動設定

## はじめに
以前紹介したオンプレ用のグループウェアのGroupsessionを久々に構築した際に、Tomcatの自動起動ではまったので、自分ように手順を残します。

## 環境
OS:CentOS stream 8
MW:apache-tomcat-9.0.53

## 1.準備作業
必要な資材を以下のURLからダウンロードする。
https://groupsession.jp/dl/dl.html
→gsession.war、インストール後にライセンスファイルの入手
http://tomcat.apache.org/download-90.cgi
→apache-tomcat-9.0.53.tar
https://adoptopenjdk.net/
→OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz

## 2.セットアップ
下記URLに公開されている手順に従ってGroupSessionのセットアップを行う。
https://groupsession.jp/support/setup_linux.html

こんな感じでログイン画面が表示され、利用可能となる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693852/5faed5c2-2979-eebc-f42c-ee55786a563c.png)

## 3.CentOS Stream8でのtomcatの自動起動
公開されている手順ではtomcatの自動起動までは記載がないのでtomcatの自動起動の設定を行う。
まずはtomcat起動用ユーザを作成

```
[root@HOSTNAME bin]# useradd -M tomcat
[root@HOSTNAME bin]# id tomcat
uid=1001(tomcat) gid=1001(tomcat) groups=1001(tomcat)
```
次にtomcatのパスの権限をrootからtomcatに変更する。パスについてはバージョンアップなどを考慮して
symbolic Linkにしておいて、それを変更する。

```
[root@HOSTNAME ~]# cd /usr/local/java
[root@HOSTNAME java]# ln -s apache-tomcat-9.0.53 tomcat9
[root@HOSTNAME java]# ls -l | grep tomcat9
lrwxrwxrwx  1 root     root            20  9月 16 10:37 tomcat9 -> apache-tomcat-9.0.53
[root@HOSTNAME java]# chown tomcat:tomcat -R ./tomcat9
[root@HOSTNAME java]# ls -l | grep tomcat9
lrwxrwxrwx  1 tomcat     tomcat            20  9月 16 10:37 tomcat9 -> apache-tomcat-9.0.53
```
次にsystemd用のユニットファイルを作成する。

```
[root@HOSTNAME java]# cd /etc/systemd/system/
[root@HOSTNAME system]# touch tomcat9.service
[root@HOSTNAME system]# vi tomcat9.service 
[Unit]
Description=Apache Tomcat 9.0.53
ConditionPathExists=/usr/local/java/tomcat9

[Service]
User=tomcat
Group=tomcat
Type=oneshot

EnvironmentFile=/usr/local/java/tomcat9/tomcat

ExecStart=/usr/local/java/tomcat9/bin/startup.sh
ExecStop=/usr/local/java/tomcat9/bin/shutdown.sh
Restart=no
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
[root@HOSTNAME system]# chmod 755 tomcat9.service 
```
自動起動時に環境変数のJAVA_HOMEを読み込むためユニットファイル内の「EnvironmentFile」で設定したパスに環境ファイルを作成する。

```
[root@HOSTNAME /]# touch/usr/local/java/tomcat9/tomcat
[root@HOSTNAME /]# vi /usr/local/java/tomcat9/tomcat
JAVA_HOME=/usr/local/java/jdk-11.0.12+7
```
これで準備完了。あとは、systemdに登録する。

```
[root@HOSTNAME /]# systemctl daemon-reload
[root@HOSTNAME /]# systemctl list-unit-files --type=service | grep tomcat
tomcat9.service                            disabled 
[root@HOSTNAME system]# systemctl enable tomcat9
Created symlink /etc/systemd/system/multi-user.target.wants/tomcat9.service → /etc/systemd/system/tomcat9.service.
[root@HOSTNAME java]# systemctl stop tomcat9.service 
[root@HOSTNAME java]# systemctl start tomcat9.service
[root@HOSTNAME java]# systemctl status tomcat9.service 
● tomcat9.service - Apache Tomcat 9.0.53
   Loaded: loaded (/etc/systemd/system/tomcat9.service; enabled; vendor preset:>
   Active: active (exited) since Thu 2021-09-16 13:27:28 JST; 7s ago
  Process: 2301 ExecStop=/usr/local/java/tomcat9/bin/shutdown.sh (code=exited, >
  Process: 2335 ExecStart=/usr/local/java/tomcat9/bin/startup.sh (code=exited, >
 Main PID: 2335 (code=exited, status=0/SUCCESS)
    Tasks: 21 (limit: 49346)
   Memory: 299.5M
   CGroup: /system.slice/tomcat9.service
           mq2343 /usr/local/java/jdk-11.0.12+7/bin/java -Djava.util.logging.co>

 9月 16 13:27:28 HOSTNAME systemd[1]: Starting Apache Tomcat 9.0.53...
 9月 16 13:27:28 HOSTNAME systemd[1]: Started Apache Tomcat 9.0.53.
```
以上

## はまった点
OS起動時にJAVA_HOMEが読み込めてないことになかなか気づかずにそこそこ時間がかかりました…。