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)
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準備インスタンスディレクトリ HTTPポート8080は、それぞれ8081/8082 に置き換えられている。 HTTPSポート8443は、それぞれ8031/8032 に置き換えられている。 SHUTDOWNポート8005は、それぞれ8051/8052 に置き換えられている。 AJPポート8009はそれぞれ8091/8092に置き換えられている(構成を直接削除しても良い)
Tomcatの例の数が多くなるので、JVMメモリ容量を計画する必要があります。そうでないと指定された容量が大きすぎて起動に失敗する可能性があります。
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の起動オプションにのみ影響します。
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を選んだ理由:
## 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には二つの関連環境変数があります。
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各インスタンスの傍受ポートを置換する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.sh
3.3各インスタンスのサービスを設定する3.3.1マルチインスタンスサービスファイルを作成する
環境変数JAVA_OPETSとCATALINE_OTSの違い:
## 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