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

 

Tomcat占整个应用服务器市场的64%,是应用最广泛的java应用服务器

Tomcat8.5: 不支持第三方组件 redis sessions manager;

Tomcat8.0: 支持 redis session manager,但官方声明即将结束支持(2018年6月30日);

Tomcat7.0: 支持 redis session manager,且无结束支持的声明。

2 安装 Tomcat

2.1 下载与安装(9M)

## 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.ou

2.3 配置 Tomcat

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
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 ## 站点
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 有两个相关的环境变量:

  • CATALINA_HOME: 是 Tomcat 的安装目录,所有实例共用一份,相关子目录是 bin|lib;
  • CATALINA_BASE: 是 Tomcat 的工作目录,各个实例各自一份,相关子目录是 conf|webapps|work|logs|temp;

对于单实例,只需设置 CATALINA_HOME(此时认为 CATALINA_BASE 取相同值),多实例才必须设置 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.sh

3.3 配置各实例的服务

3.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
[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

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值