tomcat与web服务器

web服务器java

文章目录

Java Web 中间件是介于 Java Web 应用程序与底层操作系统、硬件之间的一类软件,主要用于解决分布式系统中的通信、资源共享、服务治理、高可用等问题,简化开发并提升系统性能与稳定性。以下是 Java Web 生态中常见的中间件类型及典型产品

选型

java web 中间件 说明
tomcat 轻量级应用服务器,组件丰富、功能多,支持 Servlet、JSP 规范,是 Java Web 开发中最常用的容器之一,适合中小型 Web 应用部署。
jetty 精简型、可嵌入式的应用服务器,启动速度快,资源占用低,常用于开发环境(如 IDE 内置服务器)或需要嵌入到其他系统的场景。
jboss 红帽旗下的开源应用服务器(现名 WildFly),支持完整的 Java EE(Jakarta EE)规范(如 EJB、JPA 等),适合复杂企业级应用。
...... 代表还有其他未列举的 Java Web 中间件,如 GlassFish(Java EE 参考实现服务器)等。
weblogic 商业级应用服务器,由 Oracle 开发,常与 Oracle 数据库配合使用,适用于大型企业级的复杂业务系统,具备高可靠性和扩展性。
国产:东方通 (TongWEB) 国产企业级 Java EE 应用服务器,适配国内企业信息化场景,满足国产化、自主可控的需求,在政务、金融等领域有广泛应用。
直接运行 此处为待补充内容,可能指无需额外容器、可直接运行的 Java Web 应用模式(如 Spring Boot 应用可内嵌服务器直接运行)。

jdk-jre-jvm

JDK(Java Development Kit,Java 开发工具包)

  • 定义 :是 Java开发 的完整工具包,包含 JRE + 开发工具(如javac编译器、jdb调试器、jar打包工具等)
  • 作用 :如果需要编写、编译、调试Java 程序,必须安装 JDK。
  • 包含关系JDK = JRE + 开发工具

JRE(Java Runtime Environment,Java 运行时环境)

  • 定义 :是运行 Java 程序的最小环境 ,包含 JVM + Java 核心类库(如java.langjava.util等) + 运行时资源
  • 作用 :如果只需要运行 已有的 Java 程序(如.jar包),安装 JRE 即可。
  • 包含关系JRE = JVM + 核心类库 + 运行时资源

JVM(Java Virtual Machine,Java 虚拟机)

  • 定义 :是运行 Java 字节码(.class文件)的 "虚拟计算机",负责将字节码翻译成操作系统可执行的机器码。

  • 作用实现 Java"一次编写,到处运行" 的跨平台特性。例如,同一份字节码,在 Windows、Linux、Mac 的 JVM 上都能运行。

  • 特点 :是 Java 程序运行的核心执行环境,但仅能运行字节码,无法直接编译 Java 源代码。

  • OOM 是 Out Of Memory 的缩写,即 "内存溢出",是 Java 程序运行时常见的严重错误(java.lang.OutOfMemoryError)。当 JVM 无法为新的对象分配内存,且垃圾回收器(GC)也无法释放足够内存时,就会抛出 OOM 错误。

总结

  • 开发 Java 程序:需安装JDK (用javac编译源代码,生成字节码后,由 JRE 中的 JVM 运行)。
  • 仅运行 Java 程序:安装JRE即可(JRE 中的 JVM 负责执行字节码)。
  • 字节码的跨平台执行:依赖JVM的底层适配。

通过这个层次关系,就能清晰区分三者的定位 ------JVM 是执行核心,JRE 是运行环境,JDK 是开发套件。

jdk选型

jdk 选型 说明 补充
jdk(oracle jdk) 商业版 JDK,企业使用需付费,个人测试免费 JDK 8 的 202 之前版本免费,211 及之后版本企业使用收费
openjdk 开源版本,可通过yum/apt等包管理器直接安装 与 Oracle JDK 功能高度兼容,是开源生态核心,免费且合规
厂商 jdk(华为 毕昇 jdk) 由厂商基于 OpenJDK 定制,需根据厂商特性选择 适配特定硬件(如鲲鹏芯片)或业务场景,提供本地化技术支持
  • 经典jdk版本是jdk8
  • jdk 11 17 21
bash 复制代码
LTS 长期支持版本
Java SE 21(LTS)
Java SE 17(LTS)
Java SE 11(LTS)
  • 具体使用哪个jdk版本
  • 根据代码要求

东方通:国产中间件领军企业

基本定位

东方通是中国领先的中间件平台技术专业厂商 ,成立于 1992 年,2014 年在创业板上市 (股票代码:300379.SZ),是国产中间件市场的开拓者和领导者,多年保持国内厂商市场份额第一。

