2
5

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 1 year has passed since last update.

CentOS8.2にJava11とTomcat9をセットアップする手順

Last updated at Posted at 2020-11-28
../

VPSサーバー(CentOS8.2)にJava11とTomcat9をインストールした。その手順をメモしておく。

java-11-openjdkのインストール

yumでインストールし、バージョンを確認しておく。11.0.9であった。


$ yum install java-11-openjdk
$ yum install java-11-openjdk-devel
$ yum install java-11-openjdk-headless
$ java -version
openjdk version "11.0.9" 2020-10-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.9+11-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.9+11-LTS, mixed mode, sharing)

$ ls /usr/lib/jvm/
java-11-openjdk-11.0.9.11-0.el8_2.x86_64

JAVA_HOMEとJRE_HOMEの設定

環境変数JAVA_HOMEとJRE_HOMEに設定しておく。PATHにも追加しておくこと。/etc/profileの末尾に記述しておくと、各ユーザーに共通に適用される。変数はexportしておく。export するとenvで環境変数の一覧として確認できる。JRE_HOMEはJAVA_HOMEで代用してよい。

ちなみに、su - (ハイフンありでswitch user)したときには、各ユーザーのホームにある.bashrc(/home/xxx/.bashrc)が呼ばれ、そこから/etc/bashrcが呼ばれ、そこからさらに/etc/profileが呼ばれる。


$ vi /etc/profile
(末尾に追加)
export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
$ source /etc/profile
$ env

Tomcat9のインストール

Tomcat9をインストールして利用する。Tomcat用のユーザーもtomcat9で登録しておく。

https://downloads.apache.org/tomcat/tomcat-9/ にアクセスして、最新バージョンを確認しておいた。現時点では v9.0.40 であった。ダウンロードしてインストールする。インストール先は、/opt/tomcat9 とする。ネット情報では、/usr/localや/usr/libexecなどにインストールする方もあるようだが、私は、/opt が短いし、他のものと混在しにくいので気に入っている。


$ su -
$ useradd -s /sbin/nologin tomcat9		# tomcat9ユーザーを作成

$ cd Downloads
$ wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.40//bin/apache-tomcat-9.0.40.tar.gz
$ tar zxvf apache-tomcat-9.0.40.tar.gz
$ mv apache-tomcat-9.0.40 /opt/tomcat9
$ chown -R tomcat9:tomcat9 /opt/tomcat9

$ ln -s /opt/tomcat9/ /usr/local/tomcat9	# リンクしておく

CATALINA_HOMEの設定

/etc/profileの末尾にCATALINA_HOMEを追記する。前述のJAVA_HOME,JRE_HOMEに続けて、CATALINA_HOME,CATALINA_BASEを記述する。exportしておくこと。


$ vi /etc/profile
(末尾に追加)
export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=$JAVA_HOME
export CATALINA_HOME=/opt/tomcat9
export CATALINA_BASE=$CATALINA_HOME
export PATH=$CATALINA_HOME/bin:$JAVA_HOME/bin:$PATH
$ source /etc/profile

そして、version.sh を実行して、JRE_HOME,CATALINA_HOMEが適切に設定されているかを確認しておく。JRE_HOMEとCATALINA_HOMEがexportされていないと、別の場所が参照されてしまうので、注意のこと。


$ /opt/tomcat9/bin/version.sh
Using CATALINA_BASE:   /opt/tomcat9
Using CATALINA_HOME:   /opt/tomcat9
Using CATALINA_TMPDIR: /opt/tomcat9/temp
Using JRE_HOME:        /usr/lib/jvm/java
Using CLASSPATH:       /opt/tomcat9/bin/bootstrap.jar:/opt/tomcat9/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Server version: Apache Tomcat/9.0.40
Server built:   Nov 12 2020 15:35:02 UTC
Server number:  9.0.40.0
OS Name:        Linux
OS Version:     4.18.0-193.28.1.el8_2.x86_64
Architecture:   amd64
JVM Version:    11.0.9+11-LTS
JVM Vendor:     Red Hat, Inc.

JVM VersionがJava11に切り替わっていないない場合がある。例えばJava1.8だったりする。その場合は、alternatives を実行してJVM を切り替えておく。それからversion.shを再実行すること。

# alternatives --config java

tomcat9.serviceの登録と起動

tomcat9.serviceを新規に作成する。


$ vi /etc/systemd/system/tomcat9.service
[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
Type=forking
User=tomcat9
Group=tomcat9

ExecStart=/opt/tomcat9/bin/startup.sh
ExecStop=/opt/tomcat9/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

tomcat9.serviceを起動する。また、OSの起動時に自動で開始されるように設定しておく。

$ systemctl enable tomcat9
$ systemctl start tomcat9
$ systemctl status tomcat9
● tomcat9.service - Apache Tomcat 9
   Loaded: loaded (/etc/systemd/system/tomcat9.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-11-28 15:41:05 JST; 7s ago
  Process: 98210 ExecStart=/opt/tomcat9/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 98224 (java)
    Tasks: 35 (limit: 24989)
   Memory: 127.9M

ブラウザからの確認

GNOMEデスクトップ上でブラウザからURLを指定してアクセスしてみる。ポートは8080である。http://localhost:8080/ または http://127.0.0.1:8080/ でアクセスして猫ロゴが出ればOKだ。GNOMEにはFireFoxがプリインストールされている。

Firewallの設定と外部からの接続確認

外部のブラウザからIPアドレスやドメイン名を指定してアクセスできるようにするには、以下のようにFirewallの設定をする。tomcatのサービスは未登録(/etc/servicesにtomcatはない)なので、8080/tcpのポートを直接追加する。


$ firewall-cmd --zone=public --add-port=8080/tcp --permanent
$ firewall-cmd --reload
$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client http mysql ssh vnc-server
  ports: 8080/tcp
  protocols: 

これにより、http://157.xxx.xxx.xxx:8080/http://xxx.com:8080/ でアクセスできる。猫ロゴが出ればOKだ。この時点では、:8080のポートはまだ省略はできない。

Tomcat Webマネージャを利用するには

ブラウザからTomcat Webマネージャを利用できるように設定しておきたい。アカウントadminを以下のように登録し、Tomcatサービスを再起動する。


$ vi ${CATALINA_HOME}/conf/tomcat-users.xml
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="***" roles="admin-gui,manager-gui"/>

$ systemctl restart tomcat9

GNOMEデスクトップからFireFoxなどのブラウザで以下のURLにアクセスして、admin/*** アカウントでログインできることを確認しておく。

しかし、この時点では外部のブラウザからIPアドレスやドメインを指定してアクセスすることはできない。特定のPCからアクセスできるようにするには、以下のようにmanagerとhost-managerのそれぞれのcontext.xmlを編集して、自身のPCのIPアドレス(以下では、xxx.xxx.xxx.\d+としている)を追加する必要がある。自身のPCのIPアドレスは、https://www.cman.jp/network/support/go_access.cgi に問い合わせると即答してくれる。

$ cd ${CATALINA_HOME}/webapps/manager/META-INF/
$ cp -p context.xml context.xml.original
$ vi context.xml
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
         ↓
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|xxx.xxx.xxx.\d+" />
$ cd ${CATALINA_HOME}/webapps/host-manager/META-INF/
$ cp -p context.xml context.xml.original
$ vi context.xml
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
         ↓
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|xxx.xxx.xxx.\d+" />

以上

../
2
5
1

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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?