Zrlog博客的系统部署

一.全过程

在 RHEL/CentOS/Rocky Linux 9.x 系统(目标主机 172.25.254.100)上,通过「JDK11+Maven3.9.6」编译 ZrLog 源码生成 War 包,搭配 MariaDB(数据库)+Tomcat10(应用容器)+Nginx(反向代理)完成部署,最终实现浏览器访问 ZrLog 博客系统。

源码 → Maven 构建(依赖下载 + 编译 + 打包)→ War 包 → Tomcat 部署 → Nginx 反向代理 → 浏览器访问;

所需要的安装包

二.前置环境准备

2.1 安装并配置 JDK 1

解压并配置全局环境变量

生效并验证

2.2 安装 Maven + 配置阿里云镜像(关键优化)

解压并 配置全局环境变量

修改配置文件

vim /root/maven/conf/settings.xml

输出Maven版本即成功

pom.xml(Project Object Model,项目对象模型)是 Maven项目的"灵魂配置文件",用于定义项目的所有核心信息,是Maven构建、依赖管理、打包的唯一依据(实验中核心作用是解决"无War包""依赖下载"问题)。

三.Maven 构建 ZrLog War 包(核心步骤)

3.1解压 ZrLog 源码压缩包

定位 pom.xml 并执行构建

写入全新的独立pom.xml(无需父POM,直接构建War包)

cat > /root/zrlog-src/META-INF/maven/com.hibegin/package/pom.xml << 'EOF'

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<!-- 手动定义项目基本信息(替代父POM) -->

<groupId>com.hibegin</groupId>

<artifactId>zrlog-web</artifactId>

<version>3.3.0</version>

<packaging>war</packaging>

<name>ZrLog Web</name>

<description>ZrLog Blog System</description>

<!-- 核心依赖(覆盖父POM的关键依赖) -->

<dependencies>

<!-- Servlet & JSP 核心 -->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>4.0.1</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet.jsp</groupId>

<artifactId>jsp-api</artifactId>

<version>2.2</version>

<scope>provided</scope>

</dependency>

<!-- Java EE 基础 -->

<dependency>

<groupId>javax</groupId>

<artifactId>javaee-api</artifactId>

<version>8.0.1</version>

<scope>provided</scope>

</dependency>

<!-- 数据库驱动(ZrLog核心依赖) -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>8.0.33</version>

</dependency>

<!-- 日志依赖 -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.36</version>

</dependency>

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-classic</artifactId>

<version>1.2.13</version>

</dependency>

</dependencies>

<!-- 构建配置(确保能打出可运行的War包) -->

<build>

<finalName>zrlog</finalName>

<plugins>

<!-- 编译插件(适配JDK11) -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.8.1</version>

<configuration>

<source>11</source>

<target>11</target>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<!-- War包插件(忽略缺失web.xml) -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<version>3.3.2</version>

<configuration>

<failOnMissingWebXml>false</failOnMissingWebXml>

<!-- 指向ZrLog的源码/资源目录(关键) -->

<webResources>

<resource>

<directory>/root/zrlog-src</directory>

<includes>

<include>WEB-INF/**/*</include>

<include>META-INF/**/*</include>

<include>**/*.jsp</include>

<include>**/*.html</include>

<include>**/*.css</include>

<include>**/*.js</include>

</includes>

</resource>

</webResources>

</configuration>

</plugin>

</plugins>

</build>

</project>

EOF

执行Maven打包(-DskipTests跳过测试,加快构建速度)

控制台输出 BUILD SUCCESS,并在 target/ 目录下生成 zrlog-3.3.0.war(文件名含版本号)

3.2安装数据库 / 反向代理 / 应用容器

**1.**基础工具依赖

dnf install -y wget unzip tar vim net-tools

2. MariaDB 数据库部署

dnf install -y mariadb-server mariadb

systemctl start mariadb && systemctl enable mariadb

创建ZrLog专用库和用户

3. Nginx 反向代理部署

dnf install -y nginx

写入优化配置

启动并开机自启

systemctl start nginx && systemctl enable nginx

验证配置有无报错

四.部署 War 包到 Tomcat

4.1配置Tomcat内存参数

4.2复制 War 包并清理旧数据

回到Maven构建目录

cd /root/zrlog-src/META-INF/maven/com.hibegin/package/

复制War包到Tomcat webapps目录,重命名为ROOT.war(直接访问根路径)

cp target/zrlog.war /root/tomcat10/webapps/ROOT.war

清理Tomcat旧解压文件(避免冲突)

rm -rf /root/tomcat10/webapps/ROOT

4.3启动 Tomcat 并验证

五.验证

在浏览器中进行验证(输入主机ip)

相关推荐
这个DBA有点耶9 分钟前
DELETE没删多少数据,表却越来越大——InnoDB删除空洞与页合并失效的根因
数据库·mysql·代码规范
Bazingga1 小时前
Java16 record 完整拆解——语法、语义、限制、反射
java·后端
第404号工位1 小时前
40块钱二手瘦客户端,如何跑满家庭物联网中枢?(拒绝Docker爆盘实录)
linux·架构·node.js
SL_staff3 小时前
规则联动:给工厂装上‘自动化神经反射弧’——JVS·物联网平台规则引擎实战教程
java·人工智能·物联网
骑着蜗牛撵大象3273 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
WJ.Polar3 小时前
Java封装、继承、多态
java·开发语言
众壹新能源科技3 小时前
逆变器自带无功不够用,加装5MVar SVG后功率因数从0.85回到0.99
运维·人工智能·自动化
..Dauntless..3 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
ly76893 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
摇滚侠3 小时前
Java 中如何表示负数,有符号和无符号的区别,补码的计算规则,char byte short int long 的范围
java·开发语言