Fork me on GitHub

Tomcat安装

官网下载文件

https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.54/bin/

文中CentOS使用apache-tomcat-7.0.54.tar.gz,windows需要注册为服务时下载exe文件。

解压缩

    # mkdir /usr/local/tomcat
    # cd /usr/local/tomcat
    # tar -zxvf apache-tomcat-7.0.54.tar.gz
    生成链接以便版本升级
    # ln -s apache-tomcat-7.0.54 server

启动Tomcat

    # cd /usr/local/tomcat/apache-tomcat-7.0/bin
    # ./startup.sh
    Using CATALINA_BASE: /usr/local/tomcat/server
    Using CATALINA_HOME: /usr/local/tomcat/server
    Using CATALINA_TEMDIR: /usr/local/tomcat/server/temp
    Using JRE_HOME: /usr/java/default
    Using CLASS_PATH: /usr/local/tomcat/server/bin/bootstrap.jar:/usr/local/tomcat/server/bin/tomcat-juli.jar
    Tomcat started.

   #显示Tomcat started并不代表着启动成功,一定要测试是否启动成功
   #ps -ef|grep java   #用来查看Tomcat是否启动成功,如果没有成功,到log/catalina.out里面看日志.(例如找不到java环境路径之类的)

开启Tomcat端口

方案一:    
iptables命令开端口
    # iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 
# service iptables save
# service iptables restart

方案二: 直接修改文件
/etc/sysconfig/iptables
# vi
/etc/sysconfig/iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT # service iptables restart
Linux下开启/关闭防火墙命令
#1) 永久性生效,重启后不会复原
#开启: chkconfig iptables on
#关闭: chkconfig iptables off

#2) 即时生效,重启后复原
#开启: service iptables start
#关闭: service iptables stop

测试Tomcat是否成功

linux查看端口是否打开
    netstat -an | grep 8080    
   curl ip:port
telnet或者curl时,服务一定要处于监听状态!!!即必须启动Tomcat.
   Tomcat启动失败直接导致telnet端口不通,所以一定要先确保tomcat是否启动成功
浏览器查看
    在浏览器输入: http://192.168.16.133:8080
    如在本机可以输入: http://localhost:8080
    出现tomcat的页面表示安装成功.

关闭Tomcat 停止Tomcat # ./shutdown.sh 查看Tomcat是否以关闭 ps -ef|grep java #查看是否关闭   kill -9 pid #强制关闭,不加-9为正常关闭

CentOS7以上开端口需要安装service iptables,详细看这里

systemctl stop firewalld     #关闭高级firewalld工具
systemctl mask firewalld  

yum install iptables-services    #安装iptables-services

systemctl enable iptables    #设置开机启动
systemctl stop iptables  
systemctl start iptables  
systemctl restart iptables  
systemctl reload iptables  

service iptables save  
#开放端口 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

报错

apache-tomcat-8.5.57/bin/catalina.sh: line 505: /usr/java/jdk1.8.0_251/jre/bin/java: No such file or directory

出现这个说明jdk的配置环境变量出错了,检查下/usr/java/jdk1.8.0_251/是不是在/etc/profile中配置正确。

apache-tomcat-8.5.57/bin/catalina.sh: /usr/java/jdk1.8.0_251/jre/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

sudo yum install glibc.i686    #安装glibc底层包

修改Tomcat堆内存和非堆内存

jdk1.7不修改内存会导致内存溢出,例如java.lang.OutOfMemoryError: PermGen space

Xms128m     #memoryStart(初始内存大小)
Xmx512G       #memoryMax(内存最大大小)
-XX:PermSize=128M    #JVM初始分配的非堆内存(方法区)
-XX:MaxPermSize=512M    #JVM最大允许分配的非堆内存(方法区),按需分配

linux

进入Tomcat中的/bin/catalina.sh

在catalina.sh中echo"Using CATALINA_BASE"之前的一行添加如下代码:

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms128m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=512m"

windows非安装模式

进入Tomcat中的/bin/catalina.bat

找到set "JAVA_OPTS字样的,在下面新加一行。

set "JAVA_OPTS=-Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m"

windows安装模式

Tomcatw.exe -> Java选项卡 -> 在Java Options中添加。

-Xms128M
-Xmx512M
-XX:PermSize=128M
-XX:MaxPermSize=512M

点击确定后,不要用Tomcatw.exe的Start启动服务(这样jvisualvm无法找到此进程),使用Tomcat.exe启动进程然后用jvisualvm查看实际的内存大小。

修改Tomcat传输编码

vi ./conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"  redirectPort="8443"
    URIEncoding="utf-8" server="unknown"/>

server属性是为了防止http响应出tomcat的详细信息,这样对方会根据tomcat信息找到相应的漏洞进行攻击。

