q989 发表于 2018-11-29 10:26:14

Tomcat 部署实例

  Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照SunMicrosystems提供的技术规范,实现了对Servlet和JavaServerPage(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但是,不能将Tomcat 和 Apache Web 服务器混淆,Apache Web Server 是一个用 C 语言实现的 HTTP web server;这两个HTTP web server 不是捆绑在一起的。Apache Tomcat 包含了一个配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。
  

  java程序在JVM中运行的前提:加载器将程序自身使用的class和公共的java APIclass加载之后,通过执行引擎来运行;执行引擎需要跟主机上的系统调用进行交互;执行引擎可以调用Java的API,也可以调用系统的API,也称Native API(DSO,动态共享对象)
  


Java Runtime Data Areas
  http://blog.运维网.com/attachment/201310/225510197.png

  

  
method area;加载的公共class库中的class
heap;运行java线程的公共内存
Java stacks ;栈,每个java线程都有独有的栈,用于保存运行时的变量;
pc register;pc寄存器,或java 寄存器,线程所独有,用于保存当前线程执行的指令,指令计数器;
native method statck;本地方法栈,调用本地类库;
execution engine;所有的数据需要在执行引擎中运行;
native method interface;跟本地系统调用交互的接口;
native method libraries;本地方法库,系统调用;



Generations of Data in Garbage Collection


  http://blog.运维网.com/attachment/201310/225552829.png

Eden:新对象在Eden创建,过一段时间后,将不在使用的对象删除,正在使用的对象移动到Survivor;在幸存者区域里,继续使用的移动到老年代,不使用的移动到未使用空间;
Young:新生代
Tenured:老年代
Perm:持久代,方法区




Configuring the Heap and Garbage Collector
http://blog.运维网.com/attachment/201310/225634268.png
-Xmx:新生代和老年代最大可以使用的内存空间;
-Xms:当前可以使用的最小内存空间,除去预留空间,包含新生代和老年代使用的内存;
reserved:以后可以申请使用的空间;
applet:小的可运行程序,本身是一种API,applet在服务器端编译好,通过HTTP协议传送到客户端,客户端浏览器需要安装java插件(JRE)来运行这种applet;


servlet:另一种class,程序员开发好的程序在服务器端第一次执行时被编译成java类,类在JVM中执行;但它不能把结果直接响应给客户端,前端需要有HTTP服务器来分析客户请求的报文。


JSP:jsp是servlet的升级版,java开发的程序能够像php一样,利用代码嵌入的方式,放到网页文件里面,只需事先加入标签即可;有了jsp之后,前端是一个jsp分析器(jasper),当用户请求含有jsp代码的页面时,应用程序将jsp代码发送给jasper,jasper将代码转换成servlet类,再由编译器进行编译,servlet被编译成java类,JVM调用公共类,然后在JVM中运行,将生成的结果发送给http服务器,由http服务器构建响应报文;包含jasper和servlet等其他工具容器称为web容器,web容器通常可以使用内部的java类或公共类组件提供http服务,能够分析http请求,并构建响应报文。tomcat是一个完整意义上的web容器,但不是J2EE的实现;
JavaSE包含了Java二进制程序(如JVM和Java字节码编译器)和Java的核心代码库;
JaveEE标准包含了一组适用于创建企业级Web应用程序的API。Jave EE建立在Java SE的基础上,并依赖于JavaSE才能正常工作。当然,任何级别的应用程序均能从Java EE中获益,但Jave EE却更适合解决大型软件系统设计中的问题。
JAVAEE包含多个独立的API,Servlet和JSP就是其中的两个,而JAVA EE中著名的API中还包含如下的几个:
JAVA EEAPIs:
EJB(Enterprise JavaBeans):JAVA相关的诸多高级功能的实现,如RMI(Remote Method Invocation),对象/关系映射,跨越多个数据源的分布式事务等;
JMS(Java MessageService):高性能异步消息服务,实现JAVA EE应用程序与非JAVA程序的“透明”通信;
JMX(Java ManagementExtensions):在程序运行时对其进行交互式监控和管理的机制;
JTA(Java TransactionAPI):允许应用程序在自身的一个或多个组件中平滑地处理错误的机制;
JavaMail:通过工业标准的POP/SMTP/IMAP协议发送和接收邮件的机制;


http://blog.运维网.com/attachment/201310/233156691.png




安装tomcat:
首先安装JDK (开发工具):
jdk下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
# chmod +x jdk-6u31-linux-x64-rpm.bin
#./jdk-6u31-linux-x64-rpm.bin
安装目录在/usr/java/latest
导出环境变量:
# vi /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
测试一下:
# java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
(mixed mode,编译和即时执行都支持)  

  

安装tomcat程序:
下载地址:http://tomcat.apache.org/download-70.cgi
# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
# cd /usr/local/
# ln -sv apache-tomcat-7.0.42 tomcat
`tomcat' -> `apache-tomcat-7.0.42'
# cd tomcat/
# ls
binconflibLICENSElogsNOTICERELEASE-NOTESRUNNING.txttempwebappswork
# tomcat运行需要2个变量
# vi /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
# . /etc/profile.d/tomcat.sh
# catalina.sh -h
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
Usage: catalina.sh ( commands ... )
commands:
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?
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined
启动tomcat:
# catalina.sh start
#默认监听8080端口;  安装成功后效果:
http://blog.运维网.com/attachment/201310/230501850.png
  

tomcat启动脚本:
vi /etc/init.d/tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
exec $CATALINA_HOME/bin/catalina.sh $*
# chkconfig --add tomcat
# chkconfig tomcat on
# service tomcat stop
env: /etc/init.d/tomcat: Permission denied
# chmod +x /etc/init.d/tomcat
# service tomcat stop
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
# service tomcat 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配置文件目录:
/usr/local/tomcat/conf
# web.xml:部署描述符定义文件
# tomcat-users.xml:用户授权信息
# server.xml:主配置文件
# jps命令用以显示正在运行的虚拟机;  

一个tomcat实例可以有多个servlet容器,当外部请求从connector进来之后,送到与该connector关联的某个引擎上,connector需要通过service与引擎进行交互,引擎内部的host提供虚拟主机服务。
Java程序要运行需要class loader把程序使用的类以及公共类加载进JVM;


部署(deployment):手动通知tomcat把程序用到的各种类加载完毕,通过部署描述符文件定义程序可以识别的MIME类型以及其他组件属性,每个jsp的源程序不能直接执行,需要在第一次被访问时进行编译或部署的时候被编译,当源文件修改后,还需要重新编译,tomcat可以配置为自动部署。在引擎内部的host组件中有context子组件,用以描述需要单独部署的访问路径;
在server.xml中的Listener用来监听组件之间通信的通道;
    global naming resources;全局命名资源,用以定义认证信息等


应用程序目录结构:
/WEB-INF 此目录为私有资源目录,其内部的所有文件和子目录均不能被公开访问;包含着此Web应用程序的配置文件web.xml(程序结构描述符文件)通常放置于此目录;
/WEB-INF/classes 当前Web应用程序的类文件的存在目录;
/WEB-INF/lib 可被打包为JAR格式的类文件通常放置于此目录;
  

# 修改访问tomcat的默认端口和状态页面:
# cd /usr/local/tomcat/conf
# vi server.xml


# 定义用户
# cd /usr/local/tomcat/conf
# vi tomcat-users.xml




  

定义一个虚拟主机:
  

  
# cd /usr/local/tomcat/conf
# vi server.xml
# 在
页: [1]
查看完整版本: Tomcat 部署实例