Tomcat详解及SNS系统的部署实现

前言:Tomcat是基于java研发的一个web容器,即web服务器,下面咱们先简单介绍下Java
html


一 、Javajava


一、Java简介
node


  Java是由Sun Micorsystems公司于1995年5月推出的Java面向对象程序设计语言(简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器使得Java被普遍应用起来。mysql


二、Java特色linux

  • Java语言是面向对象的语言,以数据为中心来组织程序的,包括数据+方法,方法存放于类中web

  • 自身具备API(应用程序编程接口)与ABI(应用程序二进制接口),强大的跨平台能力;sql

  • 动态站点(运行在服务器端和客户端);apache

  • Java平台兼容了大部分的操做系统,能够只编译一次,就能够在各类系统中运行;编程

  • 自带GC(内存垃圾收集),无需再向C那样使用时本身注册一段内存,完了还要本身释放。Java自身能够自动的释放内存,避免了内存释放错误vim

  • 多线程,适应于并行架构(多核心CPU),实现程序的高效执行


三、Java的组成部分

 -- Java编程语言

 -- Java类文件格式

 -- Java虚拟机

 -- Java应用程序接口(API)


  四者关系:Java编程语言+Java API编写出.java的源码文件;

            .java源码文件通过Java编译器Java Copmplier 进行编译生成.class(字节码文件)

            .class类文件经过类文件加载器加载,在Java虚拟机(JVM)上运行,同时可能会须要               一些类库


  JVM :

Java虚拟机(JVM)的组成部分
#Java class loader 类加载器
#Java 执行引擎(即执行环境)


wKiom1NtyleAUovJAABmVELCB_8942.jpg


JRE :Java Running Environment Java运行环境-----面向桌面级通常用户
      由JVM(Hotspot)+ JavaSE  API  
JDK: Java Development Kit  Java开发工具包
      Java程序设计语言
      工具及工具API
      JRE



四、Java体系



Java SE : Standard  Editon ,J2SE(之前称呼)
#支持面向桌面级应用,提供了完整的Java核心API
Java EE:Enterprise Edition, J2EE(之前称呼)
#支持使用多层架构的企业应用(如EJB,CRM等),包含了Java SE,并额外提供了大量的企业级类库
Java ME: Micro  Edition, J2ME (之前称呼)


   Java EE 创建在Java SE 基础之上,依赖Java SE工做

   Java EE 更适合解决大型软件系统设计中的问题,包含了多个API,Servlet和JSP就是其中两个  


Java EE 包含的其余的APIs
#EJB(Enterprise JavaBeans):JAVA相关的诸多高级功能的实现,如RMI(Remote Method Invocation), 对象/关系映射,跨越多个数据源的分布式事务等;
#JMS(Java Message Service):高性能异步消息服务,实现JAVA EE应用程序与非JAVA程序的“透明”通讯;
#JMX(Java Management Extensions):在程序运行时对其进行交互式监控和管理的机制;
#JTA(Java Transaction API):容许应用程序在自身的一个或多个组件中平滑地处理错误的机制;
#JavaMail:经过工业标准的POP/SMTP/IMAP协议发送和接收邮件的机制;
Java SE 包含的其余APIs:
#JNDI(Java Naming and Directory Interface):用于与LDAP服务交互的API;
#JAXP(Java API for XML Processing):用于分析及转换XML(基于XSLT实现);



5 Java 执行过程


wKiom1Ntzv-h0RWeAADwgdb9kTU394.jpg


#Java语言来编写源代码,把它编译成Java Class文件,而后在Java VM中运行class文件;当编写程序时,经过调用类(Java API)中的方法来访问系统资源,而当程序运行时,它经过调用class文件中实现了Java API的方法也知足程序的Java API调用。Java VM和Java API一块儿组成了一个“平台“,全部Java程序都在其上编译和运行,所以,它们有时也被称做Java运行时环境。Java VM的主要任务是装载class文件而且执行其中的字节码。Java VM包含一个类装载器(class loader),它能够从程序和API装载class文件;而Java API的类只在程序执行中须要时才会被装载。



六、Java EE 中的 Servlet 和 JSP




JSP是一种脚本语言,语法简单,能够方便的嵌入到HTML中
Servlet必须须要硬编码进html中
#JSP 就是为了简化Java和Servlet的使用难度,同时经过扩展JSP标签(TAG)提供网页动态执行的能力
JSP与Servlet的关系
#当Web服务器(或Servlet引擎,应用服务器)支持JSP引擎时,JSP引擎会照着JSP的语法,将JSP文件转换成Servlet代码源文件,接着Servlet会被编译成Java可执行字节码(bytecode),并以通常的Servlet方式载入执行
*.jsp文件 -jasper引擎-> *.java文件 -javac编译器-> .class (JVM运行)。


wKioL1Nt1qXAm9sfAACqzLbOldc874.jpg


#在不修改JSP页面的状况下,除了第一个客户访问JSP页面须要通过以上几个步骤外,之后访问该JSP页面的客户请求,直接发送给JSP对应的字节码程序处理,并将处理结果返回给客户,这种状况下,JSP页面既不须要启动服务器,以便从新加载修改后的JSP页面。



二 、Tomcat


一、简介

  Tomcat就是一个Java EE的不完整实现,是一个web容器,也能够成为web服务器。它只使用了Java EE附带的两个类库-----Servlet与JSP,(关于这两个类库什么关系上边咱们已经详述!),Tomcat服务器时Apache组织开发的一种JSP引擎,同时支持Servlet,自己就具备WEB服务器的功能,可是在WEB服务器方面Tomcat处理静态的HTML页面不如Apache迅速,也没有Apache健壮,因此咱们通常将Tomcat与Apache配合使用,让Apache处理静态页面的请求,Tomcat做为专门的JSP引擎,提供JSP解析。


二、常见的web容器



商业版:
Sun GlassFish Enterprise Server
Sun Java System Web Server
JBoss Enterprise Application Platform
WebLogic Application Server
Caucho's Resin Server
WebSphere Application Server
NetWeaver
非商业版:
Apache Tomcat
Apache Geronimo
GlassFish
JBoss Application Server
Jetty


三、Tomcat的体系结构


  •    顶级组件:位于配置层次的顶级,而且彼此有严格的对应滚戏(Server,Service)

  •    链接器:链接客户端(能够是浏览器或web服务器)请求至Servlet容器

  •    容器:包含一组其余组件,如Engine、Host、Context

  •    被嵌套的组件:位于一个容器当中,但不能包含其余组件(如Realm 领域、valve过滤认证       logger记录日志)        



顶级组件
#1 服务器(server):Tomcat的一个实例,一般一个JVM只能包含一个Tomcat实例;所以,一台服务器上能够在启动多个JVM的状况下每个JVM中启动一个Tomcat实例,每一个实例分属于一个独立管理端口。这是一个顶级组件
#2 服务(service):一个服务组件一般包含一个引擎和此引擎相关联的一个或多个链接器。给服务命名能够方便管理员在日志文件中识别不一样服务产生的日志。一个server能够包含多个service组件,但一般状况下只为一个service指派一个server
链接器类组件:
# 链接器(connectors):负责链接客户端(能够是浏览器或web服务器)请求至Servlet容器内的web应用程序,一般指的是接受客户发来请求的位置及服务器段分配的端口。默认端口一般是HTTP协议的8080,管理员能够根据本身的须要改变此端口。一个引擎能够链接多个链接器,但这些链接器必须使用不一样的端口。默认的链接器是HTTP/1.1的Coyote,同时Tomcat也支持AJP、JServ和JK2连机器。
容器类组件:
#(1)引擎(Engine):一般指Cataliana Servlet引擎,它检查每个请求的HTTP首部信息辨别此请求应该发往到哪一个host或context,并将请求处理后的结果发送给客户端。一个引擎能够包含多个主机组件。
#(2)主机(Host):主机组件相似于Apache的虚拟主机,但Tomcat只支持基于FQDN的虚拟主机。至少一个主机组件。
#(3)上下文(Context):Context组件式最内层组件,表明Web应用程序自己。配置一个Context最主要的就是指定Web应用程序的根目录,一遍Servlet容器能偶将用户请求发往正确的位置。Context组件也能够定义包含错误页,实现用户访问发生错误时提供友好的提示信息。
被嵌套类组件:
#(1)阀门(valve):能够定义在任何容器类的组件中,用来记录客户端请求/客户端IP地址和服务器等信息。
#(2)日志记录器(logger):能够用于除Context以外的任何容器中。记录日志
#(3)领域(Realm):用于用户的认证和受权


四、Tomcat链接器架构    


# 基于Apache做为Tomcat前段的架构来说,Apache经过mod_jk、mod_proxy模块与后端的Tomcat进行数据交换
apache与tomcat链接器通讯的模块有两个:
1) mod_jk  : apache/1.3,  apache/2.0
2) mod_proxy : apache/2.2+
Tomcat的http链接器
# 1)基于java的http/1.1链接器;
# 2)基于java的高性能NIO HTTP/1.1链接器
# 3)基于C/C++研发的Native APR HTTP/1.1链接器 (须要额外编译安装)
Tomcat的链接器协议
# 1)http
# 2)ajp
Tomcat的工做模式
# 1)单独模式
# 2)进程间配置
# 3) 独立/网络配置