使用指定版本JDK

tomcat使用指定JDK,在bin目录中的setclasspath.bat文件前面添加:   

set JAVA_HOME=D:\ProgramFiles_QY\Java\jdk1.7.0_80
set JRE_HOME=D:\ProgramFiles_QY\Java\jre

 

从tomcat执行中查看

修改Tomcat线程数

  Windows Tomcat允许每个进程maxThreads(最大线程数)2000
  Linux Tomcat允许每个进程maxThreads(最大线程数)1000

vi ./conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxThreads="800" acceptCount="1000"/>

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。

情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。

情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connection refused。

  • maxIdleTime: 最大空闲时间,超过这个空闲时间,且线程数大于minSpareThreads的,都会被回收,默认值1分钟(60000ms);
  • minSpareThreads:最小空闲线程数,任何情况都会存活的线程数,即便超过了最大空闲时间,也不会被回收,默认值4;
  • maxSpareThreads:最大空闲线程数,在最大空闲时间(maxIdleTime)内活跃过,此时空闲,当空闲时间大于maxIdleTime则被回收,小则继续存活,等待被调度,默认值50;
  • connectionTimeout:网络连接超时,假设设置为0表示永不超时,这样设置隐患巨大,通常可设置为30000ms,默认60000ms。

连接超时

官网:https://tomcat.apache.org/tomcat-9.0-doc/config/http.html

keepAliveTimeout

 

 maxKeepAliveRequests

 

 

多开Tomcat

修改端口

修改端口,两个tomcat的下面三种端口不能一样

<!--这里的port不能与第一个Tomcat中server.xml中配置相同,默认为8005-->
<Server port="8006" shutdown="SHUTDOWN">
 
<!--这里的port修改成8081,第一个Tomcat默认的是8080-->
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

<!--这里的port修改成8010,第一个Tomcat默认的是8009,这是tomcat自带的第二个连接器,它监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。-->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

配置环境变量

分别为两个tomcat配置单独的环境变量

vi /etc/profile,配置环境变量

#配置两个tomcat的环境变量
##########first tomcat###########
CATALINA_BASE=/usr/local/tomcat
CATALINA_HOME=/usr/local/tomcat
TOMCAT_HOME=/usr/local/tomcat
export CATALINA_BASE CATALINA_HOME TOMCAT_HOME
##########first tomcat############

##########second tomcat##########
CATALINA_BASE2=/usr/local/tomcat_2
CATALINA_HOME2=/usr/local/tomcat_2
TOMCAT_HOME2=/usr/local/tomcat_2
export CATALINA_BASE2 CATALINA_HOME2 TOMCAT_HOME2
##########second tomcat##########

使环境变量生效

source /etc/profile

配置catalina.sh

只配置2号tomcat_2,1号tomcat用默认的环境变量

vim /usr/local/tomcat_2/bin/catalina.sh
#在代码# OS specific support.  $var _must_ be set to either true or false.下面增加如下代码
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2

Tomcat启动后,两个tomcat路径是自己的tomcat目录才可以。

修改文件上传限制

tomcat目录下的/conf/server.xml,为Connector添加maxPostSize参数

maxPostSize="-1"
disableUploadTimeout=true

maxPostSize:参数值“-1”表示不做大小限制。不设置maxPostSize参数意为使用默认的大小,默认2097152bytes,即为2MB。

disableUploadTimeout:允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行,默认值为false。

注意:

tomcat7.0.63之前 给maxPostSize设置小于等于0的值都可表示不限制

tomcat7.0.63及之后 给maxPostSize设置小于0的值可表示不限制

如果在tomcat7.0.63之后设置maxPostSize=“0”,那将会获取不到传输的数据。

配置web管理帐号

修改文件conf/tomcat-users.xml,在<tomcat-users>元素中添加帐号密码,需要指定角色.
     # vi /usr/local/tomcat/server/conf/tomcat-users.xml
     <tomcat-users>
       <user name="admin" password="admin" roles="admin-gui,manager-gui" />
     </tomcat-users>

配置web访问端口

可以修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效.

 # vi /usr/local/tomcat/server/conf/server.xml
   <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 

配置AJP端口

AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接 和SERVLET容器连接。WEB服务器通过TCP连接和SERVLET容器连接。

tomcat最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的Java Web服务器,它在对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web服务器管理功能方面都不如其他专业的HTTP服务器,如IIS和Apache服务器。因此在实际应用中,常常把Tomcat与其他HTTP服务器集成。对于不支持Servlet/JSP的HTTP服务器,可以通过Tomcat服务器来运行Servlet/JSP组件。

 

