tomcat

tomcat是能够解析JSP的动态web-server。
官方网站:http://tomcat.apache.org/

由Apache、Sun 和其他一些公司及个人共同开发而成,所以最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现
servlet:server+applet服务器端的应用程序 解析JSP动态请求

Tomcat 技术先进、性能稳定,最重要的是免费

tomcat运行时需要有java环境
CentOS可以直接安装Java环境的。

yum install -y java
安装tomcat

tomcat有Windows版的,直接配置Java的环境变量直接就能双击启动了。

linux的就比较麻烦。

1、手动配置Java环境变量

[root@ks1 ~]# yum install java -y


[root@ks1 ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
能查但版本就是可以用了。

这个是直接安装的方法,如果jdk包被修改了下载的不能用,就要用jdk包安装,手动配置。
需要在/etc/profile设置环境变量

java环境变量

2、安装tomcat

下载下来的tomcat包解压到/opt目录

[root@ks1 ~]# tar -xf apache-tomcat-9.0.29.tar.gz -C /opt/

添加环境变量

[root@ks1 ~]# vim /etc/profile
export TOMCAT_HOME=/opt/apache-tomcat-9.0.29
export PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$PATH
[root@ks1 ~]# . /etc/profile
重加载配置文件

设置开机自启动

[root@ks1 ~]# vim /etc/rc.local
. /etc/profile
/opt/apache-tomcat-9.0.29/bin/startup.sh
然后赋权限
[root@ks1 ~]# chmod +x /etc/rc.d/rc.local

到这里就已经算是安装完了,测试页也能访问了。

但是Tomcat有3中工作模式:

【1】BIO
bio(blocking I/O),阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包),对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。

【2】NIO
nio是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包),基于缓冲区、并能提供非阻塞I/O操作的Java API实现,比传统的I/O处理方式(bio)有更高的并发运行性能。是Tomcat8的默认运行模式。

non-blocking IO 需要修改tomcat的配置文件

[root@tomcat1 /opt/apache-tomcat-9.0.29/conf]# vim server.xml 
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
	改为
	
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

【3】APR
apr(Apache Portable Runtime/Apache可移植运行库)是Apache HTTP服务器的支持库。从操作系统级别解决异步I/O问题,大幅度提高服务器的并发处理性能,也是Tomcat生产环境运行的首选方式。要tomcat支持apr,必须安装apr和native,这样tomcat才可以利用apache的apr接口,使用操作系统的部分本地操作,从而提升性能。

apache portable running apache可以直接的运行模式
最高效的

这几种模式可以通过日志文件查看是当前是什么模式。

其中APR是高效的但是并不在tomcat的原始包中,要安装额外的几个依赖包才会有。
APR的作用:https://blog.csdn.net/qq_32447301/article/details/80891414

(1)、apr
(2)、apr-util
(3)、tomcat-native.tar.gz(在Tomcat/bin下有相应的tar包)
APR等的地址:http://apr.apache.org/download.cgi

tomcat-native地址:http://tomcat.apache.org/download-native.cgi

安装几个工具包,比如gcc编译器等等

yum install openssl-devel gcc make expat-devel* -y

apr包:

[root@ks1 ~ ]# tar -xf apr-1.7.0.tar.gz
[root@ks1 ~ ]# cd apr-1.7.0
[root@ks1 apr-1.5.2]# ./configure --prefix=/usr/local/apr
//指定安装路径

[root@ks1 apr-1.5.2]# make  
[root@ks1 apr-1.5.2]# make install 

apr-util包:

[root@ks1 ~ ]# tar -xf apr-util-1.6.1.tar.gz
[root@ks1 ~ ]# cd apr-util-1.6.1
[root@ks1 apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/ 
//指定apr的路径

[root@ks1 apr-util-1.5.4]# make
[root@ks1 apr-util-1.5.4]# make install

tomcat-native包:这个包里都是一些类,有这些类才能调用apr的内容。

[root@ks1 ~ ]# tar zxf tomcat-native.tar.gz  //这个包就在tomcat包解压后的bin目录下。
[root@ks1 ~ ]# cd tomcat-native-1.2.23-src/native/
[root@ks1 native]# ./configure --with-ssl=/usr/bin --with-apr=/usr/local/apr/ --with-java-home=/etc/alternatives/java_sdk_1.8.0
//后边这个是java的环境变量JAVA_HOME要和echo $JAVA_HOME的一样

[root@ks1 native]# make
[root@ks1 native]# make install

注意:tomcat-native-1.2.23-src/native/,之前的版本要多一层目录jni,新的版本就没有jni直接就是native。反正最终的操作都在navite目录下。

然后在/opt/apache-tomcat-9.0.29/bin/catalina.sh文件中中加入一行:

就是和startup.sh同一个目录的。

249 if [ -z "$JSSE_OPTS" ] ; then
250   JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
251 fi
252 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
253 下边这个254行是添加了,后边的路径写apr的目录
254 JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"

//如果不加这一行的话就可能找不到apr的类库

然后修改/opt/apache-tomcat-9.0.29/conf文件中的protocol属性,讲后边的协议改成这个协议,将工作模式改成apr模式。

    <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

可以将apr的环境变量添加到/etc/profile中。

然后重新 启动tomcat服务就可以了。

查一下日志,在logs/catalina.out

27-Nov-2019 15:19:35.021 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/apache-tomcat-9.0.29/webapps/examples] has finished in [432] ms
27-Nov-2019 15:19:35.021 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/apache-tomcat-9.0.29/webapps/host-manager]
27-Nov-2019 15:19:35.068 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/apache-tomcat-9.0.29/webapps/host-manager] has finished in [47] ms
27-Nov-2019 15:19:35.074 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/apache-tomcat-9.0.29/webapps/manager]
27-Nov-2019 15:19:35.108 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/apache-tomcat-9.0.29/webapps/manager] has finished in [34] ms
27-Nov-2019 15:19:35.114 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"] 
//看到这个apr-8080就证明OK了。
27-Nov-2019 15:19:35.133 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [1,068] milliseconds

查看端口能看到3个端口

[root@localhost apache-tomcat-9.0.29]# netstat -antlup | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      13078/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      13078/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      12311/java  

输入IP和端口就能看到tomcat的测试页。Apr模式就OK了。

在这里插入图片描述

如果不行,检查环境变量,java 的环境变量,apr的环境变量tomcat的环境变量。看错误日志,是不是缺失类库,或者找不到什么包什么库。

还不行的话可以直接yum下载apr

yum install apr-devel -y

再重新启动服务,进行测试。

默认端口为:
8080:应用程序使用
8009:容器使用
8005:关闭tomcat时使用

tomcat的配置文件在安装路径的conf目录下。以.xml为结尾

【1】context.xml
tomcat的环境配置文件
定义了2个资源文件

	${catalina.base}/conf/web.xml
		||
	/opt/apache-tomcat-8.0.50/conf/web.xml


	WEB-INF/web.xml
		||
	/opt/apache-tomcat-8.0.50/webapps/ROOT/WEB-INF/web.xml

【2】web.xml
web应用程序的说明文件

【3】tomcat-users.xml
用户配置文件

【4】server.xml

主配置文件
<Server port="8005" shutdown="SHUTDOWN">
	整个配置文件的根元素

  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
	指定tomcat的端口,协议,连接的超时时间(ms),加密端口(?)
	connector是连接client与tomcat之间的连接器

    <Engine name="Catalina" defaultHost="localhost">
	为tomcat处理所有的请求,并且指定默认的虚拟主机是哪个

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
		name:访问的名字
		appBase:默认的访问路径
		unpackWARs:当tomcat处于运行状态,如果检测到有新的应用程序(war包)被加载,会自动解压
		autoDeploy:当tomcat处于运行状态,会自动发布新的web应用

        <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" />
			访问日志		
[root@tomcat1 /opt/apache-tomcat-8.0.50/logs]# less localhost_access_log.2019-11-26.txt
      </Host>
	  虚拟主机
    </Engine>
  </Service>
</Server>

修改端口信息:

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

修改8080 就好了

在这里插入图片描述
这个就是改成8081。

单实例,双war包
实例最简单的可以理解长tomcat,一个机器上一个tomcat就叫单实例。war包就是软件的项目,字节码文件等等。单实例双war包意思就是将2个软件项目部署在同一个tomcat下。

网站的前台 war包
网站的后台 war包

双实例,双war包
每个实例有一个war包,单机双实例,简单来说,一台机器,2个tomcat,每个tomcat一个war包

war包的部署可以直接拷贝到webapp这个目录下,直接将这个目录下所有的东西删掉就好了。不过名字要设置为ROOT,因为tomcat只认这个,有这个才能直接读取。否则的话就要输入目录名访问。

直接在webapp这个目录下就好,可以先将这个目录的内容全部删除在部署。

tomcat的目录结构:

[root@localhost apache-tomcat-9.0.29]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值