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

[经验分享] Tomcat 部署实例

[复制链接]

尚未签到

发表于 2018-11-29 10:26:14 | 显示全部楼层 |阅读模式
    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

-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
[root@node2 ~]# chmod +x jdk-6u31-linux-x64-rpm.bin
[root@node2 ~]#  ./jdk-6u31-linux-x64-rpm.bin
安装目录在/usr/java/latest
导出环境变量:
[root@node2 ~]# vi /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
测试一下:
[root@node2 ~]# 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
[root@node2 ~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
[root@node2 ~]# cd /usr/local/
[root@node2 src]# ln -sv apache-tomcat-7.0.42 tomcat
`tomcat' -> `apache-tomcat-7.0.42'
[root@node2 src]# cd tomcat/
[root@node2 tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
# tomcat运行需要2个变量
[root@node2 tomcat]# vi /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
[root@node2 tomcat]# . /etc/profile.d/tomcat.sh
[root@node2 local]# 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:
[root@node2 local]# catalina.sh start
#默认监听8080端口;  安装成功后效果:

  

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 $*
[root@node2 local]# chkconfig --add tomcat
[root@node2 local]# chkconfig tomcat on
[root@node2 local]# service tomcat stop
env: /etc/init.d/tomcat: Permission denied
[root@node2 local]# chmod +x /etc/init.d/tomcat
[root@node2 local]# 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
[root@node2 local]# 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的默认端口和状态页面:
[root@node2 conf]# cd /usr/local/tomcat/conf
[root@node2 conf]# vi server.xml


# 定义用户
[root@node2 conf]# cd /usr/local/tomcat/conf
[root@node2 conf]# vi tomcat-users.xml




  

定义一个虚拟主机:
  

  
[root@node2 conf]# cd /usr/local/tomcat/conf
[root@node2 conf]# vi 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-641068-1-1.html 上篇帖子: CentOS 7 Tomcat服务的安装与配置 下篇帖子: centos下安装tomcat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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