[转载]Tomcat部署与配置

转载来源:

http://ibash.cc/frontend/article/2/

感觉挺好的  自己之前总是怕麻烦 其实是水平不够.

一句话介绍Tomcat

Tomcat是一个免费的开源的Web应用服务器,属于轻量级的应用服务器,具有处理HTML页面的功能;另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

Tomcat安装

note:本文的JDK版本为1.8,Tomcat版本为8.0,安装过程均采用源码安装

部署JDK

下载页面: http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

或者搜索oracle JDK download下载

  1. # tar zxf jdk-8u101-linux-x64.tar.gz
  2. # mv jdk1.8.0_101 /usr/local/jdk
  3. # chown -R root:root /usr/local/jdk/
  4. # echo "###for jdk" >> /etc/profile
  5. # echo "export JAVA_HOME=/usr/local/jdk" >> /etc/profile
  6. # echo "export PATH=$JAVA_HOME/bin:$JAVE_HOME/jre/bin:$PATH" >> /etc/profile
  7. # echo "export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar" >> /etc/profile
  8. # echo "export TOMCAT_HOME=/usr/local/tomcat" >> /etc/profile
  9. # source /etc/profile
  10. # java -version
  11. java version "1.8.0_101"
  12. Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
  13. Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

部署Tomcat

官方网址: http://tomcat.apache.org/

  1. # wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.36/bin/apache-tomcat-8.0.36.tar.gz
  2. # tar zxf apache-tomcat-8.0.36.tar.gz
  3. # mv apache-tomcat-8.0.36 /usr/local/tomcat
  4. # chown -R root:root /usr/local/tomcat/
  5. # echo "###for tomcat" >> /etc/profile
  6. # echo "export TOMCAT_HOME=/usr/local/tomcat" >> /etc/profile
  7. # source /etc/profile

启动Tomcat

  1. # /usr/local/tomcat/bin/startup.sh
  2. Using CATALINA_BASE:   /usr/local/tomcat
  3. Using CATALINA_HOME:   /usr/local/tomcat
  4. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  5. Using JRE_HOME:        /usr/local/jdk
  6. Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  7. Tomcat started.
  8. # ps -ef|grep tomcat
  9. root       2735      1 99 23:00 pts/0    00:00:11 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
  10. root       2748   2328  0 23:00 pts/0    00:00:00 grep tomcat
  11. # ss -lntup|grep java
  12. tcp    LISTEN     0      1       ::ffff:127.0.0.1:8005                 :::*      users:(("java",2735,77))
  13. tcp    LISTEN     0      100                   :::8009                 :::*      users:(("java",2735,52))
  14. tcp    LISTEN     0      100                   :::8080                 :::*      users:(("java",2735,47))
  15. # /etc/init.d/iptables stop

在浏览器访问tomcat默认的站点,输入地址 192.168.1.199:8080(注意默认端口是8080)

Tomcat目录结构

  1. # ls -l /usr/local/tomcat
  2. 总用量 112
  3. drwxr-xr-x 2 root root  4096 7月  25 04:03 bin ==> 启动关闭脚本
  4. drwxr-xr-x 3 root root  4096 7月  25 04:23 conf  ==>配置文件目录
  5. drwxr-xr-x 2 root root  4096 7月  25 04:03 lib  ==> 存放库文件,jar包
  6. -rw-r--r-- 1 root root 57011 6月   9 21:58 LICENSE
  7. drwxr-xr-x 2 root root  4096 7月  25 04:04 logs  ==>日志目录
  8. -rw-r--r-- 1 root root  1444 6月   9 21:58 NOTICE
  9. -rw-r--r-- 1 root root  6739 6月   9 21:58 RELEASE-NOTES
  10. -rw-r--r-- 1 root root 16195 6月   9 21:58 RUNNING.txt
  11. drwxr-xr-x 3 root root  4096 7月  25 04:23 temp ==>临时文件夹
  12. drwxr-xr-x 7 root root  4096 6月   9 21:56 webapps ==>站点根目录
  13. drwxr-xr-x 3 root root  4096 7月  25 04:04 work  ==>工作时编译的.java和.class文件

