Tomcat 安装及其单机多实例部署

来源:互联网 发布:宁波最新房价走势知乎 编辑:程序博客网 时间:2024/05/18 03:36

Tomcat 是最流行的 Java 应用服务器(2015年市场份额,Tomcat 为 58%,JBoss 20%, Jetty 11%, Glassfish 6%, Weblogic 3%)。本文以最新的 Apache Tomcat 8.5.9 为例,总结了 CentOS 下 Tomcat 服务器的安装和必要配置,并演示了 Tomcat 单机多实例的部署方法。

作者:王克锋
出处:https://kefeng.wang/2016/12/26/tomcat-installation/
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。

1. 安装 JDK8

鉴于项目习惯,采用 Oracle(SUN) JDK,而不是 CentOS 自带的 OpenJDK。
相关资料: https://zh.wikipedia.org/wiki/OpenJDK

1.1 下载与安装(158M)

http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

wget --no-check-certificate --no-cookies \  --header "Cookie: oraclelicense=accept-securebackup-cookie" \  http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.rpmsudo yum -y install jdk-8u111-linux-x64.rpmdirname `sudo find / -name javafx-src.zip` # 获取 JAVA_HOME
## java -version## 这里是 Oracle JDK,OpenJDK 是每行首有 "OpenJDK" 字样java version "1.8.0_111"Java(TM) SE Runtime Environment (build 1.8.0_111-b14)Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

1.2 设置

## sudo vim /etc/profile ## 所有用户有效export JAVA_HOME=/usr/java/jdk1.8.0_111export PATH=$PATH:$JAVA_HOME/bin
## sudo vim $JAVA_HOME/jre/lib/logging.properties ## 日志配置java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatterjava.util.logging.SimpleFormatter.format=%1$tF %1$tT,%1$tL  %4$s  [%3$s] - %5$s%6$s%n

2 安装 Maven

2.1 下载与安装(9M)

### http://maven.apache.org/download.cgiwget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gzsudo tar -zxf apache-maven-3.3.9-bin.tar.gz -C /optsudo ln -sf /opt/apache-maven-3.3.9/bin/mvn /usr/bin/mvn

2.2 设置

## sudo vim /etc/profile ## 所有用户有效export M2_HOME=/opt/apache-maven-3.3.9export PATH=$PATH:$M2_HOME/bin

3 安装 Tomcat

3.1 下载与安装(9M)

## https://tomcat.apache.org/download-80.cgiwget http://apache.fayea.com/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gzsudo tar -zxf apache-tomcat-8.5.9.tar.gz -C /opt

3.2 用户配置

## sudo vim /etc/profile ## 所有用户有效export CATALINA_HOME=/opt/apache-tomcat-8.5.9 ## bin,libexport CATALINA_BASE=/opt/apache-tomcat-8.5.9 ## conf,logs,webapps,work,tempexport PATH=$PATH:$CATALINA_HOME/binalias slg='sudo tail -f $CATALINA_BASE/logs/catalina.out'

3.3 配置 Tomcat

sudo vim $CATALINA_BASE/conf/tomcat-users.xml ## 用户sudo vim $CATALINA_BASE/conf/logging.properties ## 日志配置   # java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter   # java.util.logging.SimpleFormatter.format=%1$tF %1$tT,%1$tL  %4$s  [%3$s] - %5$s%6$s%nsudo 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.xmlsudo vim $CATALINA_BASE/conf/context.xml ## 站点

3.4 脚本

sudo $CATALINA_HOME/bin/version.sh  ## 查看系统版本、JDK、Tomcat 版本sudo $CATALINA_HOME/bin/shutdown.sh ## 停止服务sudo $CATALINA_HOME/bin/startup.sh  ## 启动服务## curl http://localhost/

3.5 日志

sudo tail -f $CATALINA_BASE/logs/catalina.outsudo tail -f $CATALINA_BASE/logs/catalina.`date +%Y-%m-%d`.logsudo tail -f $CATALINA_BASE/logs/localhost.`date +%Y-%m-%d`.logsudo tail -f $CATALINA_BASE/logs/localhost_access_log.`date +%Y-%m-%d`.txt

3.6 防火墙放行

### sudo vim /etc/sysconfig/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### 重启生效: sudo systemctl restart iptables

3.7 配置为 systemd 服务

## sudo vim /usr/lib/systemd/system/tomcat.service[Unit]Description=Apache TomcatAfter=syslog.target network.target[Service]Type=forkingEnvironment="CATALINA_OPTS=-Xms64M -Xmx64M -XX:NewRatio=1 -XX:SurvivorRatio=8 -XX:PermSize=16M -XX:MaxPermSize=16M"Environment="CATALINA_HOME=/opt/apache-tomcat-8.5.9"Environment="CATALINA_BASE=/opt/apache-tomcat-8.5.9"ExecStart=/opt/apache-tomcat-8.5.9/bin/startup.shExecStop=/opt/apache-tomcat-8.5.9/bin/shutdown.sh[Install]WantedBy=multi-user.target
sudo systemctl enable tomcat # 设置为开机自动启动sudo systemctl start tomcat # 立即启动

3.8 部署 WEB 应用

cd $CATALINA_BASE/webappssudo rz -y ## site.war, 自动部署,无需重启 tomcat## curl http://localhost/site

