#概要
忘れないように、AmazonLinux2に、Java、Apache(WEBサーバ)、Tomcat(サーブレットコンテナ)をインストールしたことをメモしておく。
- Webサーバ上で動くJavaプログラムがサーブレット
- サーブレットを動かすソフトがサーブレットコンテナで、今回はそれがTomcat
- リクエストに応じてレスポンスを返すWEBサーバのソフトがApache
- TomcatはApacheがなくとも動くには動く。簡易的なWEBサーバソフトとしても機能する。
#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
$ 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のテストページへのアクセスに必要。
ダウンロード元URLは公式サイトのtar.gzのリンク先アドレス。
$ 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
$ 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
$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