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

[经验分享] JVM之tomcat-安装配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-18 10:22:10 | 显示全部楼层 |阅读模式
JAVA包含4个独立且相关的技术:
  • JAVA程序设计语言(由sun公司的一个团队开发)
  • JAVA API(一类是由sun公司定义的规范( 只维持了很少一段时间),一类是由JAVA的规范开放组织定义的规范(受欢迎的))



JVM的种类:
  • Hotspot JVM(sun公司的)

    • JRE     JVM+java+SE API(java 运行时环境,实现java的运行)
    • JDK    java+API+JVM,还额外提供一些调试和监控工具等,是用于实现java开发的最小环境(java开发组件,实现java的开发编译及运行)

  • Open JDK

    • 开发+运行的开源实现


java应用领域的不同,java分为3类:
  • JAVA SE(Standard Edition,java的标准版,为中小型应用提供的类库)
  • JAVA EE(Enterprise  Edition,java的企业版)
  • JAVA ME(Mobile Edition,企业中用到的很少,一般用android或object C)


java开发的程序要在每一个用户的计算机上都能运行,由于早前对动态网站的迫切需要, 在这种情况下,java在它的类库 当中引入了一个applet(小程序),它能够让html的程序员在他们开发的页面中直接提供一个编译好的applet小程序,这时,只要客户端只要在浏览器中安装了jre插件的话,就能实现让applet在客户端执行,根据客户端本地的运行环境,能将执行结果通过结果显示给用户,由此,动态网页成为了现实。这称为客户端动态网页
        缺点:

                需要客户端配置jre,下载applet插件。对客户端造成了麻烦,需要打开权限允许远程客户端执行一些程序 ,提供jre环境,允许远程用户执行,假如一个恶意的用户开发了一个恶意程序 ,在服务器上的jvm中执行。会对jvm和系统造成危害,后来被cgi技术取代。


CGI协议(通用网关接口):
能够让用户访问某一种特定资源的时候,触发web服务器,让web服务器根据这种协议调用额外的进程来执行这段程序,然后将执行结果格式化成html文档在返回给web服务器,由web服务器在返回给客户端,这就叫CGI。


java的cgi(以java技术实现了cgi。javaAPI的另一种特殊规范):
    servlet:
            能够让用户接受http 请求,能够理解http协议,并且能够将 程序的执行结果以http格式封装起来 通过前端响应给客户端,增加了对http协议的处理能力,这样一来,就能理解http协议和html协议了。
有一个问题是,如果修改了网页源代码,那么需要重新编译。后来用mvc框架对程序分层。并且为了将java代码嵌套在html代码中,在servlet基础上引入了一个新的特殊类jsp。

JSP(Java Server Page,能够让程序猿以嵌入式代码的方式在html中来潜入java代码,从而实现基于java技术的动态网站开发):
    是servlet上的一个特殊类,主要是为了实现网页开发的。虽然可以嵌入了,但实现MVC还需要一步,SSH(structs spring hebernate )模版,开发JSP的一个非常重要的框架。

JSP要执行必须要先通过jasper转换成servlet,最后通过JVM执行,JSP运行性能要比php好得多,而且java比php成熟很多。一般来讲,大型应用,或者对性能有要求的应用都会使用jsp。比如淘宝,早期是php,后来都移植成了JSP。

jsp、servlet和jvm的关系:
jsp——>servlet——>jvm
jasper负责监控jsp内容的改变,并转换成servlet
JDK可以将servlet转换成.class



Servlet Container(包含了JDK又包含JDK本身所不具备的,又能让servlet本身工作起来的额外的组件)容器:
    负责接收CGI传递过来的请求,负责监控本地的java程序是否发生了修改。

    接受前端web服务器的交互,前端有一个web应用程序(负责接收用户的请求),一旦发现用户请求的是一个CGI的内容,开始执行servlet进程,在本地的JVM上执行。



Web Container(包含了web服务器、jasper,servlet相关技术的框架叫做web容器)


java虚拟机不像FastCGI一样为一个请求启动一个CGI进程,因为java启动一个CGI进程要比FastCGI的代价大很多,所以,java支持多线程,为每一个请求在JVM中启动一个线程来处理。

JVM的实现方式:

        1.一次性的解释器(解释字节码并执行,bytecode,解释的过程是将与平台无关的代码解释成与平台相关的代码)

                优点:节省内存,不对解释过的bytecode缓存。节省内存

                缺点:每一次执行都要重新解释一遍,速度慢

        2.即时编译器(将每一个运行的class文件解释成二进制文件,并缓存在内存中 )

                优点:运行速度快,只在第一次运行时解释。

                缺点:要牺牲更多的内存来缓存解释过的二进制。

        3.自适应编译器(内部有一个监控器,利用28原则来加速代码的执行。缓存20%左右的代码,提高80%左右的速度)


JDK的安装:

  • 安装jdk

1
2
3
[iyunv@localhost src]# tar -zxf jdk-8u60-linux-x64.tar.gz
[iyunv@localhost src]# mkdir -p /usr/local/java/
[iyunv@localhost src]# ln -s /usr/local/src/jdk1.8.0_60 /usr/local/java/jdk