核心产品:Tong 系列中间件

  1. TongWeb(应用服务器)

核心定位:全面符合 Java EE/Jakarta EE 标准的企业级应用服务器,是 Tomcat 的国产化替代首选。东方通

核心特点

  • 完整支持 Servlet、JSP、EJB 等 Java EE 全栈规范(Tomcat 仅支持 Servlet 容器)
  • 内置高可靠性机制(集群、热部署、Failover),实现 "零宕机" 服务
  • 全面安全防护(身份验证、授权管理、国密 SSL、等保 2.0 四级合规)
  • 云原生支持:容器化部署、K8S 集群环境运行、动态弹性扩展
  • 性能优异:部分指标已达 Oracle WebLogic、IBM WebSphere 水平
  1. 其他核心产品
  • TongLINK/Q:消息中间件,解决系统间可靠通信、数据传输问题东方龙马
  • TongESB:企业服务总线,实现系统集成与服务治理东方通
  • TongRDS:分布式数据缓存中间件,提升数据访问性能
  • TongHttpServer:高性能 HTTP 服务器,可作为 Web 服务器或负载均衡器

东方通部署

东方通TongWeb7下载指南分享:东方通TongWeb7下载指南欢迎使用东方通TongWeb7!本资源提供了企业级Linux与Windows平台的下载指引,帮助您便捷地获取这一关键的企业服务中间件 - AtomGit | GitCode

bash 复制代码

东方通 vs tomcat

对比维度 东方通 TongWeb Tomcat
定位 全功能企业级应用服务器 Servlet/JSP 容器(基础 Web 容器)
规范支持 完整 Java EE/Jakarta EE 标准 仅 Servlet/JSP 部分标准
企业级特性 内置事务处理、EJB、集群、高可用 需额外集成其他组件实现
管理能力 多域集中管理、监控、热部署 管理功能相对简单
安全特性 全面安全防护(等保认证) 基础安全功能,需额外配置
信创适配 已完成与国产芯片 (鲲鹏 / 龙芯)、操作系统 (麒麟 / 统信) 的适配认证 无原生信创支持,需定制改造
商业模式 商业许可,提供专业技术支持 开源免费,社区支持为主

tomcat部署

检查防火墙是否关闭

shell 复制代码
#检查
systemctl status firewalld
#停止防火墙
systemctl stop firewalld
#设置开机不自启
systemctl disable firewalld

安装部署openjdk-21

下载jdk版本网址

bash 复制代码
#rocky系统自带java-1.8.0,需要卸载
rpm -e --nodeps $(rpm -qa | grep -E 'java-1.8.0-openjdk')
----------------------------------------------------------
wget https://download.java.net/java/GA/jdk21.0.1/415e3f918a1f4062a0074a2794853d0d/12/GPL/openjdk-21.0.1_linux-x64_bin.tar.gz

#解压jdk21
tar -xvf openjdk-21.0.1_linux-x64_bin.tar.gz
mv jdk-21.0.1 /usr/local/jdk21

#设置环境变量
vim /etc/profile
------------------------------------
export JAVA_HOME=/usr/local/jdk21
export PATH=$PATH:$JAVA_HOME/bin
----------------------------------------
source /etc/profile

java -version
[root@kylin-v10-shf ~]#java -version
openjdk version "21.0.1" 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)

安装java

shell 复制代码
#安装java
yum install -y java
#检查安装是否成功
rpm -qa | grep openjdk
java-11-openjdk-headless-11.0.27.6-1.p01.ky10.x86_64
java-11-openjdk-11.0.27.6-1.p01.ky10.x86_64
#检查jdk版本
java --version
[root@kylin-shf ~]# java --version
openjdk 11.0.27 2025-04-15
OpenJDK Runtime Environment BiSheng (build 11.0.27+6)
OpenJDK 64-Bit Server VM BiSheng (build 11.0.27+6, mixed mode, sharing)

部署tomcat

下载tomcat二进制包到家目录

下载tomcat包

shell 复制代码
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.111/bin/apache-tomcat-9.0.111.tar.gz
#没有wget,用yum安装wget
yum install -y wget

存放解压内容

创建/app/tools/目录存放解压后的内容

shell 复制代码
#创建/app/tools/目录
mkdir -p /app/tools/
#压缩包apache-tomcat-9.0.109.tar.gz 解压到/app/tools/下
tar -xvf apache-tomcat-9.0.111.tar.gz -C /app/tools/
#进入/app/tools/目录下
cd /app/tools/
#递归修改apache-tomcat-9.0.109目录下所有者为root.root 
chown root.root -R /app/tools/apache-tomcat-9.0.111

