源码安装tomcat
使用到的包: apache-tomcat-8.0.23.tar.gz jdk-7u67-linux-x64.rpm 1.安装jdk rpm -ivh jdk-7u67-linux-x64.rpm 查看安装生成的主要文件: [root@node1 java]# cd /usr/java/ [root@node1 java]# ll total 4 lrwxrwxrwx. 1 root root 16 Oct 28 15:05 default -> /usr/java/latest drwxr-xr-x. 8 root root 4096 Oct 28 15:05 jdk1.7.0_67 lrwxrwxrwx. 1 root root 21 Oct 28 15:05 latest -> /usr/java/jdk1.7.0_67 2.配置环境变量: vim /etc/profile.d/java.sh内容如下: export JAVA_HOME=/usr/java/latest export PATH=$JAVA_HOME/bin:$PATH 重读生效 . /etc/profile.d/java.sh 测试环境变量设置是否正确: [root@node1 ~]# java -version java version "1.7.0_67" Java(TM) SE Runtime Environment (build 1.7.0_67-b01) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode) 3.安装tomcat: [root@node1 ~]# tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local/ [root@node1 ~]# cd /usr/local/ [root@node1 local]# ln -sv apache-tomcat-8.0.23/ tomcat ‘tomcat’ -> ‘apache-tomcat-8.0.23/’ [root@node1 local]# cd tomcat/ [root@node1 tomcat]# ls bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work Tomcat的目录结构解释: bin: 脚本及启动时用到的类 lib: 类库 conf: 配置文件 logs: 日志文件 webapps: 应用程序默认部署目录 work:工作目录,所有转换过程---例如JSP--->class--->java temp:临时文件目录 配置文件: [root@node1 conf]# pwd /usr/local/tomcat/conf [root@node1 conf]# ls Catalina catalina.properties logging.properties tomcat-users.xml web.xml catalina.policy context.xml server.xml tomcat-users.xsd server.xml: 主配置文件 context.xml:每个webapp都可以有专用的配置文件,这些配置文件通常位于webapp应用程序目录下的WEB-INF目录中,用于定义会话管理器、JDBC等;conf/context.xml是为各webapp提供默认配置; web.xml:每个webapp“部署”之后才能被访问;此文件则用于为所有的webapp提供默认部署相关的配置; tomcat-users.xml:用户认证的账号和密码配置文件; catalina.policy:当使用-security选项启动tomcat实例时会读取此配置文件来实现其安全运行策略; catalina.properties:Java属性的定义文件,用于设定类加载器路径等,以及一些JVM性能相关的调优参数 4.配置tomcat环境变量: vim /etc/profile.d/catalina.sh内容如下: export CATALINA_HOME=/usr/local/tomcat export PATH=$CATALINA_HOME/bin:$PATH 重读生效: . /etc/profile.d/catalina.sh 查看环境变量配置是否正确: [root@node1 tomcat]# . /etc/profile.d/catalina.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/java/latest Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Server version: Apache Tomcat/8.0.23 Server built: May 19 2015 14:58:38 UTC Server number: 8.0.23.0 OS Name: Linux OS Version: 3.10.0-229.el7.x86_64 Architecture: amd64 JVM Version: 1.7.0_67-b01 JVM Vendor: Oracle Corporation 5.启动tomcat [root@node1 ~]# 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/java/latest Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. 查看端口占用了8080和8009,8009端口提供ajp协议,是一种二进制协议,用于apache在前端使用ajp与tomcat交互 [root@node1 ~]# ss -tnlp | grep java LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:((java",3599,63)) LISTEN 0 100 :::8009 :::* users:((java",3599,48)) LISTEN 0 100 :::8080 :::* users:((java",3599,43)) 访问测试: 下面的页面默认放在webapps/ROOT/ 目录下
启用Server-status,Manage APP,Host Manager三个功能: 编辑/usr/local/apache-tomcat-8.0.23/conf/tomcat-users.xml 增加如下内容 <role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/> 重启tomcat catalina.sh stop catalina.sh start
测试:
status:
如果使用yum安装tomcat,默认没有上面的管理页面,需要额外安装tomcat-admin-webapps
[root@node1 ~]# yum list all | grep tomcat pki-tps-tomcat.noarch 10.1.2-7.el7 CD tomcat.noarch 7.0.54-1.el7 CD tomcat-admin-webapps.noarch 7.0.54-1.el7 CD tomcat-docs-webapp.noarch 7.0.54-1.el7 CD tomcat-el-2.2-api.noarch 7.0.54-1.el7 CD tomcat-javadoc.noarch 7.0.54-1.el7 CD tomcat-jsp-2.2-api.noarch 7.0.54-1.el7 CD tomcat-jsvc.noarch 7.0.54-1.el7 CD tomcat-lib.noarch 7.0.54-1.el7 CD tomcat-servlet-3.0-api.noarch 7.0.54-1.el7 CD tomcat-webapps.noarch 7.0.54-1.el7 CD tomcatjss.noarch 7.1.0-5.el7 CD
生产环境中部署java应用程序时最好使用普通用户,这里测试环境就用root了
我们看一下webapps目录下的应用程序目录组织结构---这些组织结构是特定的 [root@node1 webapps]# pwd /usr/local/apache-tomcat-8.0.23/webapps [root@node1 webapps]# tree manager/ manager/ ├── images │ ├── add.gif │ ├── asf-logo.gif │ ├── code.gif │ ├── design.gif │ ├── docs.gif │ ├── fix.gif │ ├── tomcat.gif │ ├── update.gif │ └── void.gif ├── index.jsp ├── META-INF │ └── context.xml ├── status.xsd ├── WEB-INF │ ├── jsp │ │ ├── 401.jsp │ │ ├── 403.jsp │ │ ├── 404.jsp │ │ ├── connectorCiphers.jsp │ │ ├── sessionDetail.jsp │ │ └── sessionsList.jsp │ └── web.xml └── xform.xsl Java WebAPP 组织结构: 有特定的组织形式、层次型的目录结构;主要包含了servlet代码文件、JSP页面文件、类文件、部署描述符文件等; /usr/local/tomcat/webapps/app1/ /: webapp的根目录; WEB-INF/:当前webapp的私有资源目录,通常存放当前webapp自用的web.xml; META-INF/:当前webapp的私有资源目录,通常存放当前webapp自用的context.xml; classes/: 此webapp的私有类; lib/: 此webapp的私有类,被打包为jar格式类; index.jsp:webapp的主页 webapp归档格式: .war:webapp; .jar:EJB的类; .rar:资源适配器; .ear:企业级应用程序; 示例:手动添加一个测试应用程序: 1、创建webapp特有的目录结构; mkdir -pv myapp/{lib,classes,WEB-INF,META-INF} #可以复制一个context.xml到某个应用程序的META-INF目录,这个配置文件专服务于此应用程序。以避免修改全局的配置文件造成全局影响 2、提供webapp各文件;myapp/index.jsp内容如下: <%@ page language="java" %> <%@ page import="java.util.*" %> <html> <head> <title>JSP Test Page</title> </head> <body> <% out.println("Hello, world."); %> </body> </html>
测试:
查案work目录,发现生成了java程序相关文件 [root@node1 apache-tomcat-8.0.23]# tree work work └── Catalina └── localhost ├── docs ├── examples ├── host-manager ├── manager ├── myapp │ └── org │ └── apache │ └── jsp │ ├── index_jsp.class │ └── index_jsp.java └── ROOT └── org └── apache └── jsp ├── index_jsp.class └── index_jsp.java 14 directories, 4 files cat work/Catalina/localhost/myapp/org/apache/jsp/index_jsp.java可以查看这些java代码 部署(deployment)webapp相关的操作: deploy:部署,将webapp的源文件旋转于目标目录、配置tomcat服务器能够基于context.xml文件中定义的路径来访问此webapp; 将其特有类通过class loader装载至tomcat; 有两种方式: 自动部署:auto deploy 手动部署: 1、冷部署:把webapp复制到指定位置,而后才启动tomcat; 2、热部署:在不停止tomcat的前提下进行的部分: 部署工具:manager、ant脚本、tcd(tomcat client deployer)等; undeploy:反部署,停止webapp,并从tomcat实例拆除其部分文件和部署名; stop:停止,不再向用户提供服务; start:启动处于“停止”状态的webapp; redeploy:重新部署; tomcat的主配置文件结构: <server attribute="value" attribute2="value"> <service> <connector /> <connector /> <engine > <host name=""> </host> <host name=""> </host> <host name=""> <context /> <context /> </host> </engine> </service> </server> 自定义Host及Context示例:编辑server.xml加入如下内容 <Host name="web1.lee.com" appBase="/data/webapps/" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="ROOT" reloadable="true"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="172\.16\.100\.100"/> </Context> <Context path="/shop" docBase="shopxx" reloadable="true" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs" prefix="web1_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
本文出自 “明天过后” 博客,请务必保留此出处http://leeyan.blog.51cto.com/8379003/1707385
原文:http://leeyan.blog.51cto.com/8379003/1707385