Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@kaburankattara

Tomcatの構築手順

構築環境

Iaas:AWS EC2
OS:RHEL-7.6_HVM_GA-20190128-x86_64-0-Hourly2-GP2(コミュニティ AMI)
Tomcat:Tomcat8.5.61
Java:openjdk-8u41-b04

構築方針について

Tomcatをインストールする方法はyumコマンドやソースからインストール等、複数の方法があります。
今回はバージョンの選択が容易なソースからのインストールを実施します。

Tomcat管理用のユーザーを作成

Tomcat管理用に専用のユーザーを作成します。

1.ユーザーを作成する

ユーザーをrootに切り替え、useraddコマンドでユーザーを追加します。
追加出来たらpasswdコマンドでユーザーのパスワードも指定します。

$ sudo su -
# useradd webuser
# passwd webuser
Changing password for user webuser.
New password: 
BAD PASSWORD: The password contains the user name in some form
Retype new password: 
passwd: all authentication tokens updated successfully.

2.sudoの実行権限を付与する

作成したwebuserでroot権限実行(sudo)が出来るように設定します。

# visudo
以下を追記します
webuser ALL=(ALL)      NOPASSWD: ALL

3.以降はwebuserに切り替えて設定する

ユーザーをrootから元に戻し、webuserに切り替えます。

# exit 
$ su - webuser
パスワード:

tarファイルを入手

1.インストールしたいバージョンのtarファイルのURLを確認する

下記リンクでバージョン別にtarファイルをダウンロード出来ます。
インストールしたいバージョンのtarファイルのリンクをブラウザの開発者ツール等を用いてURLを取得しておきます。

■Tomcatのtarファイルをダウンロード出来るサイト
https://archive.apache.org/dist/tomcat/
GUI環境のLinuxやWindows環境にインストールしたい場合はこのサイトから直接ダウンロードすればOKです。
今回はCUIのLinux環境から直接ダウンロードしたいのでtarファイルのURLを確認のみ行います。

■javaのtarファイルをダウンロード出来るサイト
https://jdk.java.net/java-se-ri/8-MR3

2.Tomcatとjavaをダウンロード

tomcatを動作させるためにはjavaが必要になるため、tomcatとjavaのtarファイルをそれぞれ取得します。

$ curl -OL https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz
$ curl -OL https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz

javaをインストール

1.tarファイルの解凍・配置

ダウンロードしたtarファイルを展開し、配置します。

$ mkdir ~/java && tar xvf /home/webuser/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -C ~/java --strip-components 1
$ sudo mv ~/java /usr/local/java

2.PATHを通す

javaコマンドが使用出来るように 環境変数を設定します。

$ sudo vi /etc/profile

#以下を追記
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

環境変数を設定したらsourceコマンドで設定を再読込みします。

source /etc/profile

Tomcatをセットアップ

1.tarファイルの解凍・配置する

圧縮されたtarファイルを解凍し、インストール先の階層に配置します。

$ tar xvf ~/apache-tomcat-8.5.61.tar.gz
$ sudo mv ~/apache-tomcat-8.5.61 /opt

2.配置先ディレクトリの所有者を変更

# chown -R webuser:webuser /opt/apache-tomcat-8.5.61

設定値の変更

1.web.xmlを設定する

cookieのHttpOnly属性をtrueに設定し、Cookieの範囲をHTTPリクエストに制限します。
これにより、HTTPテキスト内のスクリプトからCookieにアクセスを不可にします。

$ sudo vi /opt/apache-tomcat-8.5.61/conf/web.xml
cookie-configを追加する。
<session-config>
  <session-timeout>30</session-timeout>
  <cookie-config>
    <http-only>true</http-only>
  </cookie-config>
</session-config>

2.server.xmを設定する

Tomcatがリクエストを受け取る方式を設定します。

クライアントからリクエストを受け取る際、Tomcatが直接受け取るのではなく、Apache Http Server等のWebサーバを経由することが多いと思います。
その場合、httpまたはajpプロトコルを用いてwebサーバ-Tomcat間を連携します。

$ sudo vi /opt/apache-tomcat-8.5.61/conf/server.xml

<!-- httpプロトコルで受け取る場合、以下をコメントアウトする -->
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="100" minSpareThreads="5" acceptCount="50"/>

<!-- ajpプロトコルで受け取る場合、以下をコメントアウトする -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads="100" minSpareThreads="5" acceptCount="50"/>

warファイルをデプロイ

デフォルト設定の場合、Tomcat内のwebappsディレクトリ内にwarファイルを配置します。
Tomcatを起動すると自動的にwarファイルを展開してくれます。

以下ではsample.warを配置した場合

$ mv sample.war /opt/apache-tomcat-8.5.61/webapps/

Systemdの設定

サーバ起動と同時に自動起動するようにSystemdで管理するように設定します。

1.ユニット定義ファイルを作成する

Tomcat管理用にユニットファイルを作成します。
CATALINA_HOMEなど、環境変数の設定が必要な場合、Environmentを使用して設定します。

$ sudo vi /etc/systemd/system/tomcat.service

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

[Service]
User=webuser
Group=webuser
Type=oneshot
PIDFile=/opt/apache-tomcat-8.5.61/tomcat.pid
RemainAfterExit=yes

Environment=JAVA_HOME=/usr/local/java/
Environment=JRE_HOME=/usr/local/java/jre
Environment=CATALINA_HOME=/opt/apache-tomcat-8.5.61
Environment=CATALINA_BASE=/opt/apache-tomcat-8.5.61
Environment='CATALINA_OPTS=-server -Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M'

ExecStart=/opt/apache-tomcat-8.5.61/bin/startup.sh
ExecStop=/opt/apache-tomcat-8.5.61/bin/shutdown.sh
ExecReStart=/opt/apache-tomcat-8.5.61/bin/shutdown.sh;/opt/apache-tomcat-8.5.61/bin/startup.sh

[Install]
WantedBy=multi-user.target

2.サーバを起動時にTomcatが自動起動されるように設定する

$ sudo systemctl enable tomcat

3.Systemdで起動と停止する

systemctlコマンドで起動します。

$ sudo systemctl start tomcat

ステータスを確認し、active (running)となっていればOKです。

$ sudo systemctl status tomcat
● tomcat.service - Apache Tomcat 8
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (exited) since 土 2021-02-13 09:51:50 UTC; 9min ago
  Process: 3745 ExecStart=/opt/apache-tomcat-8.5.61/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 3745 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/tomcat.service
           └─3759 /usr/local/java/jre/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-8.5.61/conf/logging.properties -Djava.util.logging.manager=org...

 2月 13 09:51:50 ip-172-31-37-163.ap-northeast-1.compute.internal systemd[1]: Starting Apache Tomcat 8...
 2月 13 09:51:50 ip-172-31-37-163.ap-northeast-1.compute.internal systemd[1]: Started Apache Tomcat 8.

停止したいときはstopで停止します。

$ sudo systemctl stop tomcat

もし、ユニットファイルの内容を変更した場合、設定ファイルの再読込を実施してから操作します。

$ sudo systemctl daemon-reload

終わりに

上記手順でアプリサーバにアクセス出来れば成功です。

以下のエラーが発生した場合と対処法

1.ajp設定で起動するとエラーが発生する

Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.

上記エラーが発生する場合、server.xmlにsecretRequired="false"を追加すればエラーは解消される。

    <Connector protocol="AJP/1.3"
               address="::1"
               secretRequired="false"
               port="8009"
               redirectPort="8443" />
0
Help us understand the problem. What is going on with this article?
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

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?