ubt系统
chown root:root -R /app/tools/apache-tomcat-9.0.111

#创建软连接
ln -s /app/tools/apache-tomcat-9.0.11 /app/tools/tomcat
#检查软连接
file tomcat
tomcat: symbolic link to /app/tools/apache-tomcat-9.0.109

检查tomcat和jdk是否ok

shell 复制代码
#检查tomcat和jdk是否ok
[root@kylin-shf ~]# /app/tools/tomcat/bin/version.sh 
shell 复制代码
#检查当前端口使用情况
[root@kylin-shf ~]# ss -lntup
Netid    State     Recv-Q    Send-Q        Local Address:Port          Peer Address:Port    Process                              
udp      UNCONN    0         0                 127.0.0.1:323                0.0.0.0:*        users:(("chronyd",pid=763,fd=6))    
udp      UNCONN    0         0                     [::1]:323                   [::]:*        users:(("chronyd",pid=763,fd=7))    
tcp      LISTEN    0         128                 0.0.0.0:52113              0.0.0.0:*        users:(("sshd",pid=844,fd=4))       
tcp      LISTEN    0         128                    [::]:52113                 [::]:*        users:(("sshd",pid=844,fd=5))       
tcp      LISTEN    0         128                       *:23                       *:*        users:(("systemd",pid=1,fd=44))

启动tomcat

shell 复制代码
#启动tomcat,会使用8080,8005端口
[root@kylin-shf ~]# /app/tools/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /app/tools/tomcat
Using CATALINA_HOME:   /app/tools/tomcat
Using CATALINA_TMPDIR: /app/tools/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
#检查进程java进程
[root@kylin-shf ~]# ps -ef | grep java
root        1736       1  2 15:41 pts/1    00:00:02 /usr/bin/java -Djava.util.logging.config.file=/app/tools/tomcat/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 -Dignore.endorsed.dirs= -classpath /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/app/tools/tomcat -Dcatalina.home=/app/tools/tomcat -Djava.io.tmpdir=/app/tools/tomcat/temp org.apache.catalina.startup.Bootstrap start
root        1780    1414  0 15:43 pts/1    00:00:00 grep --color java
#检查端口 java端口 8080
ss -lntup

访问

浏览器 htto://10.0.0.200:8080

虚拟机IP

成功

关闭tomcat

shell 复制代码
[root@kylin-shf ~]# /app/tools/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /app/tools/tomcat
Using CATALINA_HOME:   /app/tools/tomcat
Using CATALINA_TMPDIR: /app/tools/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=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
#检查端口,没有8080就是关闭成功了
ss -lntup | grep 8080
#检查进程java
ps -ef | grep java

配置系统服务

shell 复制代码
vim /usr/lib/systemd/system/tomcat.service

----------------------------------------------
[Unit]
Description=tomcat 9.0 by song
After=network.target

[Service]
Type=forking
ExecStart=/app/tools/tomcat/bin/startup.sh
ExecStop=/app/tools/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
---------------------------------------------
systemctl daemon-reload
systemctl enable --now tomcat
查看进程和端口,服务
ps -ef | java
ss -lnutp
systemctl status tomcat

手动配置java环境的
-------------------------------------------------
cat >/usr/lib/systemd/system/tomcat.service<<EOF
[Unit]
Description=tomcat 9.0 by song
After=network.target

[Service]
Type=forking
Environment="JRE_HOME=/usr/local/jdk21"
Environment="JAVA_HOME=/usr/local/jdk21"
ExecStart=/app/tools/tomcat/bin/startup.sh
ExecStop=/app/tools/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
EOF
--------------------------------------------

手动设置jdk-21,配置system文件
vim /usr/lib/systemd/system/tomcat.service
-----------------------------------------------
[Unit]
Description=tomcat 9.0 by song
After=network.target

[Service]
Type=forking
Environment="JRE_HOME=/usr/local/jdk21"
Environment="JAVA_HOME=/usr/local/jdk21"
ExecStart=/app/tools/tomcat/bin/startup.sh
ExecStop=/app/tools/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
-------------------------------------------

删除

sh 复制代码
#停止服务
systemctl stop tomcat
#删除tomcat配置文件

tomcat目录

