Tomcat WEB服务器配置与实战

Tomcat/JAVA服务器

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java Server Page(JSP)的支持,Tomcat本身也是一个HTTP服务器可以单独使用,Apache是一个以C语言编写的HTTP服务器。Tomcat主要用来解析JSP语言,目前最新版本为9.0。

Tomcat企业安装配置

JDK (Java Development Kit) ,是 Java 语言的软件开发工具包(SDK)),JDK是整个java开发的核心,它包含了JAVA运行时环境Java Runtime Enviromental,JRE)和 JAVA工具,其中JRE包括(JVM+Java系统类库)

JAVA虚拟机(Java Virtual Mechinal,JVM),JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
JDK(调用JAVA API)开发了JAVA程序后,通过JDK中的编译程序(javac)将java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

jdk-6u18-linux-x64-rpm.bin,bin文件安装跟sh文件方法一样,sh ./ jdk-6u18-linux-x64-rpm.bin,回车即可,默认安装到/usr/java/jdk1.6.0_18目录下。

一:下载tomcat服务所需tar包

1.1 在tomcat官网下载tomcat.tar包

官网下载Tomcat相应版本,下载版本apache-tomcat-8.0.50.tar.gz,操作如下

tomcat.apache.org

请添加图片描述
请添加图片描述

1.2 jdktar包官网地址

www.oracle.com

或者在Linux使用wget 右键复制地址源码下载tar包

1.3 将tomcat所需tar包上传Linux服务器中

使用tar命令解压tomcat包和jdk包

tar -xzvf apache-tomcat-8.0.50.tar.gz
tar -xzvf jdk1.8.0_131.tar.gz

重命名,移动到 /tomcat下,还有jdk包

mv apache-tomcat-8.0.50 tomcat
mv tomcat /tomcat
mv jdk1.8.0_131 /tomcat

1.4 配置java环境变量:

vim /etc/profile

export JAVA_HOME=/tomcat/jdk1.8.0_131  #jdk路径
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib  
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin  

使环境变量立刻生效

source    /etc/profile    #使环境变量立刻生效。  

查看java版本,显示版本为1.6.0_18,证明安装成功。

java    -version  

1.5 启动tomcat

tomcat 默认端口8080
可以将8009端口关闭防止实验中出现错误
配置文件在

/tomcat/tomcat/conf

路径为:/tomcat/tomcat/bin

请添加图片描述
修改前:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

修改后:

<!--Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /-->

重启tomcat

./shutdown.sh && ./startup.sh 

查看tomcat是否启动进程及端口是否存在

ps  -ef |grep tomcat

1.6 Tomcat默认测试页面:(端口8080)

在这里插入图片描述

1.7 查看日志文件路径(服务日志)

/tomcat/tomcat/logs/catalina.out
tail -f catalina.out

二:自定义发布目录

tomcat发布目录在

/tomcat/tomcat/webapps/ROOT/
## 1.7 查看日志文件路径(服务日志)

~~~shell
/tomcat/tomcat/logs/catalina.out
tail -f catalina.out

2.1 创建index.jsp测试代码:

<html>
<body>
<h1>JSP Test Page</h1>
<%=new java.util.Date()%>
</body>
</html>

请添加图片描述

2.2 改变发布目录

默认Tomcat发布目录为
/usr/local/tomcat/webapps/网站,创建自定义发布目录方法如下:
编辑server.xml配置文件,末尾标签前加入如下行:

<Context path="/" docBase="/data/webapps/www"  reloadable="true"/>
#<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

2.3 关闭SSL协议

请添加图片描述

三:Tomcat配置文件详解

3.1 Tomcat目录

---bin Tomcat:存放启动和关闭tomcat脚本;
|---confTomcat:存放不同的配置文件(server.xml和web.xml);
|---doc:存放Tomcat文档;
|---lib/japser/common:存放Tomcat运行需要的库文件(JARS);
|---logs:存放Tomcat执行时的LOG文件;
|---src:存放Tomcat的源代码;
|---webapps:Tomcat的主要Web发布目录(包括应用程序示例);
|---work:存放jsp编译后产生的class文件;

3.2 Tomcat类加载

