Help us understand the problem. What is going on with this article?

EC2(AmazonLinux2)にJava、Apache、Tomcat9をインストール

概要

忘れないように、AmazonLinux2に、Java、Apache(WEBサーバ)、Tomcat(サーブレットコンテナ)をインストールしたことをメモしておく。

  • Webサーバ上で動くJavaプログラムがサーブレット
  • サーブレットを動かすソフトがサーブレットコンテナで、今回はそれがTomcat
  • リクエストに応じてレスポンスを返すWEBサーバのソフトがApache
  • TomcatはApacheがなくとも動くには動く。簡易的なWEBサーバソフトとしても機能する。

https://wa3.i-3-i.info/word12843.html

Javaのインストール

java-1.8.0-openjdk-develをインストール。develの有無の違いはこちらを参考にさせていただいた。実行環境だけならjava-1.8.0-openjdkで良いが、-develが付く方はjavacなどの開発用コマンドが使える。基本的には-develをインストール。

インストール
$yum install -y java-1.8.0-openjdk-devel
バージョン確認
$ java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

Apacheのインストール

こちらを参考にさせていただいた。

バージョン確認
$ httpd -v
Server version: Apache/2.4.43 ()
Server built:   May  8 2020 17:02:41
EC2起動時にApacheも起動する設定
$ systemctl enable httpd.service
$ systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 水 2020-09-02 14:17:37 UTC; 16h ago
     Docs: man:httpd.service(8)
~略~

enabledの文字があれば自動起動設定完了。

↓のようなEC2のエンドポイントにアクセスするとApacheのテストページが表示される。
http://ec2********.ap-northeast-1.compute.amazonaws.com

Tomcatのインストール

Apacheのインストールでもお世話になったリンク先を参考にしたがうまく動かなかった。こちらを参考にしたら動いた。なぜでしょう。。。
なお、EC2のセキュリティグループのインバウンドルールにおける8080ポートを許可しておく。Tomcatのテストページへのアクセスに必要。
セキュリティグループ:サーバー用.png

ダウンロード元URLは公式サイトのtar.gzのリンク先アドレス。

tomcatをホーディレクトリにダウンロード
$ cd ~
$ wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz
解凍
$ tar -xvzf apache-tomcat-9.0.37.tar.gz
解凍したディレクトリは、参考サイトに従い/opt/tomcat-9に移動&rename。
$ sudo mv ~/apache-tomcat-9.0.37 /opt/tomcat-9

tomcatグループとユーザーを作り、tomcat-9ディレクトリのユーザー・グループに設定する。-s/bin/falseオプションはtomcatユーザーが通常のユーザーとしてログインするのを防ぐ設定らしい。

ユーザー、グループ設定
$sudo groupadd tomcat
$sudo useradd -r tomcat -s /bin/false -g tomcat tomcat
$sudo chgrp -R tomcat /opt/tomcat-9
$sudo chown -R tomcat /opt/tomcat-9
tomcatのサービス起動の設定ファイル(ユニットファイル)を作成
$sudo vim /etc/systemd/system/tomcat.service

下記を貼り付け。参照サイトと自分の環境を比較して、JAVA_HOMEのパスがちょっと違った。CATALINA_HOMEやBASEはTomcatがインストールされたディレクトリみたい。
ユニットファイルには↓を見ると色々と意味があるようだが、細かいところは追々勉強。
https://tex2e.github.io/blog/linux/create-my-systemd-service

ユニットファイル
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=forking
Environment=CATALINA_PID=/opt/tomcat-9/temp/tomcat9.pid
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
Environment=CATALINA_HOME=/opt/tomcat-9
Environment=CATALINA_BASE=/opt/tomcat-9
Environment="CATALINA_OPTS=-Xms512m -Xmx1G"
Environment="JAVA_OPTS=-Dfile.encoding=UTF-8 -Djava.awt.headless=true"
ExecStart=/opt/tomcat-9/bin/startup.sh
ExecStop=/opt/tomcat-9/bin/shutdown.sh
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
自動起動スタート
$sudo systemctl daemon-reload
$sudo systemctl start tomcat
$sudo systemctl enable tomcat
状態確認
$ systemctl status tomcat.service
● tomcat.service - Apache Tomcat
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since 水 2020-09-02 14:17:37 UTC; 18h ago
~省略〜

EC2のエンドポイントに:8080をつけると、Tomcatのページが表示される。
http://ec2********.ap-northeast-1.compute.amazonaws.com:8080

サービスは手動で開始・終了ができる。

$sudo service tomcat start
$sudo service tomcat stop

Apacheのインストールでお世話になったサイトと上記手順を比べると、ユニットファイルの中身やシンボリックリンクの作成手順が無いなど微妙に違ったが、動きました。シンボリックリンクを作成する手順の方が、tomcatのバージョンを変えるケースなどにも対応できる。

参考

ありがとうございました。
https://qiita.com/hiren/items/2a4f1b55c99ebfb3fd08#apache
https://medium.com/@ean.vafaei/how-to-install-tomcat-on-aws-ec2-instance-c10738a653f2

fftcy-sttkm
ITエンジニアではありませんが、素人なりに仕事や趣味を通して学んだことを記録していきます。→2020/10よりITエンジニアへ転職
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away