目录 / 文件 功能说明
bin 存放 Tomcat 的可执行脚本,如启动脚本startup.sh/startup.bat、停止脚本shutdown.sh/shutdown.bat,还有catalina.sh等核心控制脚本。
conf 存放 Tomcat 的配置文件,包括:- server.xml(服务核心配置,如端口、连接器、引擎等);- web.xml(Web 应用全局配置,如 Servlet 映射、MIME 类型等);- context.xml(数据源、资源链接等上下文配置);- tomcat-users.xml(用户认证与权限配置,用于管理控制台登录)。
lib 存放 Tomcat 运行所需的 Java 类库(JAR 包),包括 Tomcat 自身的 API、依赖库以及支持 JSP、Servlet 的相关类库。
logs 存放 Tomcat 的日志文件,如:- catalina.out(主要运行日志,记录启动、运行、错误信息);- localhost.log(本地主机应用日志);- manager.log(管理控制台日志)等。
webapps 存放部署的 Web 应用程序,以 WAR 包或解压后的文件夹形式存在。Tomcat 启动时会自动加载该目录下的应用。
temp 存放 Tomcat 运行过程中生成的临时文件,如编译后的 JSP 临时文件、文件上传临时存储等,重启 Tomcat 时会自动清理(非关键文件)。
work 存放 JSP 编译后的 Java 字节码文件(.class)和 Servlet 类文件,JSP 第一次访问时会被编译到该目录,后续直接加载编译后的类。
LICENSE Tomcat 的开源许可证(Apache License),说明软件的使用、分发规则。
NOTICE 列出 Tomcat 所依赖的第三方组件及版权声明。
README.md Tomcat 的简要介绍、功能概述和快速启动指南。
RELEASE-NOTES 版本发布说明,记录各版本的新特性、 bug 修复、兼容性变更等。
RUNNING.txt 详细的运行指南,包括启动前准备、运行模式、配置建议等。

java业务如何部署

一般业务代码部署流程

war包与jar包的区别

类型 全称 核心用途 部署步骤 依赖环境
JAR Java Archive 用于封装通用 Java 类库 (工具类、第三方依赖)或可独立运行的 Java 程序(如 Spring Boot 应用)。 直接执行java -jar xxx.jar(若为可执行 JAR,需在 MANIFEST.MF 中指定主类)。 JRE/JDK 即可
WAR Web Application Archive 专门用于部署Java Web 应用(包含 Servlet、JSP、HTML、CSS 等 Web 组件),需依赖 Web 容器(如 Tomcat)运行。 将 WAR 包放入 Web 容器的webapps目录,启动容器后自动解压并运行。 需安装 Web 容器(如 Tomcat)

简单来说:JAR 是通用 Java 包,可独立运行或作为库;WAR 是 Web 专属包,必须靠 Web 容器运行

启动jar包命令参数

参数 / 命令 位置 作用说明 适用场景
java 开头 调用 Java 虚拟机(JVM),启动 Java 程序的核心命令。 前台 / 后台均需
-jar java 后,Jar 包前 指定运行可执行 Jar 包 (需 Jar 包中META-INF/MANIFEST.MF定义主类)。 前台 / 后台均需
-Dfile.encoding=UTF-8 java 后,-jar JVM 系统属性参数(-D开头),强制设置 JVM 文件编码为 UTF-8,避免中文乱码。 前台 / 后台均需
nginxWebUI-3.4.0.jar -jar 目标 Jar 包的文件名(若不在当前目录,需用绝对路径,如/app/xxx.jar)。 前台 / 后台均需
--server.port=8848 Jar 包后 应用程序自定义参数,指定服务监听端口为 8848(由nginxWebUI应用解析)。 前台 / 后台均需
--project.home=/app/code/ngx/ Jar 包后 应用程序自定义参数,指定项目根目录(用于存储配置、日志等文件)。 前台 / 后台均需
nohup 后台命令开头 忽略终端 "挂起信号",确保关闭终端后程序继续运行(脱离终端依赖)。 仅后台运行
& 后台命令末尾 将程序放入后台运行,终端立即释放(可继续输入其他命令)。 仅后台运行

示例

bash 复制代码
#前台运行
java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/code/ngx/


#后台运行
nohup java -jar -Dfile.encoding=UTF-8 nginxWebUI-3.4.0.jar --server.port=8848 --project.home=/app/code/ngx/ &

书写systemctl

bash 复制代码
[root@web03 ~]# cat /usr/lib/systemd/system/ngxwebui.service
[Unit]
Description=apache tomcat by song
After=network.target

[Service]
Type=forking
ExecStart=bash /server/scripts/nginxweb.sh start
ExecStop=bash /server/scripts/nginxweb.sh stop
[Install]
WantedBy=multi-user.target

启动nginxWebUI脚本

