備忘録 CentOS7, Tomcat8.5.11をsystemctlコマンドで起動/停止したい

CentOS 7からはsystemdでサービスの管理がされているもんだから、インストールしたTomcat8.5.11をsystemctlで起動/停止をしてみようかと。

## tomcat.serviceファイルの作成
まずは、tomcat.serviceファイルを作成。
作成場所は/etc/systemd/systemディレクトリに。
ファイルのパーミッションは 644で。

```ini:/etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat 8.5.11
After=network.target remote-fs.target nss-lookup.target

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

ExecStart=/usr/local/apache-tomcat-8.5.11/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-8.5.11/bin/shutdown.sh
RemainAfterExit=yes

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

## tomcatのサービスを有効にする
systemctl enable サービス名 でサービスを有効にする。

```console:
# systemctl enable tomcat.service
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.
```

systemctl list-unit-files サービス名 で、有効になったことを確認する。

```console:
# systemctl list-unit-files tomcat.service
UNIT FILE      STATE
tomcat.service enabled

1 unit files listed.
```

## tomcatを起動してみる

systemctl start サービス名 でtomcatを起動する。
※.serviceの部分は省略可。

```sh:
systemctl start tomcat
```

psコマンドで、プロセス確認を実施。

```console
# ps -ef | grep tomcat
tomcat   22101     1 77 22:14 ?        00:00:03 /usr/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-8.5.11/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /usr/local/apache-tomcat-8.5.11/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.11/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-8.5.11 -Dcatalina.home=/usr/local/apache-tomcat-8.5.11 -Djava.io.tmpdir=/usr/local/apache-tomcat-8.5.11/temp org.apache.catalina.startup.Bootstrap start
root     22118  6660  0 22:14 pts/2    00:00:00 grep --color=auto tomcat
```

サービスの状況を確認する。

systemctl status サービス名 -l コマンドで確認する。
※ -l ログを省略せずに出力

```console
# systemctl status tomcat -l
● tomcat.service - Apache Tomcat 8.5.11
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (exited) since 木 2017-03-23 22:14:48 JST; 5min ago
  Process: 21687 ExecStop=/usr/local/apache-tomcat-8.5.11/bin/shutdown.sh (code=exited, status=0/SUCCESS)
  Process: 22087 ExecStart=/usr/local/apache-tomcat-8.5.11/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 22087 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/tomcat.service
           └─22101 /usr/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-8.5.11/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /usr/local/apache-tomcat-8.5.11/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.11/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-8.5.11 -Dcatalina.home=/usr/local/apache-tomcat-8.5.11 -Djava.io.tmpdir=/usr/local/apache-tomcat-8.5.11/temp org.apache.catalina.startup.Bootstrap start

 3月 23 22:14:48 brighton005 systemd[1]: Starting Apache Tomcat 8.5.11...
 3月 23 22:14:48 brighton005 startup.sh[22087]: Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.11
 3月 23 22:14:48 brighton005 startup.sh[22087]: Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.11
 3月 23 22:14:48 brighton005 startup.sh[22087]: Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.11/temp
 3月 23 22:14:48 brighton005 startup.sh[22087]: Using JRE_HOME:        /usr
 3月 23 22:14:48 brighton005 startup.sh[22087]: Using CLASSPATH:       /usr/local/apache-tomcat-8.5.11/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.11/bin/tomcat-juli.jar
 3月 23 22:14:48 brighton005 systemd[1]: Started Apache Tomcat 8.5.11.
```

ただしく起動してるようです。

## tomcatサービスを停止する

systemctl stop サービス名 でサービスを停止してみる。

```console
# systemctl stop tomcat
```

psコマンドで、プロセスを確認する。

```console
# ps -ef | grep tomcat
root     22193  6660  0 22:46 pts/2    00:00:00 grep --color=auto tomcat
```

停止されたようだ。

systemctl status サービス名 でステータスも確認してみる。

```console
# systemctl status tomcat -l
● tomcat.service - Apache Tomcat 8.5.11
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since 木 2017-03-23 22:45:06 JST; 2min 8s ago
  Process: 22162 ExecStop=/usr/local/apache-tomcat-8.5.11/bin/shutdown.sh (code=exited, status=0/SUCCESS)
  Process: 22087 ExecStart=/usr/local/apache-tomcat-8.5.11/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 22087 (code=exited, status=0/SUCCESS)

 3月 23 22:14:48 brighton005 startup.sh[22087]: Using JRE_HOME:        /usr
 3月 23 22:14:48 brighton005 startup.sh[22087]: Using CLASSPATH:       /usr/local/apache-tomcat-8.5.11/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.11/bin/tomcat-juli.jar
 3月 23 22:14:48 brighton005 systemd[1]: Started Apache Tomcat 8.5.11.
 3月 23 22:45:05 brighton005 systemd[1]: Stopping Apache Tomcat 8.5.11...
 3月 23 22:45:05 brighton005 shutdown.sh[22162]: Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.11
 3月 23 22:45:05 brighton005 shutdown.sh[22162]: Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.11
 3月 23 22:45:05 brighton005 shutdown.sh[22162]: Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.11/temp
 3月 23 22:45:05 brighton005 shutdown.sh[22162]: Using JRE_HOME:        /usr
 3月 23 22:45:05 brighton005 shutdown.sh[22162]: Using CLASSPATH:       /usr/local/apache-tomcat-8.5.11/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.11/bin/tomcat-juli.jar
 3月 23 22:45:06 brighton005 systemd[1]: Stopped Apache Tomcat 8.5.11.
```

正しく停止しているようだ。
うーん、昨日はここでエラーがでていたのだが。。。。

なにだなんだか。。。
まぁ一応OKとしようとおもったが、なんどか確認していると。。。。。

```console
# systemctl stop tomcat
# systemctl status tomcat -l
● tomcat.service - Apache Tomcat 8.5.11
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since 木 2017-03-23 22:51:23 JST; 4s ago
  Process: 22597 ExecStop=/usr/local/apache-tomcat-8.5.11/bin/shutdown.sh (code=exited, status=0/SUCCESS)
  Process: 22561 ExecStart=/usr/local/apache-tomcat-8.5.11/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 22561 (code=exited, status=0/SUCCESS)

 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.PlainSocketImpl.socketConnect(Native Method)
 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:344)
 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.Socket.connect(Socket.java:579)
 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.Socket.connect(Socket.java:528)
 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.Socket.<init>(Socket.java:425)
 3月 23 22:51:22 brighton005 shutdown.sh[22597]: at java.net.Socket.<init>(Socket.java:208)
 3月 23 22:51:23 brighton005 systemd[1]: Stopped Apache Tomcat 8.5.11.
```

停止はしているけど、エラーがでてるぞと。
ログみたけど、停止ログがかかれていない。。。。。
当面調査。。。

```console
# tail -f catalina.2017-03-23.log
23-Mar-2017 22:51:10.679 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/apache-tomcat-8.5.11/temp
23-Mar-2017 22:51:10.679 情報 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
23-Mar-2017 22:51:11.162 情報 [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
23-Mar-2017 22:51:11.334 情報 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
23-Mar-2017 22:51:11.363 情報 [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
23-Mar-2017 22:51:11.366 情報 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
23-Mar-2017 22:51:11.379 情報 [main] org.apache.catalina.startup.Catalina.load Initialization processed in 2128 ms
23-Mar-2017 22:51:11.475 情報 [main] org.apache.catalina.core.StandardService.startInternal サービス Catalina を起動します
23-Mar-2017 22:51:11.476 情報 [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.11
23-Mar-2017 22:51:11.493 情報 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ /usr/local/apache-tomcat-8.5.11/webapps/ROOT を配備します

```