JK插件

    Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信。把JK插件安置在HTTP服务器上。当HTTP服务器接收到客户请求时,它会通过JK插件来过滤URL,JK插件根据预先配置好的URL映射信息,决定是否要把客户请求转发给Tomcat服务器处理。

配置JMX端口

JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

JMX最常见的场景是监控Java程序的基本信息和运行情况,任何Java程序都可以开启JMX,然后使用JConsole或Visual VM进行预览。

Https设置

https://www.cnblogs.com/aeolian/p/11906695.html

Tomcat的目录结构

   ·bin     //存放Tomcat的命令脚本文件
   ·conf    //存放Tomcat服务器的各种配置文件,最主要是server.xml
   ·lib     //存放Tomcat服务器支撑jar包
   ·logs    //存放日志文件
   ·temp    //存放临时文件
   ·webapps //web应用所在目录,外界访问web资源的存放目录
   ·work    //Tomcat的工作目录

web应用的目录结构

   webapp                           -- web应用所在目录
     |--- html, jsp, css, js文件等  -- 这些文件一般在web应用根目录下,根目录下的文件外界可以直接访问.
     |--- WEB-INF 目录              -- java类、jar包、web配置文件存在这个目录下,外界无法直接访问,由web服务器负责调用.
           |--- classes 目录        -- java类
           |--- lib 目录            -- java类运行所需要的jar包
           |--- web.xml 文件        -- web应用的配置文件

9.虚拟主机的配置
   指定虚拟主机名,修改conf/server.xml,添加<host>元素.
   <host name="hostname.domainname" appBase="/webapps">
     <Context path="/webapp" docBase="/webapps/webapp"/>
   </host>
   例:
   <host name="www.163.com" appBase="/webapps">
   </host>
   <host name="mail.163.com" appBase="/mailapps">
   </host>
   须设置DNS解析(host文件或DNS系统).

10.web应用和虚拟目录的映射.
   可以修改xml配置文件的<Context>元素来设置web应用和虚拟目录的映射.
   ·conf/server.xml         //在<host>元素下添加<Context path="/webname" docBase="/webappdir"/>,需要重新启动Tomcat服务生效,不建议使用.
   ·conf/context.xml        //添加<Context>元素所有web应用有效.
   ·conf/[enginename]/[hostname]/context.xml.default  //[enginename]一般是Catalina,主机[hostname]的所有web应用有效.
   ·conf/[enginename]/[hostname]/   //在目录下任意建一个文件(扩展名xml),文件名即为虚拟目录名.多级目录使用#分割. <Context docBase="/webappdir"/>
                                     //缺省值web应用目录可以定义为ROOT.xml,添加<Context docBase="/webappdir"/>,需重新启动Tomcat服务器.
   ·META-INF/context.xml    //
   可以将web应用放在webapps目录下让Tomcat服务器自动映射,适用开发环境,实际运用环境中不用自动映射。
   如没有修改配置文件,web应用目录为ROOT时则为默认web应用。

11.web应用首页(welcome file)的配置
   修改web应用的配置文件: [webapp]/WEB-INF/web.xml
    <welcome-file-list>
       <welcome-file>index.html</welcome-file>
       <welcome-file>index.htm</welcome-file>
       <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
12.tomcat的理论并发值为500(不调用controller等业务,只有请求),实际上并发量300左右

Windows

官网下载解压版

注册服务

service.bat install tomcat7

删除服务

service.bat install tomcat7    //用tomcat自己的命令
sc delete tomcat7   //或者用sc命令

Tomcat启动后get接收的参数乱码

在Connector中加入URIEncoding="UTF-8"即可。

<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" 
               connectionTimeout="20000"
               redirectPort="8443" />

bat启动控制台显示乱码

打开tomcat文件夹到conf目录下找到logging.properties文件

找到 java.util.logging.ConsoleHandler.encoding = utf-8

更改为 java.util.logging.ConsoleHandler.encoding = GBK

可能遇到情况

若双击start.bat运行不了,查看是否之前安装过安装版。若安装过需要卸载程序、删除服务、删除环境变量(CATALINA_HOME以及path中的部分)、删除注册表

注意不要觉得修改了正确的环境变量路径就好了,一定要把安装版的所有东西删除干净。

Tomcat删除注册表

  1. 运行regedit ,回车。

  2. 然后按crtl+f键,在对话框里输入tomcat(或者tomcat的路径),查询。

  3. 找到正确的tomcat相关均删除。

  4. F3按一下就是继续查找。查找完了后重启电脑即可。(服务器的话不好重启可以用安装版)

  5. 或者重新安装一次,装好后再卸载。不过建议用解压版的。

 
posted @ 2018-04-21 15:28  秋夜雨巷  阅读(632)  评论(0编辑  收藏  举报