day046-tomcat与部署war包、jar包

发布于:2025-07-03 ⋅ 阅读:(24) ⋅ 点赞:(0)

0. 老男孩思想-追女生哲学

  • 只要自身能力不太差,只要对女生足够好,就能搞定你要追的女生。—老男孩

在这里插入图片描述

  • 把握主要矛盾,解决实际问题,不要玩思想游戏
  • 以实践为主,只要动手去做,很多问题不像想象的那么难,而且大多数还会迎刃而解🤔

1. java web中间件

java web中间件 说明 应用场景
tomcat 开源免费、轻量级、启动速度快、资源占用少 中小型web应用、开发测试环境
jetty 高性能、模块化设计,可嵌入到应用程序中;
适合高并发和低延迟场景,支持异步IO
嵌入式系统、微服务架构;
云原生应用(如kubernetes、Docker环境)
jboss 开源、提供企业级功能(如集群、事务管理) 复杂企业级应用;
金融、电信行业的大型分布式系统
weblogic 商业软件,功能全面(高可用、负载均衡、热部署);
稳定性强,但配置复杂,成本高
大型企业关键业务系统(如银行核心系统);
需要Oracle数据库深度集成的场景
国产:东方通(TongWeb) 国产中间件,符合国内安全及行业标准(如等保);
支持国产化软硬件生态(麒麟OS、龙芯CPU)
政府、军工、金融等对自主可控要求高的领域

