设为首页 收藏本站
查看: 1457|回复: 0

[经验分享] Tomcat的安装和配置文件详解(一)

[复制链接]

尚未签到

发表于 2018-12-4 09:51:56 | 显示全部楼层 |阅读模式
  下载安装JDK(Tomcat在启动前必须安装JDK及Java的运行与开发环境,因为Tomcat本身就是有Java编写的,JDK中有Java的API,JVM等Java运行和开发的最小环境)
  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  [root@node1 tool]# tar -zxf jdk-8u111-linux-x64.tar.gz -C /usr/local/java/
  输出相关的环境变量
  [root@node1 jdk1.8.0_111]# vim /etc/profile
  export JAVA_HOME=/usr/local/java/jdk1.8.0_111
  export JRE_HOME=/usr/local/java/jdk1.8.0_111/jre

  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
  export PATH=$JAVA_HOME/bin:$PATH
  source(读)以下这个文件
  [root@node1 java]# source /etc/profile
  可以看到JDK1.8已经安装
  [root@node1 java]# java -version
  java version "1.8.0_111"
  Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
  Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
  

  下载安装Tomcat
  http://tomcat.apache.org/download-90.cgi
  

  [root@node1 tool]# tar -zxf apache-tomcat-7.0.73.tar.gz -C /usr/local/
  [root@node1 tool]# cd /usr/local/
  drwxr-xr-x.  2 mysql mysql 4096 Sep 23  2011 src
  [root@node1 local]# ln -sv apache-tomcat-7.0.73/ tomcat
  [root@node1 local]# cd tomcat/
  root@node1 tomcat]# ls bin/
  bootstrap.jar       commons-daemon-native.tar.gz    digest.sh         startup.battool-wrapper.s  catalina.bat           configtest.bat             setclasspath.bat        startup.sh            version.bat
  catalina.sh            configtest.sh                               setclasspath.sh         tomcat-juli.jar         version.sh
  

  #里面全部是一些.sh的脚本和.jar的Java归档文件;Tomcat就是 用Java写的所以启动时会调用一些Java库,.bat为Windows的批处理脚本,用于windows启动时调用,其中catalina.sh为核心脚本
  [root@node1 tomcat]# ls conf
  Catalina         catalina.properties  logging.properties  tomcat-users.xml
  catalina.policy    context.xml          server.xml          web.xml
  #其中server.xml为主配置文件;
  #tomcat-users.xml为用户认证文件,Tomcat启动后会将这个文件读进内存中完成账号和密码的检测认证,所以这个文件的安全性很重要;#web.xml为Tomcat默认的应用程序部署描述符,一个web应用程序所谓的部署就是将它放在Tomcat某一个context某一个host能够访问到的路  径下,及将web应用程序所依赖的类装载进JVM的过程;
  #context.html默认为上下文提供的配置文件
  #catalina.pro[erties 用来定义应用程序自身属性的(启动JVM要定义许多属性),如所使用的内存大小,所使用的字符串缓冲池的大小,你的server loader加载器是什么,等等
  #Catalina.policy用来定义Tomcat自身的安全和资源授权策略,如定义通过互联网访问时,哪些资源用户可以访问哪些资源用户不能访问;哪些资源能被装载,哪些资源不能被装载等等
  #logging.pro[erties 用来定义你的日志级别,日志文件的路径等等
  

  一般来说如果你不定义服务器自身的属性的话,只需修改.xml的文件
  

  
  

  [root@node1 conf]# vim server.xml
  

  
  #在Telnet的8005端口发一个shutdown就可以把Tomcat停掉,建议关掉(危险)
  

  
  Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  
  
  
  
  
  
  
  
  
  

  #listener为一大堆的侦听器,是程序员或者应用程序在调试时关闭或者启动某个容器时用的组件
  

  
  
  
  

  #全局命名资源,这里定义了一个全局命名资源,用来实现用户的认证

  

  
  
  

  
  
  

  #service 定义服务,这里定义的第一个服务就是Catalina,这个服务中定义了一个连接器,其端口为8080,所以他可以从8080端口接受用户的请求,其协议为HTTP/1.1

  #而Catalina服务中的另一个连接器的端口为8009,所以也可以从8009端口接受用户的请求,但其协议为AJP/1.3(这是一种以二进制格式从前端Apache传输用户请求至8009端口的协议,比用http协议效率要高)
  

  
  #定义了一个叫做Catalina的引擎,其默认主机为本机

  

  
  
  
  

  
  #定义了一个Realm(领域)用于用户的认证和授权,但默认为允许所有用户访问
  

  
  #定义了有个Value(阀门),用来记录客户端请求、客户端IP地址和服务器等信息,说明日志放在logs目录下(安装目录),其中每个日志都以localhost_access_log.开头中间为日期,以.txt结尾,pattern定义了日志的格式
  
  
  
  
  

  

  输出环境变量,明确说明Catalina在什么位置(即Tomcat实例运行所在的目录),用来定义你的Catalina工作的路径。需要注意的是在同一个物理服务器上可以同时启用多个Tomcat实例(但需要使用不同的端口)
  [root@node1 tomcat]# vim /etc/profile.d/tomcat.sh
  export CATALINA_HOME=/usr/local/tomcat
  export PATH=$PATH:$CATALINA_HOME/bin
  source(读)一下这个文件
  [root@node1 tomcat]# . /etc/profile.d/tomcat.sh
  

  测试一下,为Catalina传递一个参数version,其实就是执行了/usr/locar/tomcat/bin/version.sh脚本
  [root@node1 tomcat]# catalina.sh version
  Using CATALINA_BASE:   /usr/local/tomcat
  Using CATALINA_HOME:   /usr/local/tomcat
  Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  Using JRE_HOME:     /usr/local/java/jdk1.8.0_111/jre #你安装的jre目录(jdk装后生成的)
  Using CLASSPATH:   /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  Server version: Apache Tomcat/7.0.73
  Server built:   Nov 7 2016 21:27:23 UTC
  Server number:  7.0.73.0
  OS Name:       Linux
  OS Version:     2.6.32-573.el6.x86_64 #Linux内核版本
  Architecture:    amd64
  JVM Version:    1.8.0_111-b14 #JVM的版本
  JVM Vendor:     Oracle Corporation
  

  启动Tomcat
  [root@node1 tomcat]# catalina.sh start
  Using CATALINA_BASE:   /usr/local/tomcat
  Using CATALINA_HOME:   /usr/local/tomcat
  Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  Using JRE_HOME:        /usr/local/java/jdk1.8.0_111/jre
  Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  Tomcat started.
  [root@node1 tomcat]# jps
  2118 Jps
  1927 Bootstrap
  

  其中8080端口为http,8009为ajp
  [root@node1 ~]# netstat -tnlp |grep java
  tcp    0    0 ::ffff:127.0.0.1:8005     :::*   LISTEN      1927/java
  tcp    0    0 :::8009              :::*   LISTEN      1927/java
  tcp    0    0 :::8080              :::*   LISTEN      1927/java
  

  

  tomcat的库文件,有一大堆的jar文件。如jasper.jar、servlet-api.jar、jsp-api.jar等。是Tomcat实现许多重要功能必须依赖的类库

  
  [root@node1 tomcat]# ls lib/
  annotations-api.jar  ecj-4.4.2.jar  servlet-api.jar      tomcat-i18n-es.jar
  catalina-ant.jar    el-api.jar    tomcat7-websocket.jar  tomcat-i18n-fr.jar
  catalina-ha.jar     jasper-el.jar  tomcat-api.jar       tomcat-i18n-ja.jar
  catalina.jar       jasper.jar    tomcat-coyote.jar     tomcat-jdbc.jar
  catalina-tribes.jar  jsp-api.jar   tomcat-dbcp.jar       tomcat-util.jar
  

  
  

  [root@node1 tomcat]# ll logs/
  1 23:32 catalina.2017-01-01.log
  2 11:16 catalina.out #启动时Catalina自己输出的日志
  1 23:25 host-manager.2017-01-01.log #主机管理日志
  1 23:32 localhost.2017-01-01.log #主机的日志文件
  1 23:25 localhost_access_log.2017-01-01.txt #主机的访问日志文件
  2 11:15 localhost_access_log.2017-01-02.txt #一般日志每天滚动一次
  1 23:25 manager.2017-01-01.log
  [root@node1 tomcat]# ll
  

  1 23:23 temp     #临时文件的目录
  2 11:54 webapps   #应用程序目录如:docs、examples、ROOT等
  1 23:25 work     #工作目录,在这个目录下每一个Engine都有自己的独立目录;而在Engine下,               #每一个Host也有自己的独立目录,而在Host下每一个应用程序也有自己的独立               #目录
  
  [root@node1 tomcat]# ls work/
  Catalina                               #Engine
  [root@node1 tomcat]# ls work/Catalina/
  localhost                              #Host
  [root@node1 tomcat]# ls work/Catalina/localhost/
  _  docs  examples  host-manager  manager       #应用程序
  

  [root@node1 tomcat]# cd work/Catalina/localhost/
  [root@node1 localhost]# cd _
  [root@node1 _]# ll #可以看到什么都没有
  total 0
  浏览器访问一下192.168.139.2:8080
  对应/usr/local/apache-tomcat-7.0.73/webapps/ROOT/目录下的应用程序,如图

  [root@node1 _]# ll
  total 4
  drwxr-xr-x. 3 root root 4096 Jan  2 13:29 org
  #多了一个org文件。。可以看到你访问了一个应用程序后,会将index.jsp在这里转换为index_jsp.java再转换为index_jsp.class。所以第一个用户访问JSP资源时会很慢,但第二个用户来访问相同资源时(只要资源未修改),会直接使用编译好的.class,所以第二个用户访问会比第一个快的多,这也是JSP编译的页面访问快的原因,只要你的资源未修改JSP就是快
  [root@node1 _]# ls org/apache/jsp/
  index_jsp.class  index_jsp.java
  

  

  #可以看到有一堆的静态页面(.png图片)只有主页index.jsp为动态的

  [root@node1 tomcat]# ls webapps/ROOT/
  asf-logo.png     bg-middle.png  bg-upper.png  index.jsp      tomcat.gif tomcat.svg
  asf-logo-wide.gif  bg-nav-item.png  build.xml    RELEASE-NOTES.txt  tomcat.png
  bg-button.png     bg-nav.png    favicon.ico   tomcat.css
  WEB-INF
  

  注:需要注意的是每个应用程序都有 WEB-INF路径,有时还有META-INF文件,这两个路径下用来放私有资源,是用户通过Web访问URL不能访问到的,除了这两个路径下的资源都可以用web访问URL访问到

  

  为Tomcat提供init脚本
  

  [root@node1 java]# vim /etc/rc.d/init.d/tomcat
  

  #!/bin/sh
  # Tomcat init script for Linux.
  #
  # chkconfig: 2345 96 14
  # description: The Apache Tomcat servlet/JSP container.
  export JAVA_OPTS='-Xms64m -Xmx128m' #定义启动时堆内存最小64M,最大128M
  JAVA_HOME=/usr/local/java/jdk1.8.0_111 #Java的路径
  CATALINA_HOME=/usr/local/apache-tomcat-7.0.73 #Tomcat的路径
  export JAVA_HOME CATALINA_HOME #将Java和tomcat的路径输出为环境变量
  exec $CATALINA_HOME/bin/catalina.sh $* #执行这个脚本
  

  [root@node1 java]# chkconfig --add tomcat  #加执行权限
  [root@node1 java]# chkconfig --list tomcat #加入系统服务列表
  tomcat         0:off1:off2:on3:on4:on5:on6:off
  [root@node1 java]# service tomcat stop
  Using CATALINA_BASE:   /usr/local/apache-tomcat-7.0.73
  Using CATALINA_HOME:   /usr/local/apache-tomcat-7.0.73
  Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.73/temp
  Using JRE_HOME:        /usr/local/java/jdk1.8.0_111
  Using CLASSPATH:       /usr/local/apache-tomcat-7.0.73/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.73/bin/tomcat-juli.jar
  [root@node1 java]# service tomcat start
  Using CATALINA_BASE:   /usr/local/apache-tomcat-7.0.73
  Using CATALINA_HOME:   /usr/local/apache-tomcat-7.0.73
  Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.73/temp
  Using JRE_HOME:        /usr/local/java/jdk1.8.0_111
  Using CLASSPATH:       /usr/local/apache-tomcat-7.0.73/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.73/bin/tomcat-juli.jar
  Tomcat started.
  

  注:这个脚本不支持restart,但还支持以下许多参数(就是执行了catalina.sh脚本)
  [root@node1 java]# service tomcat -help
  debug           Start Catalina in a debugger
  debug -security     Debug Catalina with a security manager
  jpda start        Start Catalina under JPDA debugger
  run             Start Catalina in the current window
  run -security     Start in the current window with security manager
  start          Start Catalina in a separate window
  start -security    Start in a separate window with security manager
  stop           Stop Catalina, waiting up to 5 seconds for the process to end
  stop n          Stop Catalina, waiting up to n seconds for the process to end
  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if                    still running
  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still                running
  configtest       Run a basic syntax check on server.xml - check exit code for                      result
  version         What version of tomcat are you running?
  

  在下一篇博客中将详细介绍Tomcat的核心配置文件server.xml中各个组件的配置

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-643125-1-1.html 上篇帖子: Tomcat6.0连接池配置(oracle) 下篇帖子: Cento6.5启动Tomcat时报APR错的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表