使用 JAR 包部署 Java 应用(以 NginxWebUI 为例)

使用 JAR 包部署 Java 应用(以 NginxWebUI 为例)

项目地址 :https://gitee.com/cym1102/nginxWebUI
部署方式 :源码编译(Maven) + JAR 包运行
JDK 版本 :OpenJDK 11
数据库:默认使用嵌入式 SQLite,也支持配置 MySQL

本文演示如何在 Linux 系统中通过 java -jar 方式部署 NginxWebUI ------ 一款基于 Web 的 Nginx 可视化配置与管理工具。


一、环境准备

1. 安装 OpenJDK 11 和 Nginx

bash 复制代码
yum install java-11-openjdk nginx -y

验证 Java:

bash 复制代码
java -version
# 输出应包含 "openjdk version \"11"

2. 安装 Maven(用于编译源码)

bash 复制代码
# 假设已下载 apache-maven-3.9.11-bin.tar.gz 到当前目录
tar xf apache-maven-3.9.11-bin.tar.gz -C /usr/local/
ln -sv /usr/local/apache-maven-3.9.11 /usr/local/maven

# 配置环境变量
echo 'export MAVEN_HOME=/usr/local/maven' >> /etc/profile
echo 'export PATH=$PATH:$MAVEN_HOME/bin' >> /etc/profile
source /etc/profile

# 验证 Maven
mvn -v

二、获取源码并编译生成 JAR 包

bash 复制代码
cd /data
git clone https://gitee.com/cym1102/nginxWebUI.git
cd nginxWebUI

# 切换到指定稳定版本(推荐使用发布版本)
git checkout 4.2.4

# 编译打包(跳过测试以加快构建)
mvn clean package -DskipTests

✅ 成功后,可执行 JAR 文件位于:
/data/nginxWebUI/target/nginxWebUI-4.2.4.jar


三、启动应用(运行 JAR 包)

基础命令(使用默认 SQLite 数据库)

bash 复制代码
java -jar \
  -Dfile.encoding=UTF-8 \
  /data/nginxWebUI/target/nginxWebUI-4.2.4.jar \
  --server.port=8080 \
  --project.home=/home/nginxWebUI/

可选:连接 MySQL 数据库

bash 复制代码
java -jar -Dfile.encoding=UTF-8 /data/nginxWebUI/target/nginxWebUI-4.2.4.jar \
  --server.port=8080 \
  --project.home=/home/nginxWebUI/ \
  --spring.database.type=mysql \
  --spring.datasource.url=jdbc:mysql://127.0.0.1:3306/nginxwebui?useSSL=false&serverTimezone=UTC \
  --spring.datasource.username=root \
  --spring.datasource.password=your_password

⚠️ 若使用 MySQL,请提前创建数据库 nginxwebui 并确保字符集为 utf8mb4。


四、参数说明

参数 说明
--server.port Web 服务监听端口,默认 8080
--project.home 工作目录,存放 SQLite 数据库、SSL 证书、日志等,默认 /home/nginxWebUI/
--spring.database.type 数据库类型,可选 mysql 或留空(默认 SQLite)
--spring.datasource.url MySQL 连接 URL
--spring.datasource.username MySQL 用户名
--spring.datasource.password MySQL 密码

五、(推荐)配置为系统服务(systemd)

创建服务文件:

bash 复制代码
cat > /etc/systemd/system/nginxwebui.service <<EOF
[Unit]
Description=NginxWebUI - Web-based Nginx Manager
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/data/nginxWebUI
ExecStart=/usr/bin/java -jar -Dfile.encoding=UTF-8 /data/nginxWebUI/target/nginxWebUI-4.2.4.jar --server.port=8080 --project.home=/home/nginxWebUI/
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

启用服务:

bash 复制代码
systemctl daemon-reload
systemctl enable --now nginxwebui
systemctl status nginxwebui

六、访问与初始化

浏览器访问:

复制代码
http://<服务器IP>:8080

首次访问将提示设置管理员账号和密码。


七、注意事项

  • 确保防火墙开放 8080 端口(或自定义端口)。
  • project.home 目录需有读写权限(建议由运行用户拥有)。
  • 生产环境建议通过 Nginx 反向代理 + HTTPS 提供服务。
  • 升级时只需拉取新代码、重新 mvn package 并重启服务。

相关推荐
panxianren3 小时前
Bun 1.4 的 bun test --parallel 将 4 秒的测试套件缩短到约 1 秒
java·javascript
“AI国潮设计-小江”5 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
程序喵大人5 小时前
【C++入门】编译链接模型 - 01 一个 C++ 程序是怎样变成可执行文件的
开发语言·c++·编译链接模型
sunshine22 girl5 小时前
Java学习七 Java 项目实战2-注册业务
java·学习
省钱兄--zs5 小时前
北京24小时自助健身房系统软件开发实战:从架构设计到部署指南
java·数据仓库·spring boot·小程序·需求分析
youdexiang6 小时前
Android录音软件时间关键词检索功能分析
java·人工智能
sunshine22 girl6 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
code2cat6 小时前
Java进阶篇之AtomicStampedReference:引用回到原值,版本戳仍能记住变化
java·cas·并发编程·aba
菜鸟~noob2337 小时前
【电子战】第三季预告—波武器与电子系统强力毁伤
开发语言·数据库·matlab·电子战
惊讶的猫8 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python