2. jdk

  • [第一章 Java基础语法-CSDN博客](https://blog.csdn.net/qq_52174380/article/details/146149996?spm=1001.2014.3001.5501)

2.1 jdk、jre、jvm

在这里插入图片描述

2.2 jdk选型

jdk选型 说明
Oracle jdk 企业使用收费,个人测试免费
Openjdk 开源版本(yum、apt可以下载)
厂商jdk:华为-毕昇jdk
  • 经典版本:jdk8
  • LTS长期支持版本:jdk 11/17/21

3. tomcat

3.1 tomcat与jdk版本兼容关系

tomcat版本 jdk版本
tomcat 9 jdk8
tomcat 10 jdk11
tomcat 11 jdk17

3.2 安装jdk

3.2.1 安装Oracle jdk(通过rpm安装)

  • 地址:[Java Downloads | Oracle](https://www.oracle.com/java/technologies/downloads/#java8)

在这里插入图片描述

  • 下载后上传到kylin,并安装
[root@web03 ~]# rpm -ivh jdk-8u441-linux-x64.rpm 
警告:jdk-8u441-linux-x64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ad986da3: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:jdk-1.8-2000:1.8.0_441-7         ################################# [100%]
[root@web03 ~]# java -version
java version "1.8.0_441"
Java(TM) SE Runtime Environment (build 1.8.0_441-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.441-b07, mixed mode)

3.2.2 安装openjdk(通过yum下载)

yum list |grep openjdk
yum install -y java-11-openjdk java-11-openjdk-devel

3.3 安装tomcat

3.3.1 下载tomcat压缩包

  • tomcat 10官方下载地址:[Apache Tomcat® - Apache Tomcat 10 Software Downloads](https://tomcat.apache.org/download-10.cgi)

在这里插入图片描述

  • 上传到kylin,并解压;可以创建软链接
  • 检查tomcat版本信息:
[root@web03 /app/tools/apache-tomcat-10.1.42/bin]# ./version.sh 
Using CATALINA_BASE:   /app/tools/apache-tomcat-10.1.42
Using CATALINA_HOME:   /app/tools/apache-tomcat-10.1.42
Using CATALINA_TMPDIR: /app/tools/apache-tomcat-10.1.42/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /app/tools/apache-tomcat-10.1.42/bin/bootstrap.jar:/app/tools/apache-tomcat-10.1.42/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Server version: Apache Tomcat/10.1.42
Server built:   Jun 5 2025 22:35:46 UTC
Server number:  10.1.42.0
OS Name:        Linux
OS Version:     4.19.90-52.22.v2207.ky10.x86_64
Architecture:   amd64
JVM Version:    11.0.27+6
JVM Vendor:     BiSheng

3.3.2 启动tomcat,并检查端口和进程

[root@web03 /app/tools/apache-tomcat-10.1.42/bin]# ./startup.sh 
Using CATALINA_BASE:   /app/tools/apache-tomcat-10.1.42
Using CATALINA_HOME:   /app/tools/apache-tomcat-10.1.42
Using CATALINA_TMPDIR: /app/tools/apache-tomcat-10.1.42/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /app/tools/apache-tomcat-10.1.42/bin/bootstrap.jar:/app/tools/apache-tomcat-10.1.42/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@web03 /app/tools/apache-tomcat-10.1.42/bin]# ss -lntup |grep 8080
tcp    LISTEN  0       100                        *:8080                *:*      users:(("java",pid=7841,fd=45))                                        
[root@web03 /app/tools/apache-tomcat-10.1.42/bin]# ps -ef|grep [t]omcat
root        7841       1 14 19:03 pts/0    00:00:03 /usr/bin/java -Djava.util.logging.config.file=/app/tools/apache-tomcat-10.1.42/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dsun.io.useCanonCaches=false -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -classpath /app/tools/apache-tomcat-10.1.42/bin/bootstrap.jar:/app/tools/apache-tomcat-10.1.42/bin/tomcat-juli.jar -Dcatalina.base=/app/tools/apache-tomcat-10.1.42 -Dcatalina.home=/app/tools/apache-tomcat-10.1.42 -Djava.io.tmpdir=/app/tools/apache-tomcat-10.1.42/temp org.apache.catalina.startup.Bootstrap start

3.3.3 浏览器访问

在这里插入图片描述

3.4 tomcat目录

目录 文件 说明
bin tomcat的管理脚本 catalina.sh是Tomcat 的主控制脚本,与JVM优化有关
conf server.xml:主要配置文件
logging.properties:日志功能配置文件
lib 存放依赖的目录 存放jar包
logs catalina.out:应用日志,业务日志;
access*.log:访问日志
业务/应用日志关键词:
error、failed、exception……
webapps 站点目录
work 加载JVM中的文件信息

3.5 配置systemctl管理tomcat

  • systemctl管理其他服务的本质,是配置了服务的service文件:/usr/lib/systemd/system
service配置文件 说明
[Unit] 说明信息以及依赖信息
[Service] 指定服务的启动命令(脚本、命令)、关闭命令、重启命令;
Type类型定义了服务的进程启动类型,它直接影响 systemd 如何管理服务进程的生命周期、依赖关系和日志收集。
[Install] 指定服务的运行级别
multi-user.target(多用户命令行模式)
[root@web03 /usr/lib/systemd/system]# cat tomcat.service 
# /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat  java web container 
After=network.target 

[Service]
Type=forking
#EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/app/tools/tomcat/bin/startup.sh
ExecStop=/app/tools/tomcat/bin/shutdown.sh


[Install]
WantedBy=multi-user.target

# 重新加载systemctl配置
[root@web03 /usr/lib/systemd/system]# systemctl daemon-reload 
# 把之前的tomcat关闭
[root@web03 /usr/lib/systemd/system]# pkill java
[root@web03 /usr/lib/systemd/system]# ps -ef |grep java
root        8143    1345  0 19:28 pts/0    00:00:00 grep --color=auto java
[root@web03 /usr/lib/systemd/system]# ss -lntup |grep 8080
# 使用系统服务管理工具启动tomcat
[root@web03 /usr/lib/systemd/system]# systemctl start tomcat.service 
[root@web03 /usr/lib/systemd/system]# ss -lntup |grep 8080
tcp     LISTEN   0        100                    *:8080                *:*       users:(("java",pid=8183,fd=46))   

3.6 部署war包

  • war包是java web应用程序,需要tomcat运行
  • jar包是独立运行的java应用程序,由java程序执行即可

  • 上传memtest.war至tomcat的站点目录下:webapps;tomcat会自动解压,生成memtest目录
  • memtest.war 链接: https://pan.baidu.com/s/1OYpGCWhqpB3X1Cz5cprpkQ?pwd=bvyv 提取码: bvyv

在这里插入图片描述

在这里插入图片描述

  • 需要在浏览器中指定路径和文件名:memifo.jsp,进行访问

在这里插入图片描述

4. 部署jar包-nginxWebUI

  • 测试jar包文件:nginxWebUI;nginxWebUI-3.4.0.jar 链接: https://pan.baidu.com/s/1FT-_QdHsxVGhz7QZCMrfHQ?pwd=fifk 提取码: fifk

4.1 前台运行

# 定义字符集,避免乱码
# 定义端口号
# 指定jar包目录
[root@web03 /app/jar]# java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/jar/

在这里插入图片描述

  • 出现应用程序的logo,表示启动成功

在这里插入图片描述

4.2 后台运行

[root@web03 /app/jar]# nohup java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/jar/ &
[1] 8576
[root@web03 /app/jar]# nohup: 忽略输入并把输出追加到'nohup.out'

4.3 设置为开机自启动

4.3.1 方法1:修改服务自启动系统配置文件

  • 路径:/etc/rc.d/rc.local
  • 该文件要有执行权限
[root@web03 ~]# tail -n 1 /etc/rc.d/rc.local
nohup java -jar -Dfile.encoding=UTF-8 /app/jar/nginxWebUI-3.4.0.jar --server.port=8848 > /app/jar/log/nginxWebUI.log 2>&1 &
[root@web03 ~]# chmod +x /etc/rc.d/rc.local
[root@web03 ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 578  72 19:54 /etc/rc.d/rc.local

4.3.2 方法2:书写jar包管理脚本并设置systemctl

  • 脚本:
#!/bin/bash
##############################################################
# File Name:nginxwebui.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:nginxWebUI管理脚本
##############################################################

# vars
service="/app/jar/nginxWebUI-3.4.0.jar"
choose=$1 
port=8848
log_file="/app/jar/log/nginxWebUI.log"
time=`date +%F_%T`
pid=`ps -ef |grep -w [n]ginxWebUI-3.4.0.jar |awk '{print $2}'`
# function
# 日志函数
function logmsg(){
	msg="$*"
	echo "$msg" >> ${log_file}

}
# 开启服务
function srv_start(){
	# jar包检查,文件不存在则退出
	# 检查是否在运行
	if [ -n "$pid" ];then
		msg="The program has been started [$time] $service"
		echo $msg
		logmsg $msg
	else
		nohup java -jar -Dfile.encoding=UTF-8 ${service} --server.port=${port} 2>&1 &
		if [ $? -eq 0 ];then
			logmsg start [OK] [$time] $service
		else
			logmsg start [Failed] [$time] $service
		fi
	fi
}
# 关闭服务
function srv_stop(){
	if [ -n "$pid" ];then
		kill $pid
		if [ $? -eq 0 ];then
			logmsg stop [OK] [$time] $service
		else
			logmsg stop [Failed] [$time] $service
		fi
	fi
}

# 重启服务
function srv_restart(){
	srv_stop
	sleep 1
	srv_start
	if [ $? -eq 0 ];then
		logmsg restart [OK] [$time] $service
	else
		logmsg restart [Failed] [$time] $service
	fi
}
# 查看服务状态
function srv_status(){
	pid_cnt=`ps -ef |grep -w [n]ginxWebUI-3.4.0.jar |awk '{print $2}' |wc -l`
	if [ ${pid_cnt} -ge 1 ];then
		msg="running [OK] [$pid] [$time] $service"
		echo $msg;
		logmsg $msg
	else
		msg="stopped [Failed] [$time] $service"
		echo $msg;
		logmsg $msg
	fi
}
# case语句
case "$choose" in
		start) srv_start ;;
		stop) srv_stop ;;
		restart) srv_restart ;;
		status) srv_status ;;
		*) echo input error