bash 复制代码
#!/bin/bash
##############################################################
# File Name: install_tomcat.sh
# Version: V1.0
# Author: song
# Organization: 
# Description:
##############################################################
#vars
function redecho(){
  str=$*
  echo -e "\E[0;31m${str}\E[0m"
}
function greenecho(){
  str=$*
  echo -e "\E[1;32m${str}\E[0m"
}
function yellowecho(){
  str=$*
  echo -e "\E[1;33m${str}\E[0m"
}
function blueecho(){
  str=$*
  echo -e "\E[1;34m${str}\E[0m"
}

#错误处理函数(执行命令失败时退出)
error_exit(){
  redecho "Error: $1"
  exit 1
}
service=nginxWebUI-4.3.4.jar
dir=/java/nginxWebUI/target/
choose=$1
port=8848
log_file=${dir}nginxwebui.log
start=/java/nginxWebUI/target/nginxWebUI-4.3.4.jar
time=`date +%F_%T`
pid=`ps -ef | grep -w ${start} | grep -v grep | awk '{print $2}'`
pid_cnt=`ps -ef | grep -w ${start} | grep -v grep | awk '{print $2}'|wc -l`
logmsg(){
  msg="$*"
  echo "$*" >>${log_file}
}
ngxweb_start(){
   if [ ! -d ${dir} ];then
        redecho "目录不存在"
        exit 1
    fi
   if [ -n ${pid}  ];then
      nohup java -jar -Dfile.encoding=UTF-8 "${start}" --server.port=8848 >/dev/null 2>&1 & 
      if [ $? -eq 0 ];then
      greenecho "启动${service}成功"
  	  else
  	  	redecho "启动${service}失败"
  	  fi
   fi
}
ngxweb_stop(){
    if [ -n ${pid}  ];then
      kill ${pid} 
      greenecho "关闭${service}成功"
    fi
}
ngxweb_restart(){
    ngxweb_stop
    sleep 1
    ngxweb_start
}
ngxweb_status(){
    if [ ${pid_cnt} -ne 0 ];then
     echo "running [ok] [${pid}] $service"
     logmsg "running [ok] [${pid}] [${time}] $service"
  else
     echo "running [Failed] [${pid}] $service"
     logmsg "running [Failed] [${pid}] [${time}] $service"
    fi
}
case "$choose" in
	start) ngxweb_start ;;
    stop) ngxweb_stop ;;
    restart) ngxweb_restart;;
    status) ngxweb_status;;
    *) echo input error
esac

maven编译工具

Maven 是 Apache 基金会的开源项目构建与依赖管理工具 ,基于项目对象模型(POM) ,为 Java 项目提供自动化构建、依赖管理、项目信息聚合等核心能力,是 Java 生态中最主流的工程化工具之一。

二进制安装maven

下载maven地址

注意下载bin包

  • 上传到服务器家目录
bash 复制代码
[root@web03 ~]# ll apache-maven-3.9.11-bin.tar.gz 
-rw-r--r-- 1 root root 9160848 11月  3 12:15 apache-maven-3.9.11-bin.tar.gz

tar -xvf apache-maven-3.9.11-bin.tar.gz  -C /app/tools/

ln -s /app/tools/apache-maven-3.9.11 /app/tools/maven

echo 'export PATH=/app/tools/maven/bin/:$PATH' >>/etc/profile

source /etc/profile

#检查版本
mvn --version

配置阿里云加速

打开 Maven 的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在<mirrors></mirrors>标签中添加 mirror 子节点:

js 复制代码
<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

命令

