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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 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端口,不知道这两者是否有关联

目录
相关文章
|
24天前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
47 3
|
8天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
22 2
|
19天前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
|
22天前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
108 1
|
1月前
|
消息中间件 分布式计算 Java
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
27 2
|
1月前
|
消息中间件 Java 大数据
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
62 2
|
30天前
|
负载均衡 算法 Java
java中nginx负载均衡配置
java中nginx负载均衡配置
36 0
|
28天前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
47 4
|
6天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
23 4
|
24天前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
49 1