Apache Tomcat 9 を CentOS 7 にインストールする



 1.  事前準備
 (1) Apache Tomcat をインストールする前に、 
     Apache Tomcat9 は JDK (Java SE Development Kit) が必要です。
 (2) Linux 上で Tomcat を動かすための専用ユーザとして tomcat を追加します。
    $ useradd -s /sbin/nologin tomcat


 2. (Apache) Tomcat9 のダウンロードと配置
   (1)Tomcat9 のダウンロードページから、tar.gz 形式の Apache Tomcat9
     (2021年時点の最新版:10.0.5は2021/04/06にリリース:
       www.openstandia.jp/oss_info/tomcat/)であるが、
     信頼性により 9.0.0.M21版を 「 curl 」 コマンドでダウンロードする。
   # cd ~
   $curl -O http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.34/
                   bin/apache-tomcat-9.0.34.tar.gz
 
 (2) ダンロードした tar.gz ファイルを解凍して配置
   $ tar -xzvf ~/apache-tomcat-9.0.41.tar.gz
   $ mv ~/apache-tomcat-9.0.41 /opt
   $ chown -R tomcat:tomcat /opt/apache-tomcat-9.0.41:root使用するので必要ない

 (3)サービス作成と登録
   CentOS 7 からはサービスを systemd が管理するようになりました。
   ここでは Apache Tomcat9 をサービスとして登録します。
   まずは /etc/systemd/system/tomcat.service を新たに作成して、
  次のように記述して保存します。これはサービスの定義ファイルです。
  ---------------------------
  [Unit]
   Description=Apache Tomcat 9
   After=network.target

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

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

  [Install]
   WantedBy=multi-user.target
  ---------------------------------------------

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

 (4)サービスを有効にします。
    実行コマンド
   $ systemctl enable tomcat

 (5) Tomcat9 の起動と停止
    起動
    $ systemctl start tomcat
    停止
    $ systemctl stop tomcat

 (6)ファイアウォール (Firewalld) port:8080 を有効に設定する
     /etc/firewalld/services/ 内に tomcat.xml を 以下のように作成
    ーーーーーーーーーーーーーー
    
    
    Apache Tomcat 9
    Apache Tomcat 9
    
    
   ーーーーーーーーーーーーーーー
   firewalld に上で作成した tomcat の通信を許可する
   ---------------------------
   $firewall-cmd --add-service=tomcat --zone=public --permanent
   $ firewall-cmd --reload 
   $ firewall-cmd --list-services --zone=public --permanent
   ---------------------------------
 (7)Tomcatのテストページ表示を確認
    http://:8080にアクセスし、

 (8)httpd & Tomcat 連携
    AJP (Apache JServ Protocol)を使ってApacheとTomcatを連携させます。
    AJP を利用するためには mod_proxy_ajp というモジュールを利用します。


     Tomcatのconfディレクトリにserver.xml があります。
      server.xml:

   CentOS 7 の場合 (/etc/httpd/conf.modules.d/00-proxy.conf)
    --------------------------------
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    ---------------------------------
    この LoadModule の設定だけでは、Apache httpd でモジュールの機能が有効になっただけなので、
   次にどんなパスにアクセスされた場合に Tomcat と連携するのかを設定してあげる必要があります。
   次のように Tomcat と連携したいパスと Tomcat のサーバーとパスを指定します。
   
    ProxyPass httpdでのパス ajp://サーバー名:8009/Tomcat上のパス/

   ★例えば、Apache httpd で受け付けた全てのリクエストを Tomcat で処理したい場合は
      次のようになります。 (httpd と Tomcat が同一ホストにある場合)

     ProxyPass / ajp://localhost:8009/

    ★また sample ディレクトリへのアクセスを Tomcat 上の example と連携したい場合は
     次のようになります。

    <A>:ProxyPassの設定::
     ProxyPass /sample/ ajp://localhost:8009/example/
      
    ////////////////////////////////////////////////////////////////
    /etc/httpd/conf.d ディレクトリに                                //
    /etc/httpd/conf.d/proxy-ajp.conf  proxy-ajp.conf  ファイルを作成//
       
       
      ProxyPass ajp://127.0.0.1:8009/tom/
       
   ////////////////////////////////////////////////////////////////
     port:8009は、TomcatがAJP 1.3 の通信をport 8009で受け付けているから

   <B>::server.xmlの修正::
       /opt/apache-tomcat-9.0.41/conf/server.xmlを修正
     -------------------------------------------------
     
    --------------------------------------------------
   tomcat はデフォルトで8080番ポート(HTTP)と8009番ポート(AJP)での通信を受け付けています。
  もしインターネットからの全てのアクセスを Apache httpd 経由でのアクセスとするのであれば
  8080番ポートの待受けが不要になります。 
  その場合 server.xml の行を削除するか、次のようにコメントアウトして、
   無用なポート待受けをしないようにすると良いでしょう。
   ...-------------------------------------------------
    
    
 

    :: 設定が完了したら起動::
    Apache httpd を再起動(reload)するか再読込(graceful, reload)する

    作成した war ファイルを デプロイする。
        jarコマンドを使用して,Webアプリケーションとして使用するプログラムやファイルを
         WARファイルにアーカイブします
        warファイルは $ jar cvf ../[warファイル名] *で作成される。

        作成したwarファイルを
        $ /opt/apache-tomcat-9.0.34/webapps
        に格納すると Tomcatが自動的にデプロイする。
  

    ::WEB上で表示させる
       http://localhost/tom/
      
       ..-----------------------------------------------------
                                                ーーーーー以上