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
- Tomcat 安装及其单机多实例部署
- MySQL 安装及其单机多实例部署
- tomcat单机多实例部署
- tomcat单机多实例部署
- tomcat单机多实例部署
- Tomcat单机多实例部署实战
- Tomcat单机多实例
- Tomcat单机多实例
- tomcat 单机多实例
- tomcat单机多实例
- Tomcat单机多实例
- 单机多实例Tomcat的目录结构及安装启动
- Tomcat单机多实例配置
- Tomcat单机多实例配置
- Tomcat单机多实例配置
- Tomcat多实例部署及其原理(修订版)
- 单机部署多个Tomcat的方法
- MySQL单机多实例方案部署
- Recover Binary Search Tree
- 基于压缩感知机的中文分词学习笔记
- laravel的Eloquent关联关系
- UVa679: dropping balls
- Memcached的简单使用
- Tomcat 安装及其单机多实例部署
- laravel的Eloquent其他笔记
- TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type s
- Android源码设计模式解析与实战
- Caffe-python interface 学习|网络训练、部署、测试
- Share the experience of how to debug dead lock
- 在Android so文件的.init、.init_array上和JNI_OnLoad处下断点
- MongoDB数据库未授权访问漏洞及加固
- Nginx 负载均衡及其 HTTPS 部署