五、 Tomcat的组织机构



<Server>      顶层元素,表明一个服务器
  <Service>  顶层元素,是Connector的集合,只有一个Engine
      <Connectior/>        链接器类元素,表明通讯接口
          <Engine>   容器类元素,为特定的Service组件处理全部客户请求,可包含多个Host
              <Host>    为特定的虚拟主机处理全部客户请求
                  <Context>     为特定的WEB应用处理全部客户请求
                  </Context>
              </Host>
          </Engine>
</Service>
</Server>


六、Tomcat的配置文件



Tomcat的配置文件默认存放在$CATALINA_HOME/conf目录中
#server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;
#web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为全部的Web应用程序提供包括MIME映射等默认配置信息;
#tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认状况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将经过编辑此文件实现;
#catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力;
#catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对经过类装载器装载的内容的控制;Tomcat在启动时会事先读取此文件的相关设置;
#logging.properties: Tomcat经过本身内部实现的JAVA日志记录器来记录操做相关的日志,此文件即为日志记录器相关的配置信息,能够用来定义日志记录的组件级别以及日志文件的存在位置等;
#context.xml:全部host的默认配置信息;



7 、安装Tomcat


   安装方式:1)rom包yum安装

             2)官网的二进制包安装

             3)源码包编译安装