esac
  • 添加脚本执行权限:+x
  • 配置systemctl的service文件
[root@web03 /usr/lib/systemd/system]# cat nginxwebui.service
[Unit]
Description=ngx webui
After=network.target

[Service]
Type=forking
#EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/server/scripts/nginxwebui.sh start
ExecStop=/server/scripts/nginxwebui.sh stop

[Install]
WantedBy=multi-user.target

[root@web03 /usr/lib/systemd/system]# systemctl daemon-reload 

5. 部署zrlog

  • war包:zrlog-2.2.1-efbe9f9-release.war 链接: https://pan.baidu.com/s/1E0CwameLOy2zGw79x6ncVQ?pwd=jxs6 提取码: jxs6
  • 环境
    • web03:jdk+tomcat、zrlog代码
    • db01:mariadb数据库,需要配置数据库、用户名以及权限

5.1 web03

mv zrlog-2.2.1-efbe9f9-release.war zrlog.war
mv ~/zrlog.war /app/tools/tomcat/webapps/

5.2 db01

# 进入数据库
create database zrlog;
grant all on zrlog.* to 'zrlog'@'172.16.1.%' identified by '1';
select user,host from mysql.user;

5.3 测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6. 踩坑记录

1. 在/etc/rc.local配置的运行jar包没有开机自启动

  • 命令:nohup java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/jar/ &
  • 指定命令输出的日志,再次测试:nohup java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/jar/ > /app/jar/log/nginxWebUI.log 2>&1 &

在这里插入图片描述

  • Error: Unable to access jarfile nginxWebUI-3.4.0.jar
  • 使用jar包的绝对路径:nohup java -jar -Dfile.encoding=UTF-8 /app/jar/nginxWebUI-3.4.0.jar --server.port=8848 > /app/jar/log/nginxWebUI.log 2>&1 &

在这里插入图片描述

  • 自启动成功

7. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作


网站公告

今日签到

点亮在社区的每一天
去签到