1.Bootstrap($JAVA_HOME/jre/lib/ext/*.jar)
2.System($CLASSPATH/*.class和指定的jar) 
3.Common($CATALINA_HOME/common 下的classes,lib,endores三个子目录) 
4.Catalina ($CATALINA_HOME/server/下的classes和lib目录仅对Tomcat可见)## 
&Shared($CATALINA_HOME/shared/下的classes和lib目录以及$CATALINA_HOME/lib目录)仅对Web应用程序可见,对Tomcat不可见
5.WebApp($WEBAPP/Web-INF/*仅对该WEB应用可见classes/*.classlib/*.jar)

3.2.1 加载类和资源的顺序为:

1)/Web-INF/classes
2)/Web-INF/lib/*.jar
3)Bootstrap
4)System
5)$CATALINA_HOME/common/classes
6)$CATALINA_HOME/common/endores/*.jar
7)$CATALINA_HOME/common/lib/*.jar
8)$CATALINA_HOME/shared/classes
9)$CATALINA_HOME/shared/lib/*.jar  

3.3 :server.xml配置

server:

1.port 指定一个端口,这个端口负责监听关闭tomcat的请求 
2.shutdown 指定向端口发送的命令字符串 
3.#service:  name 指定service的名字 
4.#Connector (表示客户端和service之间的连接):
5.port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求 
6.minProcessors 服务器启动时创建的处理请求的线程数 
7.maxProcessors 最大可以创建的处理请求的线程数 
8.enableLookups 如果为true,则可以通过调用9.request.getRemoteHost()进行DNS查
询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址 
10.redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号 
11.acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理
队列中的请求数,超过这个数的请求将不予处理 
12.connectionTimeout 指定超时的时间数(以毫秒为单位) 
13.#Engine(表示指定service中的请求处理机,接收和处理来自Connector的请求):
14.defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的 
15.#Context (表示一个web应用程序):
16.docBase 应用程序的路径或者是WAR文件存放的路径 
17.path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/
18.reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序 
19.#host (表示一个虚拟主机):
20.name 指定主机名 
21.appBase 应用程序基本目录,即存放应用程序的目录 
22.## unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序 ;
23.#Logger (表示日志,调试和错误信息):
24.className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口 
25.prefix 指定log文件的前缀 
26.suffix 指定log文件的后缀 
27.timestamp 如果为true,则log文件名中要加入时间,如下
28.Realm (表示存放用户名,密码及role的数据库)29.className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口 
30.#Valve (功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样):
31.className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息 
32.#directory(指定log文件存放的位置):
pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多。

四:Tomcat连接器选择

Tomcat Connector(Tomcat连接器)有bio、nio、apr****三种运行模式

3.4.1 bio

bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O操作(即Java.io包及其子包)。
默认的模式,性能最差,没有经过任何优化处理和支持。
nio(non-blocking I/O),java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API。拥有比传统I/O操作(bio)更好的并发运行性能。

要让Tomcat以nio模式来运行,修改配置文件:

tomcat/conf/server.xml
vim tomcat/conf/server.xml 
 # 修改以下内容:
<Connector port="8080" protocol="HTTP/1.1"
                    connectionTimeout="20000"
                    redirectPort="8443" />			
# 修改protocol的值为org.apache.coyote.http11.Http11NioProtocol
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
                    connectionTimeout="20000"
                     redirectPort="8443" />

3.4.2 apr

apr(Apache Portable Runtime/Apache可移植运行时库),Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。从操作系统级别来解决异步的IO问题,大幅度的提高性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。
要让Tomcat以apr模式来运行,必须安装apr和native

安装apr:

yum -y install apr apr-devel

安装native:

注:这样我我们使用源码安装ttomcat官网下载
tomcat-native-1.2.31-src.tar.gz源码包

请添加图片描述
请添加图片描述

cd /usr/local/tomcat/bin/
tar xzfv tomcat-native.tar.gz
#版本高的话就没有/jni直接是tomcat-native-1.1.33-src/native/   
cd tomcat-native-1.1.33-src/jni/native/   
./configure --with-apr=/usr/bin/apr-1-config
make && make install
整合Tomcat apr:

3.4.3 设置环境变量

#方法一:在/bin/catalina.sh中增加1行: 
(在echo “Using CATALINA_BASE: $CATALINA_BASE”的上一行添加) 
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib" 

在这里插入图片描述

# 方法二:在/etc/profile中加入: 
export CATALINA_OPTS=-Djava.library.path=/usr/local/apr/lib 
source /etc/profile

3.4.4 最后修改配置文件
修改配置文件:tomcat/conf/server.xml

vim tomcat/conf/server.xml 
修改以下内容:
<Connector port="8080" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="8443" />
修改protocol的值为org.apache.coyote.http11.Http11NioProtocol
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
                connectionTimeout="20000"
                redirectPort="8443" />

五:Tomcat性能优化

线上环境使用默认tomcat配置文件,性能很一般,为了满足大量用户的访问,需要对tomcat进行参数性能优化,具体优化的地方如下:

1.Linux内核的优化
2.服务器资源配置的优化
3.Tomcat参数优化
4.配置负载集群优化

这里着重讲解tomcat参数的优化: server.xml文件,关闭DNS查询、配置最大并发等参数。

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
acceptCount:当tomcat启动的线程数达到最大时,接受排队的请求个数,默认值为100

当然这些值都不是越大越好,需要根据实际情况来设定。可以基于测试的基础上来不断的调优分析。

<Connector port="8080"   
        protocol="org.apache.coyote.http11.Http11NioProtocol"  
           connectionTimeout="20000"  
           redirectPort="443"   
           maxThreads="5000" 
           minSpareThreads="20"  
           acceptCount="10000" 
           disableUploadTimeout="true" 
           enableLookups="false"   
           URIEncoding="UTF-8" />

Bin/catalina.sh JVM参数优化,添加如下内容:

CATALINA_OPTS="$CATALINA_OPTS -Xms512M -Xmx1024M -Xmn100M -XX:SurvivorRatio=4 -XX:+UseConcMarkS
weepGC -XX:CMSInitiatingOccupancyFraction=82 -DLOCALE=UTF-16LE  -DRAMDISK=/ -DUSE_RAM_DISK=ture
 -DRAM_DISK=true -Djava.rmi.server.hostname=192.168.111.128 -Dcom.sun.management.jmxremote.port
=10000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

配置多个tomcat实例,方法也很简单,只需要在服务器上cp多个tomcat,然后修改三个端口和发布目录即可,然后分别启动即可。
为了提升整个网站的性能,还需要在tomcat前面架设Nginx web反向代理服务器,用以提高用户高速访问。

Tomcat 7,8默认nio bio被淘汰

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值