tomcat

tomcat

tomcat介绍

  Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由java语言编写,需要运行在jvm虚拟机中。之所以Java的应用领域非常广泛,就是因为有JVM虚拟机的存在,如何操作系统或内核上只要运行了JVM虚拟机,那么就能够运行Java程序。Tomcat中提供了servlet、jsp代码所需的类库

  JVM由C语言开发实现,既为Java程序提供运行环境,也提供诸多类库

  Java技术的方向:J2SE、J2EE(在J2SE基础上添加了企业级组件)

  servlet在JVM之上实现了CGI协议,扩展了JDK,因此能够通过CGI协议响应用户的请求,servlet是服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的HTML页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机

jsp风格的代码使得Java程序可以嵌入到HTML页面中

http://www.cnblogs.com/zhouyuqin/p/5143121.html

  Java的JDK有两种,一是openJDK,另外一个是oracleJDK

tomcat原理及作用

web容器的作用

  servlet(小程序)没有main方法,那我们如何启动一个servlet,如何结束一个servlet,如何寻找一个servlet等等,都受控于另一个java应用,这个应用我们就称之为web容器。

  我们最常见的tomcat就是这样一个容器。如果web服务器应用得到一个指向某个servlet的请求,此时服务器不是把servlet交给servlet本身,而是交给部署该servlet的容器。要有容器向servlet提供http请求和响应,而且要由容器调用servlet的方法,如doPost或者doGet。

servlet需要由web容器来管理,那么采取这种机制有什么好处呢?

通信支持

利用容器提供的方法,你可以简单的实现servlet与web服务器的对话。否则你就要自己建立server搜创可贴,监听端口,创建新的流等等一系列复杂的操作。而容器的存在就帮我们封装这一系列复杂的操作。使我们能够专注于servlet中的业务逻辑的实现。

生命周期管理

容器负责servlet的整个生命周期。如何加载类,实例化和初始化servlet,调用servlet方法,并使servlet实例能够被垃圾回收。有了容器,我们就不用花精力去考虑这些资源管理垃圾回收之类的事情。

多线程支持

容器会自动为接收的每个servlet请求创建一个新的java线程,servlet运行完之后,容器会自动结束这个线程。

声明式实现安全

利用容器,可以使用xml部署描述文件来配置安全性,而不必将其硬编码到servlet中。

jsp支持

容器将jsp翻译成java!

tomcat搭建

