【APサーバ】Tomcat削除

Tomcatが停止できない原因はファイアウォールだったわけですが、
原因特定前にTomcatを再インストールしたので、
Tomcatの削除手順を記載しておきます。

  • Tomcat停止

    ps -ef | grep java
    

    Tomcatが起動していないことを確認。
    Tomcatが起動している場合、停止する。

    sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh
    
  • Tomcat自動起動の停止

    chkconfig --list | grep tomcat
    

    Tomcatが自動起動になっている場合、停止および削除する。

    sudo chkconfig tomcat off
    chkconfig --del tomcat
    
  • Tomcat削除

    • yumでインストールしている場合

      yum list installed | grep tomcat
      

      yumでインストールしたアプリ名を確認し、removeで削除していく。

      sudo yum remove -y 上記で出力されたアプリ名
      
    • 手動でインストールしている場合(私の場合はこちら)

      rm -f /usr/local/tomcat
      rm -fr /usr/local/apache-tomcat-7.0.50
      

【APサーバ】Tomcat停止時にエラー

  • Tomcat停止時エラー
    Apache2とTomcat連携をしてからか、
    MyDNSの設定を変更してからか不明ですが、
    Tomcat停止時に下記エラーが発生しました。

    重大: Catalina.stop:
    java.net.NoRouteToHostException: ホストへの経路がありません
    
    重大: Catalina.stop:
    java.net.ConnectException: 接続を拒否されました
    
  • ファイアウォールの設定見直し
    ルーティング系のエラーはファイアウォールが一番怪しいので、調べてみると
    Tomcat停止時は8005番ポートを利用しているようなので、iptablesの設定を変更します。
    内部の話なのでルーターの設定は変更していません。

    iptables -L --line-numbers
    iptables -I INPUT 9 -p tcp -m tcp --dport 8005 -j ACCEPT
    service iptables save
    

【APサーバ】warファイル配置

  • Tomcat設定ファイルの内容確認

    /usr/local/tomcat/conf/server.xml
    
    # 下記内容が設定されていることを確認
    <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    

    warファイルは「/usr/local/tomcat/webapps」に配置します。
    上記設定内容がtrueになっていると、
    配置した瞬間にTomcatの起動中にもかかわらず、同階層に自動で展開されます。

  • Apache2とTomcatの連携設定追加

    WebアプリのURLが「http://z-area.net/コンテキスト名/」である場合、
    ポート番号を指定せずに接続するための設定を追加します。

    vi /etc/httpd/conf/httpd.conf
    
    下記を最終行に追加
    <Location /コンテキスト名/>
            ProxyPass ajp://localhost:8009/コンテキスト名/
            allow from all
    </Location>
    

【APサーバ】Apache2とTomcat連携

ポート番号を指定せずにTomcatにアクセスします。

  • Tomcat側の設定

    vi /usr/local/tomcat/conf/server.xml
    
    下記をコメントアウト
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    
    下記がコメントアウトされていないことを確認
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
  • Apache2側の設定

    vi /etc/httpd/conf/httpd.conf
    
    下記がコメントアウトされていないことを確認
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    
    下記を最終行に追加
    <Location /examples/servlets/>
        ProxyPass ajp://localhost:8009/examples/servlets/
        allow from all
    </Location>
    
  • Apache2とTomcatの連携動作確認

    /etc/rc.d/init.d/httpd stop
    sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh
    sudo -u tomcat /usr/local/tomcat/bin/startup.sh
    /etc/rc.d/init.d/httpd start
    /etc/rc.d/init.d/iptables start
    

    http://z-area.net/examples/servlets/

    ポート指定なしで繋がるようになるため、iptablesは有効のままにしておきます。

