Tomcat简介:
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。
Tomcat运行原理
当浏览器访问一个由tomcat搭建的web应用程序时,tomcat会把相应的文件,转换成浏览器能够显示的文件。 浏览器访问的是一个jsp文件时,tomcat会把jsp文件编译成一个servlet,servlet再给浏览器发送相应的数据。只有第一次访问的时候才会编译成servlet以后访问就直接调用对应的servlet。
前言
当一个进程的线程超过500个的话,那么这个进程的运行效率会变得很低。因为一个进程产生过多的线程,CPU资源会浪费在线程间切换过程当中。但当服务器配置很高的情况下,如:32G内存,16核的CPU。这样一台高配的机器上只装一个Tomcat实例,会有点浪费。其实我们可以根据服务器的硬件配置,配置多个Tomcat实例,充分利用硬件的资源。你第一时间可能会想到,直接下载多份Tomcat安装包,直接解压,改下端口跑起来不就可以了? 这样也是可以的,但不好维护。假设你在一台机器上安装了5个Tomcat实例,日后要升级Tomcat时,你需要将新版本的tomcat复制并覆盖掉旧的5个tomcat安装程序和配置,所以还是挺麻烦的。下面介绍多个Tomcat实例共享同一个安装包的配置方法。
安装环境
操作系统: CentOS6 64位 Mini版
JDK: 1.8 rpm安装
tomcat: tomcat-7.0.47
配置俩个实例的tomcat
/opt/tomcat1
/opt/tomcat2
第一步:上传JDK安装包和Tomcat包至服务器
第二步:安装JDK 环境
rpm -ivh jdk-8u20-linux-x64.rpm
第三步:配置环境变量
vim /etc/profile
- 在最后追加以下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_20/
export JAVA_BIN=/usr/java/jdk1.8.0_20/bin
export PATH= P A T H : PATH: PATH:JAVA_BIN
重新加载:
source /etc/profile
第四步:解压tomcat安装包到/opt下
tar zxf apache-tomcat-7.0.47.tar.gz -C /opt/
第五步:5.为两个tomact实例创建安装目录:
mkdir -p /opt/tomcat1
mkdir -p /opt/tomcat2
第六步:6.拷贝tomcat安装目录下的conf目录分别放入2个实例目录中
cp -r /opt/apache-tomcat-7.0.47/conf /opt/tomcat1/
cp -r /opt/apache-tomcat-7.0.47/conf /opt/tomcat2/
第七步:7.在tomcat2个实例目录下创建bin目录,用来存放启动和停止脚本
mkdir -p /opt/tomcat1/bin
mkdir -p /opt/tomcat2/bin
- 创建启动脚本startup.sh
- 内容如下:
#!/bin/bash
export JRE_HOME=/usr/java/jdk1.8.0_20/jre
export CATALINA_HOME=/opt/apache-tomcat-7.0.47/
export CATALINA_BASE="/opt/ tomcat1"
export CATALINA_TMPDIR="$CATALINA_BASE/temp"
export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"
export JAVA_OPTS="-server -Xms1024m -Xmx1024m -Djava.awt.headless=true -Dtomcat.name=tomcat1"
#创建logs目录
if [ ! -d "$CATALINA_BASE/logs" ]; then
mkdir $CATALINA_BASE/logs
fi
#创建temp目录
if [ ! -d "$CATALINA_BASE/temp" ]; then
mkdir $CATALINA_BASE/temp
fi
#调用tomcat启动脚本
bash $CATALINA_HOME/bin/startup.sh "$@"
- 创建关闭脚本shutdown.sh
#!/bin/bash
export JRE_HOME=/usr/java/jdk1.8.0_20/jre
export CATALINA_HOME=/opt/apache-tomcat-7.0.47/
export CATALINA_BASE="/opt/ tomcat1"
export CATALINA_TMPDIR="$CATALINA_BASE/temp"
export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"
bash $CATALINA_HOME/bin/shutdown.sh "$@"
- 给脚本添加执行权限
chmod +x startup.sh
chmod +x shutdown.sh
- 将两个脚本拷贝到tomcat两个实例的bin目录下
cp shtarup.sh shutdown.sh /opt/tomcat1/bin
cp shtarup.sh shutdown.sh /opt/tomcat2/bin
第八步:修改每个tomcat实例中server.xml中的端口,防止端口冲突
第九步:为实例创建网站根目录:
mkdir -p /opt/tomcat1/webapps/ROOT
mkdir -p /opt/tomcat2/webapps/ROOT
第十步:编写测试页面
echo “tomcat1” > /opt/tomcat1/webapps/ROOT/index.html
echo “tomcat2” > /opt/tomcat1/webapps/ROOT/index.html
第十一步:启动tomat
/opt/tomcat1/bin/startup.sh
/opt/tomcat2/bin/startup.sh
浏览器分别访问两个tomcat实例