質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.10%

tomcatをブラウザで表示できない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 147

kachikata96

score 21

いつもお世話になります。

今回、webアプリ公開のためにEC2をamazon linux 2OSでサーバー構築をしていました。

サーバー構築自体初めてだったので下記の記事を参考に作業を進めていました。
https://qiita.com/shimatter/items/441ac14a6890ba093a92

記事の最後の手順まで進めることができましたが、ブラウザにtomcatに表示させることができず困っています。

表示されたのは503エラーで以下のメッセージが書かれていました

Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.


503エラーの場合どのような可能性が考えられるでしょうか?

〇実際にやったこと

・EC2インスタンスの作成
amazon Linux 2 AMIを選択
セキュリティグループの設定
HTTP    TCP    80    0.0.0.0/0    -
HTTP    TCP    80    ::/0    -
カスタム TCP    TCP    8080    0.0.0.0/0    -
カスタム TCP    TCP    8009    0.0.0.0/0    
SSH    TCP    22    0.0.0.0/0    -
MYSQL/Aurora    TCP    3306    0.0.0.0/0    -
MYSQL/Aurora    TCP    3306    ::/0    -
HTTPS    TCP    443    0.0.0.0/0    -
HTTPS    TCP    443    ::/0

・TeraTermをインストール
・EC2に接続

・JDKインストール

# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel 


・tomcatユーザー作成

# useradd -s /sbin/nologin tomcat

・tomcatのダウンロード

# cd /opt
# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.tar.gz


・tomcatを展開

# tar -xvzf apache-tomcat-9.0.36.tar.gz 


・シンボリックリンク作成

# ln -s /opt/apache-tomcat-9.0.36 /opt/tomcat


・環境変数の設定

# vi /etc/profile
元あったコードは文字制限のため省略
以下の3行を追加
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.amzn2.0.1.x86_6
4
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.amzn2.0.1.x86_64
/jre
export CATALINA_HOME=/opt/tomcat


・反映

# source /etc/profile


・反映確認

# /opt/tomcat/bin/version.sh


・反映結果

Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.amzn2.0.1.x86_64/jre
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/9.0.36
Server built:   Jun 3 2020 17:07:09 UTC
Server number:  9.0.36.0
OS Name:        Linux
OS Version:     4.14.177-139.254.amzn2.x86_64
Architecture:   amd64
JVM Version:    1.8.0_252-b09
JVM Vendor:     Oracle Corporation


・tomcat起動

/opt/tomcat/bin/startup.sh
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.amzn2.0.1.x86_64/jre
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.


ブラウザでの表示確認

・tomcat自動起動設定

新規ファイルでtomcatのサービスファイルを作成
# vi /etc/systemd/system/tomcat.service

以下のコードを入力
[Unit]
Description=Apache Tomcat 9
After=network.target

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

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

[Install]
WantedBy=multi-user.target


・反映

# systemctl daemon-reload


・自動反映

# systemctl enable tomcat


・user,groupはtomcatに変更

# chown -R tomcat:tomcat /opt/tomcat
# chown -R tomcat:tomcat /opt/apache-tomcat-9.0.36


・自動起動の確認

# reboot


・再起動後にステータスを確認。

# systemctl status tomcat
● tomcat.service - Apache Tomcat 9
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (exited) since Wed 2020-07-01 07:48:50 UTC; 1h 38min ago
  Process: 3041 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 3041 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/tomcat.service
           mq3068 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/c...

Jul 01 07:48:50 ip-172-00-00-00.ap-northeast-1.compute.internal systemd[1]: S...
Jul 01 07:48:50 ip-172-00-00-00.ap-northeast-1.compute.internal systemd[1]: S...
Hint: Some lines were ellipsized, use -l to show in full.

・webアプリケーションマネージャーの設定
webアプリの配備や管理をGUIで行えるようにする。

# vi /opt/tomcat/conf/tomcat-users.xml

以下のコードを記入
<role rolename="manager-gui"/>
<user username="XXXX" password="XXXX" roles="manager-gui"/>


・allowの設定を修正

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />


・再起動し、設定反映

# systemctl restart tomcat

・Apache httpdのインストールと設定
インストール

# yum install httpd


確認

# httpd -version
Server version: Apache/2.4.43 ()
Server built:   May  8 2020 17:02:41


・Apache自動起動設定

# systemctl enable httpd


・設定確認

systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-07-01 08:11:29 UTC; 1h 25min ago
     Docs: man:httpd.service(8)
 Main PID: 3584 (httpd)
   Status: "Total requests: 12; Idle/Busy workers 100/0;Requests/sec: 0.00235; Bytes served/sec:   2 B/sec"
   CGroup: /system.slice/httpd.service
           tq3584 /usr/sbin/httpd -DFOREGROUND
           tq3585 /usr/sbin/httpd -DFOREGROUND
           tq3586 /usr/sbin/httpd -DFOREGROUND
           tq3587 /usr/sbin/httpd -DFOREGROUND
           tq3588 /usr/sbin/httpd -DFOREGROUND
           tq3589 /usr/sbin/httpd -DFOREGROUND
           tq3631 /usr/sbin/httpd -DFOREGROUND
           mq3639 /usr/sbin/httpd -DFOREGROUND

