LoginSignup
13
18

More than 5 years have passed since last update.

参考メモ/CentOS7にOracle Java SE (Java8) と Tomcat8 をインストールしてsystemdで管理

Posted at

参考メモ/CentOS7のApache Tomcatパッケージについてメモ であんまりパッケージでtomcat入れるのが好きになれなくて(お仕事上の要件とは別腹です)、
参考メモ/CentOS7 の OpenJDK パッケージの構成メモ でもやっぱりあんまりパッケージでOpenJDK入れるのが好きになれなかったので(お仕事上の要件とは別腹です)、
Oracle Java SE (Java 8) を Oracle公式からtar.gzでインストールして手動でJAVA_HOMEとPATH調整し、Apache Tomcat も公式から apache-tomcat-8.0.32.tar.gz をDLして、手動でunitファイル作ってsystemdで管理してみます。

確認環境:64bit CentOS7
$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
※epelリポジトリ導入済み

Oracle Java SE (Java8) のインストールとJAVA_HOME, PATH調整

  1. Oracle Java SE (JDK8) を Oracle 公式ページよりtar.gzでDL
  2. tar zxf jdk-8u74-linux-x64.tar.gz で展開 -> jdk1.8.0_74 ディレクトリの下にすべて展開される。
  3. rootユーザで /opt/jdk1.8.0_74 に移動、なんかownerが変なIDになってたので、 chown root.root -R /opt/jdk1.8.0_74 で全部rootに変更。
  4. /etc/profile.d/ の下に opt_jvm.sh というファイルを作成し、内容を後述のようにする。
  5. システム再起動し、ログインしてjavaのバージョンやパスを確認する。
/etc/profile.d/opt_jvm.sh
#!/bin/sh
export JAVA_HOME=/opt/jdk1.8.0_74
export PATH=$JAVA_HOME/bin:$PATH

再起動→ログイン後のチェック:

[msakamoto@localhost ~]$ which java
/opt/jdk1.8.0_74/bin/java
[msakamoto@localhost ~]$ java -version
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

/etc/profile に直接書くのは行儀が悪そう。/etc/profile 中に、下の方に /etc/profile.d/ 以下の .sh を取り込むループがあったので、ここは空気を読んで /etc/profile.d/opt_jvm.sh を作成してそこにローカルなカスタマイズを入れました。

Apache Tomcat 8 のインストールと動作確認

  1. Apache Tomcat バージョン8を公式ページよりtar.gzでDL
  2. tar zxf apache-tomcat-8.0.32.tar.gz で展開 -> root で /opt/apache-tomcat-8.0.32 に移動
  3. まずは普通にstartup.shを実行して動作確認
    1. root で /opt/apache-tomcat-8.0.32/bin/startup.sh 実行
    2. 8080番ポートにアクセスしてTomcat8のデフォルトTOPページが表示されればOK.

systemd の unitファイル作成、登録

参考:

/etc/sysconfig/tomcat を以下の内容で作成。systemdからの起動用で、/etc/profile に頼らずに、unitファイルの EnvironmentFile でJAVA_HOMEなど調整できるようします。(JAVA_OPTSについては参考記事の注参照) :

JAVA_HOME=/opt/jdk1.8.0_74
JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"

unitファイルとして /etc/systemd/system/tomcat.service を以下の内容で作成します。環境変数は EnvironmentFile で調整できるようにして、CentOSのtomcatパッケージを参考に SuccessExitStatus=143 を指定。(参考にさせてもらった方ではKillMode=none も入れてましたが、入れなくても正常にstart/stop/restartできました。)

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/opt/apache-tomcat-8.0.32/bin/startup.sh
ExecStop=/opt/apache-tomcat-8.0.32/bin/shutdown.sh
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

登録と動作確認:

# systemctl daemon-reload

# systemctl start tomcat.service

# systemctl status tomcat.service
● tomcat.service - Apache Tomcat Web Application Container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2016-03-13 20:55:57 JST; 1s ago
  Process: 2720 ExecStart=/opt/apache-tomcat-8.0.32/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 2740 (java)
   CGroup: /system.slice/tomcat.service
           └─2740 /opt/jdk1.8.0_74/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-8.0.32/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.egd=file:/dev/./urandom -D...
  Mar 13 20:55:56 localhost.localdomain systemd[1]: Starting Apache Tomcat Web Application Container...
Mar 13 20:55:57 localhost.localdomain startup.sh[2720]: Tomcat started.
Mar 13 20:55:57 localhost.localdomain systemd[1]: Started Apache Tomcat Web Application Container.

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

→再起動後も正常にtomcat起動を確認。

停止:

# systemctl stop tomcat.service

この後、firewalldを使ってる場合はサービス定義のXMLを作成するなどして穴あけしますが、本記事では省略します。

感想

Javaのサービス管理ってやりづらそう、というイメージがあったんですが、CentOS提供のパッケージを調べたり、先人のノウハウのおかげで簡単にsystemdの流儀で管理できるようになりました。

お仕事でもこのノウハウ流用できれば良いなぁ・・・。

13
18
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
13
18