LoginSignup
2
2

More than 3 years have passed since last update.

[CentOS8]5分でできないTomcat9のインストール

Last updated at Posted at 2020-06-12

はじめに

昨年Javaサーブレットを用いたゲームを制作した際に超絶初心者がtomcatを構築したのでその時の備忘録です。当時はCentOS7で構築しましたが改めてCentOS8で構築してみました。

前提と環境

・Windows10 pro 64bit上にVMware15.5.2を入れて仮想で動作
・CentOS8のiosファイルをDLしてVMwareでインストール。サーバ(GUI使用)。
 尚、簡易インストールはVMwareにCentOS8と認識されず不具合の可能性があったため手動インストール
・CentOSのバージョンは8.1.1911。tomcatのバージョンは9.0.36。
・ネットワーク全般の知識があると楽かも

VMwareのインストール・設定

VMware自体のインストールは自分で調べてほしいですが、設定で一つ注意点。
[仮想マシン設定の編集]から[ネットワークアダプタ]を[ブリッジ]にしてください

インストール時にはrootパスワードやユーザの設定をしておいてください

とりあえずアップデート

CentOSのデスクトップ左上のアクティビティから黒い画面のようなものをクリックして"端末"を起動。rootユーザになって行います。

#su -
#dnf -y update

アップデートが完了したら再起動しておきます。

Java JDKのインストール

これがないとtomcatくんが動かないのでインストール。Javaのバージョンは開発環境に合わせてください。今回は11を使います。バージョンが違うと作成したアプリを実行したときにjava.lang.ClassNotFoundExceptionとか出ます(当たり前)

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

#java -version
openjdk version "11.0.7" 2020-04-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.7+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.7+10-LTS, mixed mode, sharing)

※複数のJavaバージョンをインスコしている場合実行するバージョンを選択する必要があります。その場合は#alternatives --config java#alternatives --config javacを実行してください。

Tomcat9のインストール

2020年6月8日時点で最新の9.0.35を使用します。

tomcatユーザの作成

ついでにtomcatユーザをtomcatグループに入れておきます

#useradd -s /sbin/nologin tomcat
#usermod -aG tomcat tomcat

ダウンロード&展開

hogehogeフォルダを作成しその下にインストールします。フォルダ名は何でも構いません。

#mkdir /home/tomcat/hogehoge

ダウンロードして「/home/tomcat/hogehoge」以下に展開
/opt以下に展開するのが普通のようですが初心者の私はこうしてました。インストール場所や展開するときのユーザによってpermission deniedがでます。/var/log/messagesを見ると解決できるかもしれません。

#wget /home/tomcat/hogehoge https://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.tar.gz

#cd /home/tomcat/hogehoge
#tar -xzvf apache-tomcat-9.0.36.tar.gz 
#chown -R tomcat:tomcat /home/tomcat/hogehoge/

環境変数設定

全ユーザに設定するので/etc/profileに設定しています。

#vim /etc/profile

//下記を追加

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.7.10-1.el8_1.x86_64
CATALINA_HOME=/home/tomcat/hogehoge/apache-tomcat-9.0.36
export JAVA_HOME CATALINA_HOME

サービス登録

tomcatのサービスを登録します

#vim /etc/systemd/system/tomcat.service

下記を記述して保存します

[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/home/tomcat/hogehoge/apache-tomcat-9.0.36/tomcat.pid
RemainAfterExit=yes

ExecStart=/home/tomcat/hogehoge/apache-tomcat-9.0.36/bin/startup.sh
ExecStop=/home/tomcat/hogehoge/apache-tomcat-9.0.36/bin/shutdown.sh
ExecReStart=/home/tomcat/hogehoge/apache-tomcat-9.0.36/bin/startup.sh;/home/tomcat/hogehoge/apache-tomcat-9.0.36/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

権限を付与しておきます。

#chmod 755 /etc/systemd/system/tomcat.service

ファイヤーウォールの設定

そもそもファイアーウォールが動作しているか確認。動作していなければ起動させます

#systemctl status firewalld
//起動していなければ
#systemctl start firewalld

tomcatのポートを開けるためにfirewallにその名前を認識させます。

#vim /etc/firewalld/services/tomcat.xml
//下記を記述して保存

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Apache Tomcat 9</short>
  <description>Apache Tomcat 9</description>
  <port protocol="tcp" port="8080"/>
</service>

firewallのポートを開けます

#firewall-cmd --add-service=tomcat --zone=public --permanent
#firewall-cmd --reload
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh tomcat
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

SElinuxをOFF

何かと問題がでるのでOFFにしておきます。

#vim /etc/sysconfig/selinux
//下記のように修正

SELINUX=disabled

#reboot

で再起動しておきます

起動&自動起動設定

#systemctl start tomcat

#systemctl enable tomcat

正常に起動したらインストール成功です。

ブラウザからアクセス

ブラウザからアクセスしてtomcatのあの画面がでるのか確認します。
まずはIPアドレスを確認

#ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.11.40/24 brd 192.168.11.255 scope global dynamic noprefixroute ens160
       valid_lft 171919sec preferred_lft 171919sec
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

私の環境の場合192.168.11.40ですね。もちろん人によって変わるので自分の表示されたIPを使ってアクセスしてください。
おそらく多くの環境はens160という所のIPを確認すればよいかと思います。
※ちなみにCentOS7の時はens33でした。

ホスト側(windows)ブラウザを開いてhttp://192.168.11.40:8080
でアクセスしてネコが表示されればきちんと動作しています。

Tomcat9の設定もろもろ

そのままだと使えないので色々設定します。とりあえずmanagerにアクセスできるようにします。

managerのログインユーザ設定

managerにアクセスする際のユーザ名とパスワードを記述します。
以下は例なので自分でユーザ名とパスワードを決めてください。

#vim /home/tomcat/hogehoge/apache-tomcat-9.0.36/conf/tomcat-users.xml

//下記を</tomcat-users>の上に追加

<role rolename="manager-gui"/>
  <user username="qiita" password="12345" roles="manager-gui"/>

ちなみに12345とかadminとかいうガバガバパスワード,ユーザ名はやめてください。
これではまだmanagerにアクセスできません。

managerに許可するホストIPを設定

#vim /home/tomcat/hogehoge/apache-tomcat-9.0.36/webapps/manager/META-INF/context.xml

context.xmlの中にallow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"という記述があると思うのでその部分を下記のように修正。

allow="192\.168\.11\.([1-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))$|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"

これは192.168.xxx.xxxの形式をすべて許可するように正規表現で指定しています。
今回はローカルで構築したためこれで接続できますが、VPSを借りて構築した場合、自分のグローバルIPを調べ、そのIPをallow="xxx.xxx.xxx.xxx|(以下略)のように記述する必要があります。IPをつなげる場合は|を使います。

最後にtomcatを再起動します。

#systemctl restart tomcat

http://192.168.11.40:8080/manager/html
にアクセスして先ほど設定したユーザ名とパスワードを入力してアクセスできます。

エラーTips的な

起動できない場合のログは/var/log/messages

大体permission deniedかSElinuxが原因

時刻は合っているか

私の環境だとCentOS8がなぜかアメリカ時間になってた。。。
#timedatectl set-timezone Asia/Tokyoで変更できる

〇〇のsyntax error

コピペしたときに全角空白が入ってたり文字の順番がぐちゃぐちゃになる。
空白はみえないのでややこしい。vimで十字キーを押しまくって がないか調べよう。

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