rpm包安装

  Tomcat RPM安装(先安装JDK + 再安装Tomcat

1:升级系统自带的JDK(也可以使用oracle的JDK)

yum install -y java-1.8.0-openjdk-devel

安装好了可使用 java -version

2:由于Java开发的程序都需要运行在Java环境,因此一般只要是Java开发的程序,在安装JDK的同时,也需要将Java虚拟机导出到环境变量JAVA_HOME中,Java的虚拟机程序:/usr/bin/java

vi /etc/profile.d/java.sh 添加

export JAVA_HOME=/usr/bin

执行操作:

./etc/profile.d/java.sh

3:Tomcat相关程序介绍
tomcat.noarch: Servlet/JSP 引擎

tomcat-lib.noarch:Tomcat运行所依赖的库

tomcat-admin-webapps.noarch:web 应用程序的管理工具,可以在web页面管理APP

tomcat-webapps.noarch:应用程序示例,可以通过8080端口访问web页面
安装上述程序包 (对于RPM包安装的Tomcat而言,Tomcat的应用默认在/var/lib/tomcat/webapps目录下)

yum install -y tomcat.noarch tomcat-lib.noarch tomcat-admin-webapps.noarch tomcat-webapps.noarch

启动Tomcat(一般在生成环境中,使用普通用户启动Tomcat,因此需要修改Tomcat安装目录的属主和catalina.sh的属主为tomcat用户即可)

systemctl start tomcat.service

访问Tomcat的web页面

http://192.168.43.10:8080

tomcat编译安装

安装开发环境

yum -y groupinstall "Development Tools" "Development Libraries"

apache-tomcat-8.0.35.tar.gz下载地址:

http://tomcat.apache.org/download-80.cgi

tomcat-native.tar.gz 下载地址:

http://down.51cto.com/data/487154

jdk-6u30-linux-i586.bin下载地址:

http://down.51cto.com/data/487130

使用 tar -zxf 解压到 /usr/local/

  tar -zxf jdk-6u30-linux-i586.bin.tar.gz  /usr/local/

然后创建软链接

ln -sv  /jdk-6u30-linux-i586.bin  /usr/local/jdk 

最后设置一下环境变量:

[root@localhost ~]# cat /etc/profile.d/java.sh

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

执行一下:

  source /etc/profile.d/java.sh

解压到/usr/local

tar -zxf tomcat-native.tar.gz /usr/local

创建一个软链接

ln -sv  apache-tomcat tomcat 

查看

export CATALINA_HOME=/usr/local/tomcat    



echo $CATALINA_HOME

启动tamcat

bin/catalina.sh start

下载二级制包

wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz

2:解压,且创建连接文件

tar -zxf apache-tomcat-8.0.47.tar.gz -C /usr/local
ln -s /usr/local/apache-tomcat-8.0.47 /usr/local/tomcat

3:编辑/etc/profile.d/tomcat.sh文件,导出CATALINA_BASE(Tomcat的工作目录)境变量
vi /etc/profile.d/tomcat.sh 添加:

CATALINA_BASE=/usr/local/tomcat 
#(CATALINA_BASE是tomcat引用实例的工作目录)
PATH=$CATALINA_BASE/bin:$PATH
export PATH CATALINA_BASE

4:启动Tomcat

catalina.sh start

5:访问Tomcat的web页面

http://192.168.43.11:8080

总结:其实呢编译安装tomcat无非就是
apache-tomcatJDK下载,然后解压,然后启动并查看服务的端口(netstat -lntup )

tomcat配置

/etc/tolmcat/Server.xml详解

# 这是service类
<Service name="Catalina">
 
# 这是http连接器,响应用户请求
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
 
# 这是ajp连接器,响应用户请求
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
 
# 这是Engine,解析用户请求,请求指定默认的虚拟主机为localhost
<Engine name="Catalina" defaultHost="localhost">
 
<Realm className="org.apache.catalina.realm.LockOutRealm">
 
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
 
# 这是默认的虚拟主机localhost
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
 
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
 
# 这里是第一个自定义的虚拟主机
<Host name="www.uplooking.com" appBase="/app/java"
unpackWARs="true" autoDeploy="true">
</Host>
 
# 这里是第二个自定义的虚拟主机
<Host name="www.home.com" appBase="/app/home"
unpackWARs="true" autoDeploy="true">
 
# 这里是用来定义虚拟主机的日志的,通常而言,日志格式需要格式化输出,使得tomcat的日志与httpd的日志一样,可以放在ELK中进行处理
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="uplooking_log" suffix=".log" pattern="%h %l %u %t %r %s %b %D %{Cookie}i %{User-Agent}i %{a}r/>
 
# 这里的Context组件中定义的path路径就相当于一个URI的映射,访问的目录为/data/app,这里需要注意的是在/data/app目录中,不能把资源放在ROOT目录下,只能放在/data/app目录下。也就是说浏览器访问的URL为:192.168.43.10:8080/app,访问文件系统上的资源是/data/app目录下的资源
<Context path="/app" docBase="/data/app" reloadable="true">
 
# 这里指定了访问控制的规则,deny表示拒绝访问

<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192.168.23.2"/>
</Context>
</Host>
 
</Engine>
</Service>
</Server>

解决tomcat登录需要给角色授权

1:编辑/usr/local/tomcat/conf/tomcat-users.xml文件,在没有注 释的内容中添加:

 <role rolename="manager-gui" />
 <user username="tomcat" password="tomcat" roles="manager-gui" />

2:停止Tomcat应用,在启动Tomcat应用

catalina.sh stop
catalina.sh start

3:再次访问http://192.168.43.11:8080,且点击Manager App按钮,输入tomcat用户名,输入tomcat密码,即可登入

原文地址:https://www.cnblogs.com/liu1026/p/11346096.html