命令 用途 示例场景
mvn clean 清理项目编译产物(删除 target 目录) 重新构建前清理历史文件
mvn compile 编译源代码(输出到 target/classes 开发中快速编译代码
mvn test 执行单元测试(需遵循 src/test/java 目录结构) 验证代码逻辑正确性
mvn package 打包项目(生成 JAR/WAR 等包到 target 目录) 构建可部署的应用包
mvn install 打包后安装到本地仓库~/.m2/repository 供本地其他项目依赖
mvn deploy 打包后部署到远程仓库(如 Nexus 私服) 团队协作时共享项目构件
mvn site 生成项目站点文档(包含依赖、测试报告等,输出到 target/site 生成项目可视化文档

gradlew编译工具

gradlew(Gradle Wrapper)是 Gradle 构建工具的 "包装器" 脚本,用于在未安装 Gradle 的环境中自动下载并执行指定版本的 Gradle 构建,确保项目构建的一致性。以下是其核心信息与使用指南:

二、创建 Gradle Wrapper(生成 gradlew 脚本)

在已有的 Gradle 项目中,执行以下命令生成 gradlew 及其配置文件:

bash 复制代码
# 生成 Wrapper,默认使用当前项目的 Gradle 版本
gradle wrapper

# 或指定 Gradle 版本(推荐,明确版本号)
gradle wrapper --gradle-version 8.4

执行后,项目根目录会生成:

  • gradlew(Linux/macOS 可执行脚本)
  • gradlew.bat(Windows 可执行脚本)
  • gradle/wrapper/ 目录(包含配置文件 gradle-wrapper.properties 和包装器 Jar 包)

gradle-wrapper.properties 配置说明

该文件位于 gradle/wrapper/ 目录,定义了 Gradle 版本和下载规则:

properties 复制代码
# 指定 Gradle 发行版地址(可修改为国内镜像加速)
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip

# 可选:指定本地缓存目录(默认 ~/.gradle/wrapper/dists/)
# distributionBase=GRADLE_USER_HOME
# distributionPath=wrapper/dists
# zipStoreBase=GRADLE_USER_HOME
# zipStorePath=wrapper/dists
命令 功能描述
./gradlew build 编译项目并生成可执行包(如 JAR/WAR),包含 check(测试)和 assemble(打包)阶段。
./gradlew clean 清理构建产物(如 build/ 目录下的文件)。
./gradlew test 运行项目中的单元测试和集成测试。
./gradlew assemble 仅打包项目(不执行测试)。
./gradlew bootRun Spring Boot 项目专用:直接启动应用(需项目依赖 spring-boot-gradle-plugin)。
./gradlew tasks 列出项目支持的所有 Gradle 任务。
./gradlew --version 查看 gradlew 绑定的 Gradle 版本。

二进制安装gradle

Gradle | Thank you for downloading Gradle!

  • 上传到服务器
bash 复制代码
[root@web03 ~]# ls gradle-8.5-bin.zip 
gradle-8.5-bin.zip

unzip gradle-8.5-bin.zip -d /app/tools/

[root@web03 ~]# cd /app/tools/gradle-8.5/

[root@web03 /app/tools]# ln -s gradle-8.5 gradle


vim /etc/profile
export PATH=/app/tools/gradle/bin/:$PATH
export PATH=$GRADLE_HOME/bin:$PATH



[root@web03 /app/tools]# source  /etc/profile
[root@web03 /app/tools]# gradle -v

Welcome to Gradle 8.5!

Here are the highlights of this release:
 - Support for running on Java 21
 - Faster first use with Kotlin DSL
 - Improved error and warning messages

For more details see https://docs.gradle.org/8.5/release-notes.html


------------------------------------------------------------
Gradle 8.5
------------------------------------------------------------

Build time:   2023-11-29 14:08:57 UTC
Revision:     28aca86a7180baa17117e0e5ba01d8ea9feca598

Kotlin:       1.9.20
Groovy:       3.0.17
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          11.0.28 (BiSheng 11.0.28+6)
OS:           Linux 4.19.90-52.22.v2207.ky10.x86_64 amd64
  1. 配置 Gradle 本地仓库路径

默认情况下,Gradle 下载的依赖会缓存到 ~/.gradle/caches/(Linux/macOS)或 C:\Users\用户名\.gradle\caches\(Windows)。若需修改路径:

  • 创建

    复制代码
    gradle.properties

    文件(全局配置路径:添加:~/.gradle/gradle.properties),添加

    properties 复制代码
    # 自定义本地仓库路径(示例)
    gradle.user.home=/path/to/custom/gradle/repo

部署halo

halo: 强大易用的开源建站工具。

配置要求

内存:6G

核心:4

jdk-21

bash 复制代码
wget https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz

tar -xf openjdk-21.0.1_linux-x64_bin.tar.gz -C /usr/local/
mv /usr/local/jdk-21.0.1 /usr/local/jdk21

[root@lx ~]# tail -2 /etc/profile
export JAVA_HOME=/usr/local/jdk21
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

java -version

node.js 20

bash 复制代码
wget https://nodejs.org/dist/v20.19.5/node-v20.19.5-linux-x64.tar.xz

mkdir -p /app/tools/
tar -xf node-v20.19.5-linux-x64.tar.xz -C /app/tools/
ln -s /app/tools/node-v20.19.5-linux-x64 /app/tools/node

echo 'export PATH=/app/tools/node/bin:$PATH' >>/etc/profile

source /etc/profile

node -v

#配置npm下载源
npm config set registry https://registry.npmmirror.com

[root@web03 ~]# npm --version
8.19.3
[root@web03 ~]# node --version
v16.19.1

pnpm 10

bash 复制代码
curl -fsSL https://get.pnpm.io/install.sh | sh -

source ~/.bashrc

pnpm -v

编译部署halo

bash 复制代码
[root@lx ~]# node -v
v20.19.5
[root@lx ~]# java -version
openjdk version "21.0.1" 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)
[root@lx ~]# pnpm -v
10.20.0



git clone https://gitee.com/halo-dev/halo.git ~/halo-main

cd halo-main/

./gradlew clean build -x check

./gradlew  build
工具 优势 劣势 适用场景
Maven 约定优于配置、依赖管理成熟、生态丰富 配置较繁琐、灵活性不足 企业级 Java 项目、多模块工程
Ant 高度灵活、无强约束 依赖管理弱、需手动维护 小型项目、自定义构建流程
Gradle 灵活(Groovy/Kotlin 脚本)、性能优 学习成本稍高 大型项目、需定制化构建

打包编译全流程

简单编译hello-world-war-1.0.0.war包

通过网盘分享的文件:hello-world-war-src-code.zip

链接: https://pan.baidu.com/s/14G3JNK-D2tdOdzK8yV3MHg?pwd=1yun 提取码: 1yun

  • 上传文件到服务器
bash 复制代码
[root@web03 ~]# ll hello-world-war-src-code.zip 
-rw-r--r-- 1 root root 25925 11月  3 11:44 hello-world-war-src-code.zip

mkdir -p /java-bianyi/hello/
cd /java-bianyi/hello/

#一定要在pom.xml这个目录下进行编译安装
[root@web03 /java-bianyi/hello]# ls
dist  pom.xml  README.md  src

mvn clean package
  • 成功
bash 复制代码
#会在当前目录下生成一个target目录,目录下是打包的war包
root@web03 /java-bianyi/hello]# ls target/
hello-world-war-1.0.0  hello-world-war-1.0.0.war  maven-archiver

#将war包移动到tomcat下的webapps目录下
mv hello-world-war-1.0.0.war hello.war
cp hello.war /app/tools/tomcat/webapps/

#webapps目录会自动将war包加载为目录
[root@web03 /java-bianyi/hello/target]# ll /app/tools/tomcat/webapps/
总用量 12
drwxr-x--- 16 root root 4096 11月  3 09:14 docs
drwxr-x---  7 root root   99 11月  3 09:14 examples
drwxr-x---  4 root root   54 11月  3 19:22 hello
-rw-r--r--  1 root root 1954 11月  3 19:22 hello.war
drwxr-x---  6 root root   79 11月  3 09:14 host-manager
drwxr-x---  6 root root  114 11月  3 09:14 manager
drwxr-x---  3 root root   41 11月  3 10:43 memtest
-rw-r--r--  1 root root  643 11月  3 10:41 memtest.war
drwxr-x---  3 root root  223 11月  3 09:14 ROOT

浏览器访问10.0.0.9:8080/hello/

  • 成功

报错排障

报错提示:maven-war-plugin 2.1.1 版本过旧 ,与当前使用的 Maven 版本、JDK 版本或依赖的组件(如 Plexus 容器)存在API 不兼容(旧插件依赖的底层 API 在新环境中已变更)。

解决步骤

  • 修改pox.xml文件,指定更高版本,推荐3.3.2或3.4.0
bash 复制代码
vim pox.xml
--------------------------------
<build>
  <plugins>
    <!-- 升级maven-war-plugin到兼容版本 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.3.2</version> <!-- 替换为高版本 -->
    </plugin>
  </plugins>
</build>
-----------------------------
mvn clean package

npm编译chian-ex-main

环境准备

  • openjdk11
  • node v16.19.1
  • npm 8.19.3
  • nginx

通过网盘分享的文件:china-ex-main.zip

链接: https://pan.baidu.com/s/1N6U0OavhHhzg6m2ePguwWw?pwd=vghy 提取码: vghy

--来自百度网盘超级会员v2的分享

上传文件到服务器

bash 复制代码
[root@docker01 ~]# ls china-ex-main.zip 
china-ex-main.zip

unzip china-ex-main.zip

[root@docker01 ~]# cd china-ex-main
[root@docker01 ~/china-ex-main]# ls
生成字体子集.js  转译.js  china-ex.svg  cover.png  html  package.json README.md

#下载依赖
npm i

#编译打包
npm run build



[root@docker01 ~/china-ex-main]# npm i

added 52 packages in 920ms

7 packages are looking for funding
  run `npm fund` for details
[root@docker01 ~/china-ex-main]# npm run build

> china-ex@0.0.2 build
> node 生成字体子集.js && node 转译.js