4 Tomcat 单机多实例

与 MySQL 单机多实例类似,Tomcat 的单机多实例,也是指单个 Linux 的单个 Tomcat 安装,启动多个 Tomcat 服务进程,分别监听不同的端口,对外提供不同的 HTTP 服务。

4.1 关键点

Tomcat 有两个相关的环境变量:
- CATALINA_HOME: 是 Tomcat 的安装目录,所有实例共用一份,相关子目录是 bin/lib;
- CATALINA_BASE: 是 Tomcat 的工作目录,各个实例各自一份,相关子目录是 conf/logs/webapps/work/temp;

对于单实例,只需设置 CATALINA_HOME(此时认为 CATALINA_BASE 取相同值),多实例才必须设置 CATALINA_BASE。

4.2 准备各实例

4.2.1 准备实例目录

sudo systemctl stop tomcatsudo rm -f $CATALINA_HOME/logs/*sudo cp -R $CATALINA_HOME $CATALINA_HOME.baksudo mkdir -p $CATALINA_HOME@{1,2,3}sudo cp -R $CATALINA_HOME/{conf,logs,webapps,work,temp} $CATALINA_HOME@1/sudo cp -R $CATALINA_HOME/{conf,logs,webapps,work,temp} $CATALINA_HOME@2/sudo mv -f $CATALINA_HOME/{conf,logs,webapps,work,temp} $CATALINA_HOME@3/

4.2.2 替换各实例的监听端口

替换规则: 8abc => 8c0n(首位,尾位,0,实例序号)
- HTTP 端口 8080 分别替换为 8001/8002/8003;
- HTTPS 端口 8443 分别替换为 8301/8302/8303;
- SHUTDOWN 端口 8005 分别替换为 8501/8502/8503;
- AJP 端口 8009 不需要,而且各实例不能一样,干脆删掉。

sudo sed -i 's/8080/8001/g' $CATALINA_HOME@1/conf/server.xmlsudo sed -i 's/8080/8002/g' $CATALINA_HOME@2/conf/server.xmlsudo sed -i 's/8080/8003/g' $CATALINA_HOME@3/conf/server.xmlsudo sed -i 's/8443/8301/g' $CATALINA_HOME@1/conf/server.xmlsudo sed -i 's/8443/8302/g' $CATALINA_HOME@2/conf/server.xmlsudo sed -i 's/8443/8303/g' $CATALINA_HOME@3/conf/server.xmlsudo sed -i 's/8005/8501/g' $CATALINA_HOME@1/conf/server.xmlsudo sed -i 's/8005/8502/g' $CATALINA_HOME@2/conf/server.xmlsudo sed -i 's/8005/8503/g' $CATALINA_HOME@3/conf/server.xmlsudo sed -i '/8009/d' $CATALINA_HOME@1/conf/server.xmlsudo sed -i '/8009/d' $CATALINA_HOME@2/conf/server.xmlsudo sed -i '/8009/d' $CATALINA_HOME@3/conf/server.xml

4.3 配置各实例的服务

4.3.1 创建多实例 service 文件

环境变量 JAVA_OPTS 与 CATALINA_OPTS 的区别:
- JAVA_OPTS: 所有Java程序共用(包括Tomcat),Tomcat 执行 start/run/stop 时用到;
- CATALINA_OPTS: 仅仅Tomcat用到,Tomcat 执行 start/run 时用到(不包括 stop);

所以,最佳方式是使用环境变量 CATALINA_OPTS,只影响 Tomcat 的启动选项。

## sudo vim /usr/lib/systemd/system/tomcat@.service## 其中的 %i 将来会被替换为具体的 1/2/3[Unit]Description=Apache TomcatAfter=syslog.target network.target[Service]Type=forkingEnvironment="CATALINA_OPTS=-Xms64M -Xmx64M -XX:NewRatio=1 -XX:SurvivorRatio=8 -XX:PermSize=16M -XX:MaxPermSize=16M"Environment="CATALINA_HOME=/opt/apache-tomcat-8.5.9"Environment="CATALINA_BASE=/opt/apache-tomcat-8.5.9@%i"ExecStart=/opt/apache-tomcat-8.5.9/bin/startup.shExecStop=/opt/apache-tomcat-8.5.9/bin/shutdown.sh[Install]WantedBy=multi-user.target

4.3.2 设置为开机自动运行

sudo systemctl daemon-reloadsudo systemctl enable tomcat@{1,2,3}sudo systemctl start tomcat@{1,2,3}## curl http://localhost:8001/## curl http://localhost:8002/## curl http://localhost:8003/## sudo systemctl stop tomcat@{1,2,3}## sudo systemctl disable tomcat@{1,2,3}

4.4 实用脚本

## vim ~/bin/tomcat-start.shsudo rm -rf $CATALINA_HOME*/logs/*sudo systemctl start tomcat@{1,2,3}
## vim ~/bin/tomcat-stop.shsudo systemctl stop tomcat@{1,2,3}
## vim ~/bin/tomcat-restart.shsudo rm -rf $CATALINA_HOME*/logs/*sudo systemctl restart tomcat@{1,2,3}
## vim ~/bin/tomcat-see.shsudo jps -lvm | grep Bootstrap | grep -v grep
0 0
原创粉丝点击