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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【运维知识进阶篇】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 应用服务中间件
Tomcat的配置文件中有哪些关键的配置项,它们分别有什么作用?
日常开发中我们除了 web.xml 文件的配置,server.xml 文件也是 Tomcat 服务器的重要配置文件,本文内容详细介绍各个配置项的用法,结合业务场景来举例说明,让你更清楚各配置项的用法
|
23天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
29 3
|
2月前
|
应用服务中间件 Linux iOS开发
使用 setenv 配置文件管理 Tomcat 的自定义环境变量
【8月更文挑战第29天】通过在Tomcat安装目录的`bin`文件夹下创建`setenv.sh`或`setenv.bat`文件,可以轻松管理Tomcat的自定义环境变量。针对Linux/macOS系统,需编辑`setenv.sh`文件,如`export MY_CUSTOM_VAR=&quot;my custom value&quot;`;而在Windows系统中,则编辑`setenv.bat`,如`set MY_CUSTOM_VAR=my custom value`。
|
2月前
|
缓存 运维 应用服务中间件
运维系列.Nginx配置中的高级指令和流程控制
运维系列.Nginx配置中的高级指令和流程控制
37 1
|
2月前
|
运维 应用服务中间件 nginx
自动化运维的利剑:Ansible Role 打造标准化配置
【8月更文挑战第31天】在追求效率和稳定性的今天,自动化运维不再是奢侈品,而是必需品。Ansible Role,作为自动化配置管理的利器,它如何帮助我们实现标准化部署和维护?本文将通过一个简单示例,带你了解 Ansible Role 的魅力所在,并探讨其在现代 IT 架构中的应用价值。
|
2月前
|
弹性计算 运维 监控
通过阿里云OOS“快速设置”快速配置多地域运维任务
阿里云OOS的快速设置功能助力用户简便配置多地域运维任务,如云监控安装、配置收集与补丁扫描,定时开关机,周期性带宽升级,实现自动化管理,确保配置一致性,提升运维效率。
|
2月前
|
运维 安全 网络安全
自动化运维:使用Python脚本实现批量部署
【8月更文挑战第2天】在现代IT基础设施管理中,自动化运维成为提升效率、减少人为错误的关键。本文将通过一个实际的Python脚本示例,展示如何实现服务器的批量部署,包括环境准备、代码实现及执行过程。文章旨在为运维工程师提供一种简化日常任务的方法,同时强调安全性和可维护性的重要性。
|
Java 应用服务中间件
tomcat配置文件详解
tomcat配置文件详解
1758 0
|
网络协议 应用服务中间件 网络安全
|
应用服务中间件 数据安全/隐私保护
下一篇
无影云桌面