下载:jdk-7u9-linux-x64.rpm
      apache-tomcat-7.0.42.tar.gz
jdk 环境的配置
1)安装jdk
# rpm -ivh jdk-7u9-linux-x64.rpm
2)配置环境变量
# vim  /etc/profile.d/java.sh
 exportJAVA_HOME=/usr/java/latest                                     
 export PATH=$JAVA_HOME/bin:$PATH 
# source /etc/profile.d/java.sh 重读配置文件
3)查看版本
# java -version


wKiom1Nt8hTgYTy3AACqYAgCUV0446.jpg



tomcat配置
1)解压,创建软链接
# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local
# cd /usr/local
# ln -sv apache-tomcat-7.0.42 tomcat
2)配置环境变量
# vim /etc/profile.d/tomcat.sh
 export  CATALINA_HOME=/usr/local/tomcat
 export  PATH=$CATALINA_HOME/bin:$PATH
# source /etc/profile.d/tomcat.sh
3) 提供tomcat脚本
# vim  /etc/rc.d/init.d/tomcat
 #!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
                                                                                                                                                                                                                                                                                                                                                                          
case $1 in
start)
  exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
  exec $CATALINA_HOME/bin/catalina.sh stop;;
restart)
  $CATALINA_HOME/bin/catalina.sh stop
  sleep 2
  exec $CATALINA_HOME/bin/catalina.sh start ;;
configtest)
  exec $CATALINA_HOME/bin/catalina.sh configtest ;;
*)
  exec $CATALINA_HOME/bin/catalina.sh * ;;
esac  
                                                                                                                                                                                                                                                                                                                                                                          
# chmod +x /etc/rc.d/init.d/tomcat
# chkconfig --add tomcat
# chkconfig tomcat on
# service tomcat start 启动服务
# ss -ntl | grep 8080  tomcat默认侦听的端口为8080
LISTEN     0      100                      :::8080


    web浏览器访问

wKiom1Nt9VfiygLJAALK0V705bI853.jpg

   Tomcat 目录文件


[root@node2 zxj]# cd /usr/local/tomcat/
[root@node2 tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work



#bin ——Tomcat执行脚本目录
#conf ——Tomcat配置文件
#lib ——Tomcat运行须要的库文件(JARS)
#logs ——Tomcat执行时的LOG文件
#temp ——Tomcat临时文件存放目录
#webapps ——Tomcat的主要Web发布目录(存放咱们本身的JSP,SERVLET,类)
#work ——Tomcat的工做目录,Tomcat将翻译JSP文件到的Java文件和class文件放在这里。



八、配置tomcat的 Server status 、Manager App、Host Manager


# cd  /usr/local/tomcat/conf
# vim tomcat-users.xml
 <role rolename="manager-gui"/>
 <role rolename="admin-gui"/>
 <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
# service tomcat restart


   Web浏览器测试

   Manager Status

wKiom1NuEALwpp1XAALdjrQUFhs234.jpg


  Manager APP ----能够管理web应用程序 wKioL1NuEAXjKiItAAJoh70Nrdg088.jpg

  Manager Host ---管理虚拟主机

wKiom1NuEHahJfx2AAIkrj6si7U127.jpg



九、Tomcat上部署程序



1)本机安装mysql服务器与mysql客户端
# yum -y install mysql-server mysql
  受权用户
#mysql> grant all on *.* to 'root'@'localhost' identified by '123456';
#mysql> flush privileges;



2)编辑server.xml配置文件,添加一个host和context
 # vim  /usr/local/tomcat/conf/server.xml
 <Host name="www.a.com" appBase="/www/webapps" unpackWARS="true" autoDeploy="true">
  <Context path="" docBase="ROOT" reloadable="true" />
                                                                                                                                                 
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="localhost_access_log." suffix=".txt"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 </Host>



3)配置web程序
# mkdir -pv /www/webapps/ROOT
下载JavaCenter_Home_2.0_GBK.tar.bz2
# tar xf JavaCenter_Home_2.0_GBK.tar.bz2
# cd JavaCenter_Home_2.0_GBK
# mv * /www/webapp/ROOT


  Web浏览器测试

http://www.a.com/install/

wKiom1NuE3rQhRx8AAFePnMu6og929.jpg

wKioL1NuE2XzwZZ1AAMgqwHDfb0117.jpg


 JavaCenter_Home程序部署成功!!!



PS:我的水平有限,若有疑问请留言,若有错误请及时指出.

相关文章
相关标签/搜索