Tomcat配置文件注解

  1. # cat /usr/local/tomcat/conf/server.xml
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <Server port="8005" shutdown="SHUTDOWN"><!--表示一个运行于JVM的tomcat实例,该元素代表整个容器,是Tomcat实例的顶层元素,不能作为子元素出现-->
  4. <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  5. <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  6. <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><!--侦听器,这一行是一个内存溢出的侦听器-->
  7. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  8. <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  9. <GlobalNamingResources><!--全局的一个资源命名-->
  10. <Resource name="UserDatabase" auth="Container"
  11. type="org.apache.catalina.UserDatabase"
  12. description="User database that can be updated and saved"
  13. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  14. pathname="conf/tomcat-users.xml" /><!--这里的xml用来配置用户的管理段-->
  15. </GlobalNamingResources>
  16. <!--服务组件,关联connector和engine,一个server内部只有一个service-->
  17. <Service name="Catalina"><!--配置一个叫Catalina的服务,Tomcat有两种连接类的引擎,HTTP和AJP两种-->
  18. <Connector port="8080" protocol="HTTP/1.1"
  19. connectionTimeout="20000"<!--连接的超时时间-->
  20. redirectPort="8443" /><!--一般用于使用Nginx做代理-->
  21. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><!--使用apache的场景大多使用AJP,两者保留一个即可-->
  22. <Engine name="Catalina" defaultHost="localhost"><!--引擎配置,核心组件,负责通过connector接收用户请求,并将请求转发到对应的虚拟主机host,
  23. defaultHost表示缺省处理的主机名-->
  24. <Realm className="org.apache.catalina.realm.LockOutRealm">
  25. <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  26. resourceName="UserDatabase"/>
  27. </Realm>
  28. <Host name="localhost"  appBase="webapps"
  29. unpackWARs="true" autoDeploy="true"><!--主机配置,可以配置虚拟主机,但是不建议配置;appBase站点路径;unpackWARS自动解压war包;
  30. autoDeploy自动部署;这是属于热部署,默认都是true,也就是每次部署都不用重启Tomcat,生产不建议开启热部署-->
  31. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  32. prefix="localhost_access_log" suffix=".txt"
  33. pattern="%h %l %u %t &quot;%r&quot; %s %b" /><!--日志配置-->
  34. </Host>
  35. </Engine>
  36. </Service>
  37. </Server>

开启Tomcat管理界面(生产环境勿开启)

  1. # vim /usr/loca/tomcat/conf/tomcat-users.xml
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <tomcat-users xmlns="http://tomcat.apache.org/xml"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
  6. version="1.0">
  7. <role rolename="manager-gui"/><!--定义角色-->
  8. <role rolename="admin-gui"/>
  9. <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/><!--定义用户名密码和角色-->
  10. </tomcat-users>

重新启动Tomcat

  1. # /usr/local/tomcat/bin/shutdown.sh
  2. Using CATALINA_BASE:   /usr/local/tomcat
  3. Using CATALINA_HOME:   /usr/local/tomcat
  4. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  5. Using JRE_HOME:        /usr/local/jdk
  6. Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  7. # /usr/local/tomcat/bin/startup.sh
  8. Using CATALINA_BASE:   /usr/local/tomcat
  9. Using CATALINA_HOME:   /usr/local/tomcat
  10. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  11. Using JRE_HOME:        /usr/local/jdk
  12. Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  13. Tomcat started.

此时在浏览器就可以使用用户名tomcat密码tomcat来访问管理界面了

报错403解决方法

403 Access Denied

You are not authorized to view this page.

By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, you‘ll need to edit the Host Manager‘s context.xml file.

  1. # vim /usr/local/tomcat/conf/Catalina/localhost/manager.xml
  2. <Context privileged="true" antiResourceLocking="false"
  3. docBase="${catalina.home}/webapps/manager">
  4. <Valve className="org.apache.catalina.valves.RemoteAddrValve"
  5. allow="192\.168\.1\.102" />
  6. </Context>

note:路径为  安装目录/conf/[enginename]/[hostname]/manager.xml

Tomcat安全建议

1. telnet管理端口的保护

  1. <Server port="8005" shutdown="SHUTDOWN">
  2. 修改为
  3. <Server port="8192" shutdown="stop">
  4. 端口范围8000~8999,关键字SHUTDOWN要改掉

2. ajp的连接端口更改

  1. ajp连接端口主要用于apache的mod_jk模块(该模块可以转发JSP请求到tomcat),保护该端口的目的在于防止线下的测试流量被mod_jk转发到线上的tomcat服务器,同样端口范围为8000~8999
  2. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  3. 修改为
  4. <Connector port="8193" protocol="AJP/1.3" redirectPort="8443" />