Jul 01 08:11:29 ip-000-00-00-00.ap-northeast-1.compute.internal systemd[1]: S...
Jul 01 08:11:29 ip-000-00-00-00.ap-northeast-1.compute.internal systemd[1]: S...
Hint: Some lines were ellipsized, use -l to show in full.


・reboot後、ステータスを確認

systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-07-01 08:11:29 UTC; 1h 26min ago
     Docs: man:httpd.service(8)
 Main PID: 3584 (httpd)
   Status: "Total requests: 12; Idle/Busy workers 100/0;Requests/sec: 0.00231; Bytes served/sec:   2 B/sec"
   CGroup: /system.slice/httpd.service
           tq3584 /usr/sbin/httpd -DFOREGROUND
           tq3585 /usr/sbin/httpd -DFOREGROUND
           tq3586 /usr/sbin/httpd -DFOREGROUND
           tq3587 /usr/sbin/httpd -DFOREGROUND
           tq3588 /usr/sbin/httpd -DFOREGROUND
           tq3589 /usr/sbin/httpd -DFOREGROUND
           tq3631 /usr/sbin/httpd -DFOREGROUND
           mq3639 /usr/sbin/httpd -DFOREGROUND

Jul 01 08:11:29 ip-172-31-11-46.ap-northeast-1.compute.internal systemd[1]: S...
Jul 01 08:11:29 ip-172-31-11-46.ap-northeast-1.compute.internal systemd[1]: S...
Hint: Some lines were ellipsized, use -l to show in full.


・AJPプロトコルでapacheとtomcatの連携
AJPプロトコルの設定があることを確認

# view /opt/tomcat/conf/server.xml
※文字数制限のため一部のみ表示

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!--
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" />
    -->


・モジュールの有効設定
ProxyPass / ajp://000-00-00-00:8009/を追加

vi /etc/httpd/conf.modules.d/00-proxy.conf

# This file configures all the proxy modules:
※文字制限のため一部のみ表示
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
ProxyPass / ajp://000-00-00-00:8009/


・Apache httpdの再起動を行い、起動を確認

# systemctl restart httpd


・ブラウザ503エラー表示


  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • TaichiYanagiya

    2020/07/01 21:00

    "ss -tln" または "netstat -tln" で 8009 番ポートが LISTEN していますでしょうか?
    server.xml ではコメントアウトされているように見えます。

    キャンセル

  • kachikata96

    2020/07/02 09:52

    言われてみればコメントアウトされていました。
    ご指摘ありがとうございます。

    試しにコメントアウトを外してみましたが503表示のままですね。

    キャンセル

回答 1

checkベストアンサー

+2

https://teratail.com/questions/255847 と同じだと思います。
server.xml の address= と secretRequired="false" を確認ください。


(2020/07/02 14:05) 追記

[Thu Jul 02 04:52:36.143135 2020] [proxy:error] [pid 10711] (111)Connection refused: AH00957: AJP: attempt to connect to 54.250.194.14:8009 (54.250.194.14) failed

Public IP (グローバルIPアドレス)にはアクセスできません。
Private IP (ローカルIPアドレス)、または、127.0.0.1 にします。

セキュリティグループも見直した方がいいと思います。
外部から(全世界から) 8080, 8009, 3306 への接続は必要ですか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/02 14:58 編集

    追記ありがとうございます。
    グローバルIPアドレスには接続できないとのことだったので、proxyを以下のようにしてみました。

    vi /etc/httpd/conf.modules.d/00-proxy.conf

    # This file configures all the proxy modules:
    ※文字制限のため一部のみ表示
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    ProxyPass / ajp://グローバルIPアドレス:8009/

    vi /etc/httpd/conf.modules.d/00-proxy.conf

    # This file configures all the proxy modules:
    ※文字制限のため一部のみ表示
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    ProxyPass / ajp://127.0.0.1:8009/

    それとセキュリティグループも見直した方がいいとのことだたので
    8080, 8009, 3306 への接続許可を削除しておきました。

    しかし、今度はサイトにアクセスできませんとなってしまいました。

    キャンセル

  • 2020/07/02 15:01

    因みにエラーログはこうなりました。
    エラー自体は消えたように思えます。

    [Thu Jul 02 05:57:01.335031 2020] [mpm_prefork:notice] [pid 11064] AH00170: caug
    ht SIGWINCH, shutting down gracefully
    [Thu Jul 02 05:57:02.383153 2020] [suexec:notice] [pid 11264] AH01232: suEXEC me
    chanism enabled (wrapper: /usr/sbin/suexec)
    [Thu Jul 02 05:57:02.395892 2020] [lbmethod_heartbeat:notice] [pid 11264] AH02282: No slotmem from mod_heartmonitor
    [Thu Jul 02 05:57:02.395933 2020] [http2:warn] [pid 11264] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.
    [Thu Jul 02 05:57:02.395938 2020] [http2:warn] [pid 11264] AH02951: mod_ssl does
    not seem to be enabled
    [Thu Jul 02 05:57:02.398509 2020] [mpm_prefork:notice] [pid 11264] AH00163: Apac
    he/2.4.43 () configured -- resuming normal operations
    [Thu Jul 02 05:57:02.398533 2020] [core:notice] [pid 11264] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'

    キャンセル

  • 2020/07/02 23:05

    セキュリティグループを戻すとアクセスできるのですか?
    トラブルシューティングは条件を 1つずつ変えて確認しましょう。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる