当前位置: 首页 > news >正文

day046-tomcat与部署war包、jar包

文章目录

  • 0. 老男孩思想-追女生哲学
  • 1. java web中间件
  • 2. jdk
    • 2.1 jdk、jre、jvm
    • 2.2 jdk选型
  • 3. tomcat
    • 3.1 tomcat与jdk版本兼容关系
    • 3.2 安装jdk
      • 3.2.1 安装Oracle jdk(通过rpm安装)
      • 3.2.2 安装openjdk(通过yum下载)
    • 3.3 安装tomcat
      • 3.3.1 下载tomcat压缩包
      • 3.3.2 启动tomcat,并检查端口和进程
      • 3.3.3 浏览器访问
    • 3.4 tomcat目录
    • 3.5 配置systemctl管理tomcat
    • 3.6 部署war包
  • 4. 部署jar包-nginxWebUI
    • 4.1 前台运行
    • 4.2 后台运行
    • 4.3 设置为开机自启动
      • 4.3.1 方法1:修改服务自启动系统配置文件
      • 4.3.2 方法2:书写jar包管理脚本并设置systemctl
  • 5. 部署zrlog
    • 5.1 web03
    • 5.2 db01
    • 5.3 测试
  • 6. 踩坑记录
    • 1. 在/etc/rc.local配置的运行jar包没有开机自启动
  • 7. 思维导图

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 9jdk8
tomcat 10jdk11
tomcat 11jdk17

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目录

目录文件说明
bintomcat的管理脚本catalina.sh是Tomcat 的主控制脚本,与JVM优化有关
confserver.xml:主要配置文件
logging.properties:日志功能配置文件
lib存放依赖的目录存放jar包
logscatalina.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" ];thenmsg="The program has been started [$time] $service"echo $msglogmsg $msgelsenohup java -jar -Dfile.encoding=UTF-8 ${service} --server.port=${port} 2>&1 &if [ $? -eq 0 ];thenlogmsg start [OK] [$time] $serviceelselogmsg start [Failed] [$time] $servicefifi
}
# 关闭服务
function srv_stop(){if [ -n "$pid" ];thenkill $pidif [ $? -eq 0 ];thenlogmsg stop [OK] [$time] $serviceelselogmsg stop [Failed] [$time] $servicefifi
}# 重启服务
function srv_restart(){srv_stopsleep 1srv_startif [ $? -eq 0 ];thenlogmsg restart [OK] [$time] $serviceelselogmsg restart [Failed] [$time] $servicefi
}
# 查看服务状态
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 ];thenmsg="running [OK] [$pid] [$time] $service"echo $msg;logmsg $msgelsemsg="stopped [Failed] [$time] $service"echo $msg;logmsg $msgfi
}
# case语句
case "$choose" instart) 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期-孙克旭」一起进行文档协作

http://www.lryc.cn/news/578883.html

相关文章:

  • java实现日志记录-注解方式
  • 使用哪种语言的人更容易通过面试?
  • 【Web前端】优化轮播图展示(源代码)
  • (一)大语言模型的关键技术<-AI大模型构建
  • 360安全卫士占用5037端口(ADB端口)解决方案
  • Wps开放平台v5升级v7上传实体文件踩坑(Java使用restTemplate)
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的场景零售创新研究
  • Mac电脑 卸载工具 App Cleaner
  • Java 大视界 -- Java 大数据在智能医疗健康管理中的慢性病风险预测与个性化干预(330)
  • 带GPU启动 Docker 容器
  • FAISS 简介及其与 GPT 的对接(RAG)
  • [CS创世SD NAND征文] 精准控制的坚固基石:CS创世SD NAND在华大HC32F4A0运动控制卡中的高可靠应用
  • 7月2日星期三今日早报简报微语报早读
  • Java AQS(AbstractQueuedSynchronizer)详解
  • 【前端】基础 - HTML基础标签和样式设置
  • Baumer工业相机堡盟工业相机如何实现高精度的硬件同步触发
  • 公用LCU屏的功能、应用场景
  • 微信小程序使用wx.chooseImage上传图片时进行压缩,并添加时间水印
  • 微信小程序入门实例_____打造你的专属单词速记小程序
  • PH热榜 | 2025-07-02
  • zabbix批量生成监控项教程!
  • Benchmarking in Go
  • 利器:NPM和YARN及其他
  • SQL Server 再进阶:类型多样性分析与时间维度扩展(第三课)
  • 解锁医疗AI密码:医疗人工智能专业大学四年学习路径
  • android核心技术摘要
  • 数论基础知识和模板
  • 香港券商交易系统开发与解决方案全景报告:云原生、跨境协同与高性能架构的创新实践
  • 【unitrix】 4.13 类型级加一计算(add1.rs)
  • 【GHS】Green Hills软件MULTI-IDE的安装教程