3. 禁止管理界面,删除默认的站点目录,更改默认的站点目录

4. 使用低级别的用户权限启动tomcat

5. 启动脚本权限回收

6. 将tomcat放置于nginx后面,保证安全的同时提高性能

更改后的server.xml配置如下

  1. <?xml version=‘1.0‘ encoding=‘utf-8‘?>
  2. <Server port="8192" shutdown="stop"><!--修改telnet端口和指令-->
  3. <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  4. <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  5. <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  6. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  7. <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  8. <GlobalNamingResources>
  9. <Resource name="UserDatabase" auth="Container"
  10. type="org.apache.catalina.UserDatabase"
  11. description="User database that can be updated and saved"
  12. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  13. pathname="conf/tomcat-users.xml" />
  14. </GlobalNamingResources>
  15. <Service name="Catalina">
  16. <Connector port="8080" protocol="HTTP/1.1"
  17. connectionTimeout="20000"
  18. redirectPort="8443" server="iBashWebServer"
  19. maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" enableLookups="false" /><!--修改server header,
  20. 增大线程数,最小空闲进程,最大空闲进程,禁止DNS解析-->
  21. <Connector port="8193" protocol="AJP/1.3" redirectPort="8443" /><!--修改ajp的默认端口-->
  22. <Engine name="Catalina" defaultHost="localhost">
  23. <Realm className="org.apache.catalina.realm.LockOutRealm">
  24. <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  25. resourceName="UserDatabase"/>
  26. </Realm>
  27. <Host name="localhost"  appBase="webapps"
  28. unpackWARs="true" autoDeploy="true">
  29. <Context path="" docBase="/usr/local/tomcat_webapps/" debug="0" reloadable="false" crossContext="true" ></Context>
  30. <!--修改tomcat站点根目录-->
  31. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  32. prefix="localhost_access_log" suffix=".txt"
  33. pattern="%h %l %u %t %r %s % b %{Referer}i %{User-Agent}i %D" resolveHosts="false" />
  34. </Host>
  35. </Engine>
  36. </Service>
  37. </Server>

Nginx整合Tomcat的几种配置介绍

1. 单纯的nginx反向代理tomcat配置

  1. server {
  2. listen       80;
  3. server_name  www.test.org;
  4. location / {
  5. proxy_pass http://www.test.org:8080;
  6. }
  7. }

note: 将请求www.test.org:80的所有请求,直接转发给http://www.test.org:8080,相当于直接访问http://www.test.org:8080。

2. 按照请求类型配置Nginx

  1. server {
  2. listen       80;
  3. server_name  www.test.org;
  4. index  index.jsp;
  5. charset utf-8;
  6. access_log  logs/www.test.org.access.log  main;
  7. root   /www/html/www.test.org;
  8. location ~ .*\.(jsp|do)?$ {
  9. proxy_pass http://www.test.org:8080;
  10. }
  11. location ~ .*\.(html|js|css|png|gif)?$ {
  12. root    /usr/local/tomcat_webapps/;
  13. }
  14. }

3. 配置负载均衡

首先复制多个tomcat目录,启动多个tomcat实例,然后配置nginx

  1. upstream web_pools {
  2. server 127.0.0.1:8081;
  3. server 127.0.0.1:8082;
  4. }
  5. server {
  6. listen       80;
  7. server_name  www.test.org;
  8. location / {
  9. root   html;
  10. index  index.jsp index.html index.htm;
  11. proxy_pass http://web_pools;
  12. }
  13. }

开启JMX用于监控

  1. # vim /usr/local/tomcat/bin/catalina.sh
  2. CATALINA_OPTS="$CATALINA_OPTS
  3. -Dcom.sun.management.jmxremote
  4. -Dcom.sun.management.jmxremote.port=12345
  5. -Dcom.sun.management.jmxremote.authenticate=false
  6. -Dcom.sun.management.jmxremote.ssl=false
  7. -Djava.rmi.server.hostname=192.168.1.199"
  8. # OS specific support.  $var _must_ be set to either true or false.

线上故障排除思路

1. jps获取Java进程的PID

2. jstack pid >> java.txt 导出CPU占用高的进程的线程栈

3. top -H -p PID 查看对应进程的哪个线程占用CPU过高

4. echo "obase=16; PID"|bc将线程的PID转换为16进制

5. 在第二步导出的java.txt中查找转换成为16进制的线程的PID。找到对应的线程栈。

