码迷,mamicode.com
首页 > Web开发 > 详细

web服务器tomcat入门

时间:2017-05-11 20:34:21      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:ogg   垃圾回收   span   统一   信息隐藏   规则   情况   XML   利用   

一、tomcat介绍
1.1 引入tomcat

  Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
  tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

1.2 常用的java-web服务

开源软件
tomcat resin jboss
商业软件
weblogic websphere

二、java概念解释
JDK
简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等
JRE
JRE(Java Runtime Environment,Java运行环境),也就是Java平台。所有的Java程序都要在JRE下才能运行。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
SDK
SDK(Software Develop Kit,软件开发工具包),用于帮助开发人员的提高工作效率。各种不同类型的软件开发,都可以有自己的SDK。Windows有Windows SDK,DirectX 有 DirectX 9 SDK,.NET开发也有Microsoft .NET Framework SDK。JAVA开发也不含糊,也有自己的Java SDK。
JVM
JVM(Java Virtual Machine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台

三、tomcat环境准备

[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

四、源码安装启动tomcat
#统一线上web服务用户的uid
[root@node1 ~]# useradd -u 1001 tomcat
[root@node1 ~]# id tomcat
uid=1001(tomcat) gid=1001(tomcat) groups=1001(tomcat)

下载jdk和tomcat

[root@node1 ~]# cd /usr/local/src/
[root@node1 ~]# wget http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

[root@node1 ~]# wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14.tar.gz

 

安装Jdk和tomcat

[root@node1 src]# tar zxf jdk-8u131-linux-x64.gz 
[root@node1 src]# mv jdk1.8.0_131/ /usr/local/
[root@node1 src]# ln -s /usr/local/jdk1.8.0_131/ /usr/local/jdk
[root@node1 src]# tar zxf apache-tomcat-8.5.14.tar.gz 
[root@node1 src]# mv apache-tomcat-8.5.14 /usr/local/
[root@node1 src]# ln -s /usr/local/apache-tomcat-8.5.14/ /usr/local/tomcat

 

设置环境变量

[root@node1 src]# echo "export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/usr/local/tomcat" >> /etc/profile
[root@node1 src]# source /etc/profile

 

测试java环境变量是否生效
[root@node1 src]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

使用tomcat用户启动tomcat(这样可以起到一定的安全防范作用,如果被入侵拿到的也只是tomcat权限)

[root@node1 src]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@node1 src]# cd /usr/local/tomcat/bin/
[root@node1 bin]# ./startup.sh

 技术分享

查看8080端口
[root@node1 bin]# netstat -tunlp |grep 8080
tcp6 0 0 :::8080 :::* LISTEN 62872/java

根据启动脚本编写重启脚本如下
# vim tomcat.sh

#!/bin/bash
usage() {
echo "Usage: $0 [start|stop|restart|status]"
}

start_tomcat(){
/usr/local/tomcat/bin/startup.sh
}
status_tomcat(){
ps -ef|grep java|grep tomcat|grep -v grep
}
stop_tomcat(){
TPID=$(ps -ef|grep java|grep tomcat|grep -v grep|awk {print $2})
kill -9 $TPID
sleep 3
STAT=$(ps -ef|grep java|grep tomcat|grep -v grep|awk {print $2})
if [ -z $STAT ];then
echo tomcat stoped...
else
kill -9 $STAT
fi
}
restart_tomcat(){
stop_tomcat
start_tomcat
}

main(){
case $1 in

start)
start_tomcat;;
stop)
stop_tomcat;;
restart)
restart_tomcat;;
status)
status_tomcat;;
*)
usage;
esac
}
main $1

 

五、学习tomcat配置文件
5.1 学习server.xml

<Connector port="8080" protocol="HTTP/1.1" #http监听8080端口
connectionTimeout="20000"
redirectPort="8443" /> #https 8443端口
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #AJP通信方式8009端口
<Server port="8005" shutdown="SHUTDOWN">
<Listener # telent端口 className="org.apache.catalina.startup.VersionLoggerListener" />

 

##5.2 学习 tomcat-users.xml

