web服务器java
文章目录
- web服务器java
- 东方通:国产中间件领军企业
-
- [核心产品:Tong 系列中间件](#核心产品:Tong 系列中间件)
- 东方通部署
-
- [东方通 vs tomcat](#东方通 vs tomcat)
- tomcat部署
- java业务如何部署
- war包与jar包的区别
- 部署halo
- 打包编译全流程
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.lang、java.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 系列中间件
- TongWeb(应用服务器)
核心定位:全面符合 Java EE/Jakarta EE 标准的企业级应用服务器,是 Tomcat 的国产化替代首选。东方通
核心特点:
- 完整支持 Servlet、JSP、EJB 等 Java EE 全栈规范(Tomcat 仅支持 Servlet 容器)
- 内置高可靠性机制(集群、热部署、Failover),实现 "零宕机" 服务
- 全面安全防护(身份验证、授权管理、国密 SSL、等保 2.0 四级合规)
- 云原生支持:容器化部署、K8S 集群环境运行、动态弹性扩展
- 性能优异:部分指标已达 Oracle WebLogic、IBM WebSphere 水平
- 其他核心产品
- TongLINK/Q:消息中间件,解决系统间可靠通信、数据传输问题东方龙马
- TongESB:企业服务总线,实现系统集成与服务治理东方通
- TongRDS:分布式数据缓存中间件,提升数据访问性能
- TongHttpServer:高性能 HTTP 服务器,可作为 Web 服务器或负载均衡器
东方通部署
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
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二进制包到家目录
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
注意下载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
- 配置 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
配置要求
内存: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文件解析
