Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面)

目录

1.Java环境简单介绍

2.Tomcat快速安装

[3.Tomcat HTTP请求过程](#3.Tomcat HTTP请求过程)

4.Tomcat管理页面


这篇文章给大家讲解Tomcat快速入门,Tomcat和Nginx类似,都是WEB服务器软件,只不过Tomcat是基于JAVA开发的WEB服务,主要解析JAVA代码。

Nginx仅支持静态资源解析,而Tomcat支持Java开发的web应用,还支持解析静态资源(效率不高)Nginx适合做前端负载均衡,而Tomcat适合做后端应用服务处理。通常清空下企业种会使用Nginx+Tomcat结合,Nginx处理静态资源,Tomcat处理动态资源。

1.Java环境简单介绍

JVM介绍:Java业务都是运行在Java虚拟机上,Java虚拟机简称为JVM,虚拟机是通过软件模拟出具有完整硬件系统的功能

为什么Java需要JVM虚拟机?

早期C语言,不支持跨平台,如果C语言想要在Windows Linux Mac上运行,需要进行分别编译,那么在Linux上有很多优秀的软件,如果需要在Windows上使用需要重新编译,移植性差。

而Java则不同,Java是可以跨平台,只需要将源码进行一次编译,能够在不同的操作系统运行。

Java是如何做到的?

它只需要在Windows Linux系统上运行一个JVM,这样我们就能将Java编译好的war包在Windows和Linux平台运行起来,无需我们重复编译,而JVM是由JRE提供的

Java环境种JRE和JDK的区别?

JRE是Java的运行环境,包含JVM

JDK是Java的开发环境,包含Java的运行环境JRE

如果说单纯的运行环境Java代码,只需要JRE足够,但是如果需要提供开发环境以及运行环境则需要JDK。

2.Tomcat快速安装

(1)安装jdk

yum -y install java
或者上传rpm包
rpm -ivh jdk-8u181-linux-x64.rpm

(2)安装Tomcat(下载,解压,启动)

#可以在官网直接下载也可以在windows下载后导入
[root@Web01 ~]# rz -E
rz waiting to receive.
[root@Web01 ~]# mkdir /soft
[root@Web01 ~]# tar xf apache-tomcat-9.0.73.tar.gz -C /soft/
#做软连接一方面是方便调用,一方面是如果升级,直接重新挂下软连接即可
[root@Web01 ~]# ln -s /soft/apache-tomcat-9.0.73/ /soft/tomcat   
[root@Web01 ~]# /soft/tomcat/bin/startup.sh     #启动
#8080对外提供服务的端口,8005关闭Tomcat端口
[root@Web01 ~]# netstat -tnulp|grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      36724/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      36724/java  
[root@Web01 ~]# /soft/tomcat/bin/shutdown.sh    #停止

(3)配置sysrenctl方式启动

[root@Web01 ~]# systemctl cat nginx            #模仿着写
# /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
 
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"
 
[Install]
WantedBy=multi-user.target
 
 
cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRetart=/soft/tomcat/bin/shutdown.sh  && sleep2  && /soft/tomcat/bin/startup.sh
 
[Install]
WantedBy=multi-user.target
EOF
 
[root@Web01 ~]# systemctl daemon-reload    #加进配置文件后重载
[root@Web01 ~]# systemctl start tomcat
[root@Web01 ~]# netstat -tnulp|grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      38210/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      38210/java          
[root@Web01 ~]# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.

(4)Tomcat配置文件

tomcat软件目录结构
bin		        ---主要包含启动和关闭tomcat的脚本(启停java脚本依赖jar包文件)
conf		    ---tomcat配置文件的目录(站点配置:server.xml)
lib		        ---tomcat运行时需要加载的jar包
logs		    ---tomcat日志存放位置
temp		    ---tomcat临时存放文件路径
webapps		    ---tomcat默认站点目录
work		    ---tomcat运行时产生的缓存文件
[root@Web01 ~]# vim /soft/tomcat/conf/server.xml    #配置文件
[root@Web01 ~]# sed -i '/<!--/,/-->/d' /soft/tomcat/conf/server.xml     #删除注释行

(5)Tomcat配置虚拟主机(同nginx一样)

[root@Web01 ~]# cat /soft/tomcat/conf/server.xml
......    #添加下面内容到默认host下面
      <Host name="test.boss.org"  appBase="/code/tomcat/test"
            unpackWARs="true" autoDeploy="true">
 
 
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="test" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
      </Host>
......
[root@Web01 ~]# systemctl restart tomcat
[root@Web01 ~]# mkdir -p /code/tomcat/test/ROOT
[root@Web01 ~]# echo 'test:boss' > /code/tomcat/test/ROOT/index.html

本地解析hosts,浏览器访问:test.boss.org:8080

3.Tomcat HTTP请求过程

用户发出一个请求,如http://test.boss.org:8080/index.jsp

Connector发现是http/1.1协议,而且还是8080端口,于是就把请求接收后交给符合条件的Engine

Engine通过请求中的主机名test.boss.org查找满足条件的虚拟主机(Host)

找到后就去此虚拟主机指定的appBase(代码存放的目录)最后将解析产生的结果返回给用户。

Tomcat中的Context与Nginx中的location定义的路径效果类似,也与alias类似。

location /files/ {
    alias /var/www/myfiles/;
}

[root@Web01 ~]# cat /soft/tomcat/conf/server.xml
......
      </Host>
      <Host name="test.boss.org"  appBase="/code/tomcat/test" #appBase与docBase前面部分需要保持一致
            unpackWARs="true" autoDeploy="true">
<!--访问test.koten.org:8080/tt这个url,会获取/code/tomcat/test/tt中页面的资源-->
	<Context docBase="/code/tomcat/test/tt" path="/tt" reloadable="true" />
 
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="test" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
      </Host>
......
[root@Web01 ~]# systemctl restart tomcat
[root@Web01 ~]# mkdir /code/tomcat/test/tt
[root@Web01 ~]# echo 'test:tt' > /code/tomcat/test/tt/index.html    #注意这里不需要ROOT目录
 
#经测试,先创建tt目录重启后会显示8005端口,不先创建tt目录,虽然也可以看,但是不显示8005端口,不知道这两者是否有关联

访问界面:http://test.boss.org:8080/tt/

4.Tomcat管理页面

Tomcat自带的管理页面有管理功能和监控功能

(1)所有的管理页面,都将权限赋予了角色,而角色的名称是固定的:manager-gui,admin-gui

(2)需要添加一个用户,将用户捆绑至对应的角色,这样用户就可以访问到对应的管理页面

[root@Web01 ~]# vim /soft/tomcat/conf/tomcat-users.xml
......
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>
</tomcat-users>

(3)由于项目默认允许127.0.0.1访问,所以配置好了角色和用户也无法正常访问

将127改成10

[root@Web01 ~]# cat /soft/tomcat/webapps/host-manager/META-INF/context.xml |grep 10
         allow="10\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
[root@Web01 ~]# cat /soft/tomcat/webapps/manager/META-INF/context.xml |grep 10
         allow="10\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

可以查看服务器的状态.

在上面也可以进行一些部署

可以开启、停止、添加部署的虚拟主机

相关推荐
奇偶变不变1 分钟前
RTOS之事件集
java·linux·jvm·单片机·算法
阿松のblog3 分钟前
pyQt5实现页面切换操作
开发语言·qt
小馒头学python4 分钟前
【期末大作业】使用Python熟练掌握面向对象
开发语言·python·课程设计
Rossy Yan4 分钟前
【C++面向对象——类的多态性与虚函数】计算图像面积(头歌实践教学平台习题)【合集】
开发语言·c++·多态·面向对象·虚函数·头歌实践教学平台
MavenTalk23 分钟前
如何使用Python进行音频片断合成
开发语言·python·音视频·pico2wave·gtts·synthesizer
谁在夜里看海.28 分钟前
【Linux】深入理解进程信号机制:信号的产生、捕获与阻塞
linux·运维·服务器
G_whang29 分钟前
centos7 下使用 Docker Compose
运维·docker·容器
Jelena技术达人39 分钟前
利用Python爬虫获取微店商品详情API接口的深入指南
开发语言·爬虫·python
m0_748233361 小时前
后端接口返回文件流,前端下载(java+vue)
java·前端·vue.js
刘Java1 小时前
Dubbo 3.x源码(26)—Dubbo服务引用源码(9)应用级服务发现订阅refreshServiceDiscoveryInvoker
java·dubbo·dubbo源码