[tomcat@node1 webapps]$ pwd
/usr/local/tomcat/webapps #tomcat 默认的根路径
[tomcat@node1 webapps]$ ll
total 8
drwxr-xr-x 14 tomcat tomcat 4096 Mar 19 21:57 docs
drwxr-xr-x 6 tomcat tomcat 78 Mar 19 21:57 examples
drwxr-xr-x 5 tomcat tomcat 82 Mar 19 21:57 host-manager #用户管理,登录使用
drwxr-xr-x 5 tomcat tomcat 97 Mar 19 21:57 manager 
drwxr-xr-x 3 tomcat tomcat 4096 Mar 19 21:57 ROOT #默认的访问路径

 

修改tomcat-users.xml,配置一个登录用户tomcat

生产环境关闭app管理和主机管理的方法,具体文件再进行具体调整

[tomcat@node1 webapps]$ mv host-manager/ examples/ /tmp/
111
启动tomcat的注意事项,每次启动都会生成temp和work目录,实际生产环境建议每次tomcat启动都将此两个目录情况情况,否则会因为缓存问题产生异常

六、生产环境tomcat规范
telnet管理端口保护
   更改8005(更改为8000~8999之间即可)端口,和SHOTDOWN字符串
ajp链接端口保护,或者直接注释配置文件
   更改8005(更改为8000~8999之间即可)端口,通过iptables限制此端口,或者直接注释配置文件
禁用管理
   1)删除默认的{Tomcat安装目录}/conf/tomcat-users.xml文件,重启tomcat后将会自动生成新的文件;
   2)删除{Tomcat安装目录}/webapps下默认的所有目录和文件;
   3)将tomcat 应用根目录配置为tomcat安装目录以外的目录;
降权启动
   1)tomcat启动用户权限必须为非root权限,尽量降低tomcat启动用户的目录访问权限;
   2)如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发;
文件列表访问限制
   conf/web.xml文件中default部分listings的配置必须为false;
版本信息隐藏
   1)修改conf/web.xml,重定向403、404以及500等错误到指定的错误页面;
   2)也可以通过修改应用程序目录下的WEB-INF/web.xml下的配置进行错误页面的重定向;
Server header重写
   在HTTP Connector配置中加入server的配置,server="chuck-server"
通过配置,限定访问的ip来源
   allow="61.148.18.138,61.135.165." deny="...*"/
起停脚本权限回收
   去除其他用户对Tomcat的bin目录下shutdown.sh、startup.sh、catalina.sh的可执行权限
访问日志格式规范
   开启Tomcat默认访问日志中的Referer和User-Agent记录
关闭自动部署(根据自己实际情况)
   autoDeploy="false">

七、tomcat的调优
7.1 外部调优

操作系统调优,JVM调优
1)调整JVM内存使用
2)使用什么垃圾回收器
nginx代理调优

7.2 内部调优

maxThreads="150" #最大线程数
minSpareThreads="4" #初始化创建的线程数
maxSpareThreads="500" #一旦创建的线程超过这个值,tomcat就会关闭不在需要的socket线程
acceptCount="700" #指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队里的请求数,超过这个数将不予处理
compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" #tomcat压缩,压缩起始大小为2048K和压缩类型
enableLookups="false" #关闭dns查询
disableUploadTimeout="25" #关闭上传超时
connectionTimeout="20000" #链接超时
SSLEnabled="true" #开启ssl加密,https时使用 
附生产实际配置文件一个

<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
acceptCount="300" maxThreads="300" maxProcessors="1000" minProcessors="5"
useURIValidationHack="false"
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
SSLEnabled="true"
scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/tomcat2/conf/shnlap93.jks" keystorePass="aaaaaa"
/>

 


7.3 开启jvm远程查看

更改启动参数

echo "CATALINA_OPTS="$CATALINA_OPTS 
-Dcom.sun.management.jmxremote # 启用远程调用
-Dcom.sun.management.jmxremote.port=12345 #端口12345
-Dcom.sun.management.jmxremote.authenticate=false #关闭验证 
-Dcom.sun.management.jmxremote.ssl=false #关闭ssl加密
-Djava.rmi.server.hostname=192.168.3.198"" >> /usr/local/tomcat/bin/catalina.sh

 

打开jvisualvm,可同时链接多个jvm主机

技术分享

web服务器tomcat入门

标签:ogg   垃圾回收   span   统一   信息隐藏   规则   情况   XML   利用   

原文地址:http://www.cnblogs.com/reblue520/p/6842377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!