2.设置环境变量
1
2
[iyunv@localhost src]# echo -e 'export JAVA_HOME=/usr/local/java/jdk/\nexport PATH=$PATH:$JAVA_HOME/bin' >>/etc/profile.d/java.sh
[iyunv@localhost src]# source /etc/profile.d/java.sh




3.验证
1
2
3
4
[iyunv@localhost src]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)



如果出现上面的提示,表示jdk已经安装完成

jdk常用命令:

sun  JDK监控和故障处理工具:
    jps(JVM Process Status Tool),显示系统内所有的Hotspot虚拟机进程的列表信息。

    jstat(JVM Statistics  Monitoring Tool),收集并显示Hotspot虚拟机个方面的运行数据。

    jinfo,显示正在运行的某Hotspot虚拟机配置信息

    jmap,生成某Hotspot虚拟机的内存转储快照。


可视化工具:
    jconsole:java的监控与管理控制台

    jvisualm:可视化监控工具,可查看配置。



web container(web容器):
实现了java ee所有api的一个应用程序,只要用户在开发的时候基于java ee的api所开发的应用程序就能在 web容器中部署并运行起来,这么一个应用程序就称为web容器。

常见的web容器:
    1.websphere

    2.weblogic

    3.oc4j

    4.jboss

    5.jonas

    6.geronimo

    7.glassfish

    8.tomcat

    9.risen


tomcat容器的组成:
    1.tomcat实例(server),可以直接响应http请求,每一个server称为是一个tomcat实例,启动一个tomcat就是启动一个server

    2.tomcat的服务(service),将多个connector关联至一个引擎上去的,一个service内部只能有一个引擎

    3.tomcat的引擎(engine),就是一个servlet container的实现。

    4.tomcat的主机(一个引擎内主机可以有多个,主机内部还可以有contaxt),用来在引擎内部实现虚拟主机的

    5.tomcat的上下文(context),主要功能就是用于定义类似于apache的路径别名。


connector的类型:
  • http

  • https
  • proxy
  • ajp



tomcat的集群部署方案:
tomcat本身自带web服务器,因为tomcat又要负责http的请求,又需要处理jsp请求,压力很大。在这种情况下,可以使用nginx或apache处理http请求。将动态请求转发给tomcat处理。这样大大的减轻了tomcat的压力。

    1.nginx反向代理+tomcat应用服务器

                将后端的tomcat服务器组通过nginx的upstream模块组合起来,通过负载算法将http协议的方式发往后方的tomcat应用服务器,效率低于apache的apj(二进制的)协议。

    2.apache反向代理+tomcat应用服务器

                通过apache的mod_proxy模块的专用apj(apache jserv protocol)协议的方式发往后端的tomcat应用服务器。


tomcat的安装:
1
2
[iyunv@localhost src]# tar -zxf apache-tomcat-8.0.27.tar.gz -C /usr/local/src/
[iyunv@localhost src]# ln -s /usr/local/src/apache-tomcat-8.0.27 /usr/local/java/tomcat



配置catalina环境变量:
1
2
[iyunv@localhost src]# echo -e 'export CATALINA_HOME=/usr/local/java/tomcat\nexport PATH=$PATH:$CATALINA_HOME/bin' >>/etc/profile.d/tomcat.sh
[iyunv@localhost src]# source /etc/profile.d/tomcat.sh



启动tomcat:
1
[iyunv@localhost src]# catalina.sh start




编辑tomcat的sysv的启动脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
vim /etc/init.d/tomcat
#!/bin/bash
# chkconfig 2345 96 14
# description:  The Apache Tomcat servlet/JSP container.
CATALINA_PID=/usr/local/java/tomcat/logs/tomcat.pid
JAVA_HOME=/usr/local/java/jdk
CATALINA_HOME=/usr/local/java/tomcat
export JAVA_HOME CATALINA_HOME

function restart()
{
    exec $CATALINA_HOME/bin/catalina.sh stop
    sleep 2
    exec $CATALINA_HOME/bin/catalina.sh start
}

case $1 in
restart)
    restart
    ;;
start)
    exec $CATALINA_HOME/bin/catalina.sh $*
    ;;
stop)
    exec $CATALINA_HOME/bin/catalina.sh $*
    ;;
*)
    echo "Usage: $0 |stop|start|restart"
    ;;
esac



1
2
chmod +x /etc/init.d/tomcat
chkconfig --add tomcat



tomcat的配置文件:
    1.server.xml:核心配置文件,遵循tomcat的组成部分配置

    2.tomcat-user.xml:定义用户认证的账号密码,基于realm用户认证的配置文件。

    3.web.xml:默认的应用程序部署(将一个web应用程序所依赖到的类装载进JVM)描述符。

    4.context.xml:为上下文提供的配置

    5.catalina.properties:定义应用程序自身属性的配置文件,比如:使用的内存大小,字符串缓冲池大小等等。

    6.logging.properties:定义日志相关的属性,比如:日志级别,日志路径等

    7.catalina.policy:定义tomcat自身的安全策略的,比如:哪些资源能被用户访问,哪些资源不能被用户访问,哪些可以被装载,哪些不能被装载等。




运维网声明 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-245715-1-1.html 上篇帖子: windows 安装tomcat 7 下篇帖子: eclipse下标签库缺失导致HTTP Status 500错误的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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