【运维知识进阶篇】Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面+Tomcat部署zrlog博客项目)(上)

简介: 【运维知识进阶篇】Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面+Tomcat部署zrlog博客项目)

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


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


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

Tomcat快速安装

一、安装jdk

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

二、安装Tomcat(下载、解压、启动)

Tomcat官网:Apache Tomcat® - Welcome!

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

三、配置systemctl方式启动

1. [root@Web01 ~]# systemctl cat nginx            #模仿着写
2. # /usr/lib/systemd/system/nginx.service
3. [Unit]
4. Description=nginx - high performance web server
5. Documentation=http://nginx.org/en/docs/
6. After=network-online.target remote-fs.target nss-lookup.target
7. Wants=network-online.target
8. 
9. [Service]
10. Type=forking
11. PIDFile=/var/run/nginx.pid
12. ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
13. ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
14. ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"
15. 
16. [Install]
17. WantedBy=multi-user.target
18. 
19. 
20. cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
21. [Unit]
22. Description=Apache Tomcat Server
23. After=network.target remote-fs.target nss-lookup.target
24. 
25. [Service]
26. Type=forking
27. ExecStart=/soft/tomcat/bin/startup.sh
28. ExecStop=/soft/tomcat/bin/shutdown.sh
29. ExecRetart=/soft/tomcat/bin/shutdown.sh  && sleep2  && /soft/tomcat/bin/startup.sh
30. 
31. [Install]
32. WantedBy=multi-user.target
33. EOF
34. 
35. [root@Web01 ~]# systemctl daemon-reload    #加进配置文件后重载
36. [root@Web01 ~]# systemctl start tomcat
37. [root@Web01 ~]# netstat -tnulp|grep java
38. tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      38210/java          
39. tcp6       0      0 :::8080                 :::*                    LISTEN      38210/java          
40. [root@Web01 ~]# systemctl enable tomcat
41. Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.

Tomcat配置文件

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

Tomcat配置虚拟主机(与Nginx同理)

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

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

Tomcat HTTP请求过程

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

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

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

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

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

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

目录
相关文章
|
2天前
|
Java
解决IDEA打开java项目出现橙色j无法运行
解决IDEA打开java项目出现橙色j无法运行
4 0
|
5天前
|
Java 应用服务中间件 Docker
【Docker】部署启动java项目
【Docker】部署启动java项目
13 2
|
5天前
|
关系型数据库 MySQL Java
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
28 2
|
5天前
|
网络协议 Java 应用服务中间件
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
6 0
|
5天前
|
搜索推荐 前端开发 Java
java医院绩效考核管理系统项目源码
系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
9 0
|
6天前
|
前端开发 Java 测试技术
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
|
6天前
|
IDE JavaScript Java
如何配置tomcat
【4月更文挑战第15天】如何配置tomcat
14 2
|
11天前
|
JavaScript Java 测试技术
基于Java的同城蔬菜配送管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的同城蔬菜配送管理系统的设计与实现(源码+lw+部署文档+讲解等)
12 0
|
11天前
|
JavaScript Java 测试技术
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
28 0
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
|
11天前
|
JavaScript Java 测试技术
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)