Tomcatの設置と単独機の多例展開

17002 ワード

Tomcatは最も人気のあるJavaアプリケーションサーバ(2017年市場シェア64%)です。本論文では、最新のApache Tomcat 7.0.90(Tomcat 7の最新バージョン)を例にとって、CentOS下のTomcatサーバのインストールと必要な構成をまとめ、Tomcat単一機の多例の配置方法を実証した。著者:王克鋒出典:https://kefeng.wang/2016/12/26/tomcat-installation/ 著作権:自由転載-非商用-非派生-署名を保持し、転載は作者と出所を明記してください。
1.Javaアプリケーションサーバの市場シェア
google「site:plumbb.io Java appration servers」https://plumbr.io/blog/java/most-popular-java-application-servers-2017-edition 2017年市場シェア:Tomcatは64%、JBoss 14%、Jetty 9%、Glassfish 6%、Weblogic 4%
2 Tomcatを取り付ける
Tomcat 7を選んだ理由:
  • Tomcat 9:最初のベータバージョンがリリースされたばかりです。不安定です。
  • Tomcat 8.5:第三者コンポーネントredis sessions managerをサポートしない;
  • Tomcat 8.0:Redis session managerをサポートしますが、公的声明はまもなくサポートを終了します(2018年6月30日)。
  • Tomcat 7.0:Redis session managerをサポートし、サポートを終了する声明がありません。
  • 2.1ダウンロードとインストール(9 M)
    ## https://tomcat.apache.org/download-70.cgi
    ## http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90-windows-x64.zip
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90.tar.gz
    sudo tar -zxf apache-tomcat-7.0.90.tar.gz -C /opt
    2.2ユーザプロファイル
    ## sudo vim /etc/profile ##       
    export CATALINA_HOME=/opt/apache-tomcat-7.0.90 ## bin,lib
    export CATALINA_BASE=/opt/apache-tomcat-7.0.90 ## conf,logs,webapps,work,temp
    export PATH=$PATH:$CATALINA_HOME/bin
    
    alias slg='sudo tail -f $CATALINA_BASE/logs/catalina.out'
    2.3 Tomcatの配置
    ## sudo vim $CATALINA_BASE/conf/logging.properties ##     
    
    1catalina.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
    2localhost.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
    3manager.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
    4host-manager.org.apache.juli.AsyncFileHandler.formatter = org.apache.juli.OneLineFormatter
    
    # java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter ##   
    java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
    java.util.logging.SimpleFormatter.format=%1$tT,%1$tL  %4$s  [%3$s] - %5$s%6$s%n
    sudo vim $CATALINA_BASE/conf/tomcat-users.xml ##   
    # sudo vim $CATALINA_BASE/conf/server.xml ##    【      80/443】
    sudo sed -i 's/8080/80/g' $CATALINA_BASE/conf/server.xml
    sudo sed -i 's/8443/443/g' $CATALINA_BASE/conf/server.xml
    sudo vim $CATALINA_BASE/conf/context.xml ##   
    ## sudo vim $CATALINA_BASE/bin/catalina.sh
    JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
    JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelOldGC -Xms512M -Xmx512M -Xmn256M -XX:SurvivorRatio=8 -XX:PermSize=64M -XX:MaxPermSize=128M"
    JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$CATALINA_BASE/logs/gc.log"
    CATALINA_OUT=/dev/null
    2.4スクリプト
    sudo mkdir $CATALINA_HOME/bin/batch/
    sudo mv $CATALINA_HOME/bin/*.bat $CATALINA_HOME/bin/batch/
    
    sudo $CATALINA_HOME/bin/version.sh  ##       、JDK、Tomcat   
    sudo $CATALINA_HOME/bin/shutdown.sh ##     
    sudo $CATALINA_HOME/bin/startup.sh  ##     
    ## curl http://localhost/
    2.5ログ
    sudo chmod 755 $CATALINA_BASE/logs
    sudo chmod 644 $CATALINA_BASE/logs/*
    sudo tail -f $CATALINA_BASE/logs/catalina.out
    sudo tail -f $CATALINA_BASE/logs/catalina.`date +%Y-%m-%d`.log
    sudo tail -f $CATALINA_BASE/logs/localhost.`date +%Y-%m-%d`.log
    sudo tail -f $CATALINA_BASE/logs/localhost_access_log.`date +%Y-%m-%d`.txt
    2.6防火壁を開放する(直接対外サービスに必要)
    ### sudo vim /etc/sysconfig/iptables
    ###     : sudo systemctl restart iptables
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
    2.7 systemdサービスに設定する
    ## sudo vim /usr/lib/systemd/system/tomcat.service
    [Unit]
    Description=Apache Tomcat
    After=syslog.target network.target
    
    [Service]
    Type=forking
    Environment="CATALINA_HOME=/opt/apache-tomcat-7.0.90"
    Environment="CATALINA_BASE=/opt/apache-tomcat-7.0.90"
    ExecStart=/opt/apache-tomcat-7.0.90/bin/startup.sh
    ExecStop=/opt/apache-tomcat-7.0.90/bin/shutdown.sh
    
    [Install]
    WantedBy=multi-user.target
    sudo systemctl daemon-reload
    sudo systemctl enable tomcat #          
    sudo systemctl start tomcat #     
    2.8 WEBアプリケーションの展開
    cd $CATALINA_BASE/webapps
    sudo rz -y ## site.war,     ,     tomcat
    # sudo unzip -q site.zip -d $CATALINA_BASE/webapps/site
    ## curl http://localhost/site
    3 Tomcat単機の多例
    MySQL単一マシンの多例と同様に、Tomcatの単一マシンの多例は、単一Linuxの単一Tomcatインストールを指し、複数のTomcatサービスプロセスを起動し、それぞれ異なるポートを傍受し、外部に異なるHTTPサービスを提供する。
    3.1ポイント
    Tomcatには二つの関連環境変数があります。
  • CATALINE_HOME:Tomcatのインストールディレクトリです。全部のインスタンスは一つを共有しています。関連するサブディレクトリはbin_libです。
  • CATALINE_BASE:Tomcatの作業目録です。各実例はそれぞれ一つずつです。関連するサブディレクトリはconf_webapps_work logs tempです。
  • 単例の場合、CATALINA_を設定するだけでいいです。HOME(CATALINE AuBASEは同じ値を取ると思います)は、多くの例がCATALINA_を設置しなければなりません。BASE
    3.2各例を準備する
    3.2.1準備インスタンスディレクトリ
    sudo systemctl stop tomcat
    sudo systemctl disable tomcat
    sudo cp -R $CATALINA_HOME $CATALINA_HOME.bak
    
    sudo mkdir -p $CATALINA_HOME@{1,2}/{logs,temp,webapps,work}
    sudo cp -R $CATALINA_HOME/{conf} $CATALINA_HOME@1/
    sudo mv -f $CATALINA_HOME/{conf} $CATALINA_HOME@2/
    3.2.2各インスタンスの傍受ポートを置換する
  • HTTPポート8080は、それぞれ8081/8082
  • に置き換えられている。
  • HTTPSポート8443は、それぞれ8031/8032
  • に置き換えられている。
  • SHUTDOWNポート8005は、それぞれ8051/8052
  • に置き換えられている。
  • AJPポート8009はそれぞれ8091/8092に置き換えられている(構成を直接削除しても良い)
  • sudo sed -i 's/8080/8081/g' $CATALINA_HOME@1/conf/server.xml
    sudo sed -i 's/8080/8082/g' $CATALINA_HOME@2/conf/server.xml
    
    sudo sed -i 's/8443/8031/g' $CATALINA_HOME@1/conf/server.xml
    sudo sed -i 's/8443/8032/g' $CATALINA_HOME@2/conf/server.xml
    
    sudo sed -i 's/8005/8051/g' $CATALINA_HOME@1/conf/server.xml
    sudo sed -i 's/8005/8052/g' $CATALINA_HOME@2/conf/server.xml
    
    sudo sed -i 's/8009/8091/g' $CATALINA_HOME@1/conf/server.xml
    sudo sed -i 's/8009/8092/g' $CATALINA_HOME@2/conf/server.xml
    
    # sudo sed -i '/8009/d' $CATALINA_HOME@1/conf/server.xml
    # sudo sed -i '/8009/d' $CATALINA_HOME@2/conf/server.xml
    3.2.3 JVMパラメータの調整
    Tomcatの例の数が多くなるので、JVMメモリ容量を計画する必要があります。そうでないと指定された容量が大きすぎて起動に失敗する可能性があります。sudo vim $CATALINA_HOME/bin/catalina.sh3.3各インスタンスのサービスを設定する
    3.3.1マルチインスタンスサービスファイルを作成する
    環境変数JAVA_OPETSとCATALINE_OTSの違い:
  • JAVA_OPETS:Javaプログラム共有(Tomcatを含む)、Tomcatがstart/run/stopを実行する時に使用します。
  • CATALINE_OPETS:Tomcatのみ使用し、Tomcatがstart/runを実行する時に使用する(stopを含まない)。
  • ですから、環境変数のCATALINAを使うのが一番いいです。OTSは、Tomcatの起動オプションにのみ影響します。
    ## sudo vim /usr/lib/systemd/system/[email protected]
    ##     %i            1/2
    [Unit]
    Description=Apache Tomcat
    After=syslog.target network.target
    
    [Service]
    Type=forking
    Environment="CATALINA_HOME=/opt/apache-tomcat-7.0.90"
    Environment="CATALINA_BASE=/opt/apache-tomcat-7.0.90@%i"
    ExecStart=/opt/apache-tomcat-7.0.90/bin/startup.sh
    ExecStop=/opt/apache-tomcat-7.0.90/bin/shutdown.sh
    
    [Install]
    WantedBy=multi-user.target
    3.3.2起動自動運転に設定する
    sudo systemctl daemon-reload
    sudo systemctl enable tomcat@{1,2}
    sudo systemctl start tomcat@{1,2}
    
    ## curl http://localhost:8081/check.htm
    ## curl http://localhost:8082/check.htm
    
    ## sudo systemctl stop tomcat@{1,2}
    ## sudo systemctl disable tomcat@{1,2}
    3.4ユーティリティスクリプト
    ## vim ~/bin/tomcat-start.sh
    sudo rm -rf $CATALINA_HOME*/logs/*
    sudo systemctl start tomcat@{1,2}
    ## vim ~/bin/tomcat-stop.sh
    sudo systemctl stop tomcat@{1,2}
    ## vim ~/bin/tomcat-restart.sh
    sudo rm -rf $CATALINA_HOME*/logs/*
    sudo systemctl restart tomcat@{1,2}
    ## vim ~/bin/tomcat-see.sh
    sudo jps -lvm | grep Bootstrap | grep -v grep