0123456789:GHabiltu""上东中云京住保关内出分到制加北南去古可台吉四国图场夏天奇存宁安居山川州差广庆建徽成手按数新暗曾机林母江沙没河津浙海添港游湖湾澳照片玩甘疆短神福端肃苏蒙藏螺西试贵路辽过重长门闭陕霸青香验黑龙12345
<Buffer >

浏览器访问

编译nginxWebUI可视化nginx

nginxWebUI: 方便快捷易用的Nginx可视化UI网页管理部署配置工具系统.

  • 上传文件到服务器
bash 复制代码
unzip nginxWebUI-master.zip -d /java/

[root@web03 /java/nginxWebUI]# ls
buildx.sh   entrypoint.sh  local_build.sh  README        README.md  target
Dockerfile  LICENSE        pom.xml         README_EN.md  src

[root@web03 /java/nginxWebUI]# mvn clean package
[root@web03 /java/nginxWebUI/target]# ll
总用量 44100
drwxr-xr-x 2 root root       34 11月  3 19:34 archive-tmp
drwxr-xr-x 5 root root      244 11月  3 19:34 classes
drwxr-xr-x 3 root root       25 11月  3 19:34 generated-sources
drwxr-xr-x 2 root root       28 11月  3 19:34 maven-archiver
drwxr-xr-x 3 root root       35 11月  3 19:34 maven-status
-rw-r--r-- 1 root root 45156824 11月  3 19:34 nginxWebUI-4.3.4.jar

[root@web03 /java/nginxWebUI/target]# java -jar -Dfile.encoding=UTF-8 nginxWebUI-4.3.4.jar --server.port=8848
  • 启动成功
  • 浏览器访问10.0.0.9:8848

部署zrlog

通过网盘分享的文件:zrlog-2.2.1-efbe9f9-release.war

链接: https://pan.baidu.com/s/1aFLUl30feD2v1suk332GVA?pwd=5g3r 提取码: 5g3r

--来自百度网盘超级会员v2的分享

  • jdk 11
  • tomcat 9

环境准备

节点 说明
web03 10.0.0.9/172.16.1.8 jdk+tomcat
db01 10.0.0.51/172.16.1.51 mariadb zrlog库,zrlog用户,密码
  • db01部署
bash 复制代码
mysql -uroot -p123

create database zrlog;

grant all on zrlog.* to 'zrlog'@'172.16.1.%' identified by '123';

flush privileges;
  • web03部署

  • 上传安装包

jdk1.8.0 tomcat9

bash 复制代码
mv zrlog-2.2.1-efbe9f9-release.war zrlog.war


cp zrlog.war /app/tools/tomcat/webapps/

浏览器访问10.0.0.9:8080/zrlog/ 首页

10.0.0.9:8080/zrlog/admin/login

tomcat与nginx

将浏览器10.0.0.9:8080/zrlog变成默认

bash 复制代码
[root@web03 /app/tools/tomcat/webapps]# mv ROOT /root/
[root@web03 /app/tools/tomcat/webapps]# mv zrlog.war ROOT.war

加入nginx

bash 复制代码
[root@web03 ~]# cat /etc/nginx/conf.d/zrlog.song.com.conf
server{
  listen 80;
  server_name zrlog.song.com;

  error_log /var/log/nginx/zrlog-error.log notice;
  access_log /var/log/nginx/zrlog-access.log main;

  location / {
   proxy_pass http://127.0.0.1:8080;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

windows hosts文件解析

浏览器访问zrlog.song.com

相关推荐
吉普赛的歌2 小时前
【服务器】Windows Server如何配置一个账号多个用户可以远程登录
运维·服务器·windows
TPBoreas2 小时前
清理服务器日志空间
linux·运维·服务器
hdsoft_huge2 小时前
Java 实现高效查询海量 geometry 及 Protobuf 序列化与天地图前端分片加载
java·前端·状态模式
MoonBit月兔2 小时前
用 MoonBit 打造的 Luna UI:日本开发者 mizchi 的 Web Components 实践
前端·数据库·mysql·ui·缓存·wasm·moonbit
程序员修心2 小时前
CSS浮动与表格布局全解析
前端·html
人工干智能2 小时前
调用client.beta.threads.runs.create后交由OpenAI云服务器端的处理
服务器·python·llm
Ashley_Amanda2 小时前
基因为命,运势为帆
服务器
POLITE33 小时前
Leetcode 238.除了自身以外数组的乘积 JavaScript (Day 7)
前端·javascript·leetcode
光影少年3 小时前
AI前端开发需要会哪些及未来发展?
前端·人工智能·前端框架