源码安装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