6. 分析负载高的线程栈都是什么业务操作。优化程序并处理问题

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/8321776.html

时间: 2024-08-25 13:19:55

[转载]Tomcat部署与配置的相关文章

转载 Tomcat集群配置学习篇-----分布式应用

Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问量过大,就会出现服应用务器崩溃的情况,这个时候怎么办,难道就只能去重启服务器吗?好,如果是一般的小型公益网站到也无所谓,但如果是比如像大型航空公司售票等电子商务网站,每天每小时都有大量的订单业务,如果这些售票系统一旦崩溃后,再去重启,这些时间和客户的损失就直接会影响到航空公司的利益,这些损失如何去避

web项目脱离Eclipse在Tomcat部署并配置Eclipse调试

简单来说,把WEB项目打成war包后放到webapps目录下启动tomcat便部署成功了,但是因为与Eclipse没有关联,故而无法Debug调试代码.这时在Tomcat的catalina.sh脚本里面配置如下代码: JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=10096,server=y,suspend=n" 这样就Tomcat就对外提供了一个可以连接的端口10096,在

【图文讲解】TomCat服务器环境配置及项目部署

转载请注明出处:http://blog.csdn.net/caoyouxing/article/details/42644575 如何下载安装tomcat?如何配置环境变量?如何部署项目?在这过程中是否和作者一样经常出现错误? 请仔细读文及注意事项. 工具/原料 1,JDK:版本为jdk-7-windows-i586.exe 下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html 2,tomcat:版本为apa

tomcat 部署多个war包项目和配置域名

1.首先就是项目打包war     首先使用DOS进入 项目的根目录    cd  E:/XXX项目/ 2. 打包命令 jar cvf XXX项目.war */.        (这里可以把lib下的jar全部打包 也可以把lib下的Jar放入 tomcat下) 3.好啦下面就是我们的部署了 3.1把项目war包 放入tomcat文件下 的D:\apache-tomcat-6.0.37\webapps 下 3.2刚开始的新手 放好之后你先找到    D:\apache-tomcat-6.0.37

tomcat部署与Context 【转载】

首先说说tomcat的几种部署方法: 1.将应用文件夹或war文件塞到tomcat安装目录下的webapps子目录下,这样tomcat启动的时候会将webapps目录下的文件夹或war内容当成应用部署.这种方式最简单且无须书写任何配置文件. 2.在tomcat安装目录下的conf子目录下的server.xml配置文件中的Host节点下添加Context字节点:<Context path="/name" docBase="..." />,其中path属性是

企业级Tomcat部署配置

1.1 Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发而成. Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomcat和Nginx.Apache(httpd).lighttpd等Web服务器一样,具有处理HTML页面的功能

【转载】centos7+tomcat部署JavaWeb项目超详细步骤

我们平时访问的网站大多都是发布在云服务器上的,比如阿里云.腾讯云等.对于新手,尤其是没有接触过linux系统的人而言是比较有困难的,而且至今使用云服务器也是有成本的,很多时候我们可以通过虚拟机自己搭建一个测试服务器来运行我们的javaWeb项目.这里我就从头到尾开始详细的介绍一下如何部署javaWeb项目到centos7上. 总体分为三部分:1.java环境.2.tomcat环境.3.JavaWeb项目部署 一.安装java环境 centos7安装java环境比较简单,我是通过virtualBo

apache整合tomcat部署集群

近日,由于公司项目需要,所以学习了apache整合tomcat以及集群的一些知识. 所以做下笔记日后回顾可以用到. apache只有处理静态事物的能力, 而tomcat的强项就是处理动态的请求,所以apache和tomcat整合相互取长补短,由apache作为入口,如果是请求静态页面或者是静态文件,由apache直接提供,如果是请求动态页面,则让apache分发到tomcat,由tomcat处理以后再响应给客户端. apache和tomcat的整合需要准备的一些软件列表: 图1 说明: 1.首先

【工具系列一】——Tomcat的基本配置

Tomcat是Java领域最著名的开源Web容器,也是平时最常用Web服务器,我们有必要对其基本的配置有所了解. 本篇博客中所介绍的配置基于版本apache-tomcat-6.0.43 Tomcat下载地址:http://tomcat.apache.org/ 目录说明 windows平台下目录结构说明: bin:操作Tomcat命令的路径 conf:Tomcat配置 lib:核心类库,第三方类库存放路径(扩展Tomcat功能) logs:存放每次运行后产生的日志 temp:web应用运行过程中生