【APサーバ】Tomcat導入

  • Tomcat専用ユーザ作成

    useradd -s /sbin/nologin tomcat
    

    /sbin/nologinシェルを指定し、通常利用不可とする。

  • Tomcat導入

    バージョンは「apache-tomcat-7.0.50.tar.gz」にしました。
    サーバーに配置しておきます。

    tar xvzf apache-tomcat-7.0.50.tar.gz
    mv apache-tomcat-7.0.50 /usr/local
    cd /usr/local
    chown -R tomcat.tomcat apache-tomcat-7.0.50
    ln -s apache-tomcat-7.0.50 tomcat
    
  • 環境変数の設定

    下記3つのうちのどれかに記載します。

    【共通設定】
    /etc/profile
    「JAVA_HOME」や「CATALINA_HOME」の値を設定する。
    
    【環境変数設定】
    $CATALINA_HOME/bin/setenv.sh
    「JAVA_OPTS」や「CATALINA_OPTS」の値を設定する。
    
    【クラスパス設定】
    $CATALINA_HOME/bin/setclasspath.sh
    追加のjarファイル等を設定する。
    
    vi /etc/profile
    

    今回は共通設定に追加します。

    下記を最終行に追加
    export JAVA_HOME=/usr/lib/jvm/java
    export CATALINA_HOME=/usr/local/tomcat
    

    環境変数を適用しておきます。

    source /etc/profile
    
  • Tomcat起動確認

    /etc/rc.d/init.d/iptables stop
    sudo -u tomcat /usr/local/tomcat/bin/startup.sh
    

    http://z-area.net:8080/examples/servlets/

    「Servlet Examples with Code」の画面が出れば成功です。
    併せてrootユーザではなくtomcatユーザで動作していることを確認します。

    ps -ef | grep tomcat
    
    tomcat    プロセスID  親プロセスID プロセッサ使用率 プロセスの起動時刻  制御端末 累積時間 略
    

    startup.shはrootユーザで実行しないこと。
    初回でrootユーザで実行するとログファイルがrootユーザで作成されてしまい、
    tomcat専用ユーザでstartup.shを実行しても権限がないと言われてしまうので、
    そうなった場合、1度ログを削除すれば問題なし。

    起動確認ができたのでTomcat停止し、iptablesを有効にしておきます。

    sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh
    /etc/rc.d/init.d/iptables start
    

【APサーバ】Java導入

  • Java導入

    yum search openjdk
    
    読み込んだプラグイン:downloadonly, fastestmirror, security
    略
    ============================= N/S Matched: openjdk =============================
    java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
    java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
    java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
    java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
    java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
    java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
    java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
    java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
    java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
    java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
    java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
    java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
    java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
    java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
    java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
    java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle
    略
    

    今回はJDK1.7を導入します。

    yum install java-1.7.0-openjdk-devel
    
    依存性関連をインストールしました:
      flac.x86_64 0:1.2.1-6.1.el6
      giflib.x86_64 0:4.1.6-3.1.el6
    略
      xorg-x11-fonts-Type1.noarch 0:7.2-9.1.el6
    
    完了しました!
    
  • Java導入確認

    java -version
    
    java version "1.7.0_71"
    OpenJDK Runtime Environment (rhel-2.5.3.1.el6-x86_64 u71-b14)
    OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
    
  • JavaHOMEの設定

    JAVA_HOMEを設定する場合は下記パスを設定する。
    Tomcat導入のエントリーで一緒に設定するので、ここでは省略。

    /usr/lib/jvm/java
    

    上記はシンボリックリンクになっており、
    実体は下記パスを参照している。

    /etc/alternatives/java_sdk
    

    さらに「java_sdk」もシンボリックリンクになっており、
    実体は下記パスを参照している。

    /usr/lib/jvm/java-1.7.0-openjdk.x86_64
    

    さらにさらに「java-1.7.0-openjdk.x86_64」もシンボリックリンクになっており、
    実体は下記パスを参照している。

    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64
    

    こんな回りくどいことになっているのは
    Javaは1つのOSに複数バージョン混在できる可能性があるため。

    「alternatives」コマンドで利用したいJavaバージョンを変更できるようになっており、
    いちいちJAVA_HOMEの変更、アンインストール、インストールをせずに
    シンボリックリンクの参照だけを変更してくれているようです。