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/
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。