ZrLog 博客系统部署指南无 War 包版Maven 构建 阿里云镜像优化适配场景压缩包无现成 War 包需通过 Maven 编译构建新增阿里云镜像配置解决依赖下载失败问题目标主机192.168.223.20适配系统RHEL/CentOS/Rocky Linux 9.x在 RHEL/CentOS/Rocky Linux 9.x 系统目标主机 192.168.223.20上通过「JDK11Maven3.9.6」编译 ZrLog 源码生成 War 包搭配 MariaDB数据库Tomcat10应用容器Nginx反向代理完成部署最终实现浏览器访问 ZrLog 博客系统。源码 → Maven 构建依赖下载 编译 打包→ War 包 → Tomcat 部署 → Nginx 反向代理 → 浏览器访问二、前置环境准备JDK Maven 基础依赖2.1 安装并配置 JDK 11# 1. 上传 jdk-11.tar.gz 到 /root 目录执行解压 cd /root tar -zxf jdk-11_linux-x64_bin.tar.gz mv jdk-11 jdk11 ​ # 2. 配置全局环境变量永久生效 cat /etc/profile.d/jdk.sh EOF export JAVA_HOME/root/jdk11 export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib EOF ​ # 3. 生效并验证 source /etc/profile.d/jdk.sh java -version # 输出JDK版本即成功JDK是 Java 开发工具包提供编写、编译、调试 Java 代码所需的全部工具面向开发者使用JRE是 Java 运行时环境仅包含运行已编译 Java 程序的必要环境JVM 核心类库仅运行Java程序时可只装JREJVM是 Java 虚拟机负责将 Java 字节码翻译成操作系统能执行的指令是 Java 实现跨平台运行的核心(Java 代码编译后生成的不是操作系统能直接执行的机器码而是通用的「字节码.class 文件」不同操作系统安装对应的 JVMJava 虚拟机由 JVM 负责将字节码翻译成当前系统的机器指令)。┌─────────────────────────────────────┐ │ JDK │ │ ┌─────────────────────────────┐ │ │ │ JRE │ │ │ │ ┌─────────────────────┐ │ │ │ │ │ JVM │ │ │ │ │ └─────────────────────┘ │ │ │ │ 核心类库 系统文件 │ │ │ └─────────────────────────────┘ │ │ javac、jar、javadoc 等开发工具 │ └─────────────────────────────────────┘2.2 安装 Maven 配置阿里云镜像关键优化# 1. 下载 Maven 3.9.6适配JDK 11 cd /root wget https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz ​ # 2. 解压并重命名 rootzrlog ~]# tar -zxf apache-maven-3.9.14-bin.tar.gz [rootzrlog ~]# mv apache-maven-3.9.14 maven ​ # 3. 配置全局环境变量 cat /etc/profile.d/maven.sh EOF export MAVEN_HOME/root/maven export PATH$MAVEN_HOME/bin:$PATH EOF source /etc/profile.d/maven.sh mvn -version # 输出Maven版本即成功 ​ [rootzrlog package]# vim /root/maven/conf/settings.xml ..... mirror idtencentmaven/id mirrorOfcentral/mirrorOf urlhttps://maven.aliyun.com/repository/public//url /mirror ....pom.xmlProject Object Model项目对象模型是 Maven项目的“灵魂配置文件”用于定义项目的所有核心信息是Maven构建、依赖管理、打包的唯一依据实验中核心作用是解决“无War包”“依赖下载”问题。三、Maven 构建 ZrLog War 包核心步骤3.1 解压 ZrLog 源码压缩包cd /root # 解压到指定目录避免文件混乱 unzip -q zrlog-3.3.0-1811fd7-release.zip -d zrlog-src cd zrlog-src3.2 定位 pom.xml 并执行构建# 进入pom.xml所在目录根据你的压缩包结构 [rootdev ~]# find /root/zrlog-src/ -name pom.xml /root/zrlog-src/META-INF/maven/com.hibegin/package/pom.xml # 配置阿里云镜像解决依赖下载慢/失败 mv /root/zrlog-src/META-INF/maven/com.hibegin/package/pom.xml /root/zrlog-src/META-INF/maven/com.hibegin/package/pom.xml.bak ​ # 写入全新的独立pom.xml无需父POM直接构建War包 cat /root/zrlog-src/META-INF/maven/com.hibegin/package/pom.xml EOF ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion ​ !-- 手动定义项目基本信息替代父POM -- groupIdcom.hibegin/groupId artifactIdzrlog-web/artifactId version3.3.0/version packagingwar/packaging nameZrLog Web/name descriptionZrLog Blog System/description ​ !-- 核心依赖覆盖父POM的关键依赖 -- dependencies !-- Servlet JSP 核心 -- dependency groupIdjavax.servlet/groupId artifactIdjavax.servlet-api/artifactId version4.0.1/version scopeprovided/scope /dependency dependency groupIdjavax.servlet.jsp/groupId artifactIdjsp-api/artifactId version2.2/version scopeprovided/scope /dependency !-- Java EE 基础 -- dependency groupIdjavax/groupId artifactIdjavaee-api/artifactId version8.0.1/version scopeprovided/scope /dependency !-- 数据库驱动ZrLog核心依赖 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency !-- 日志依赖 -- dependency groupIdorg.slf4j/groupId artifactIdslf4j-api/artifactId version1.7.36/version /dependency dependency groupIdch.qos.logback/groupId artifactIdlogback-classic/artifactId version1.2.13/version /dependency /dependencies ​ !-- 构建配置确保能打出可运行的War包 -- build finalNamezrlog/finalName plugins !-- 编译插件适配JDK11 -- plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.8.1/version configuration source11/source target11/target encodingUTF-8/encoding /configuration /plugin !-- War包插件忽略缺失web.xml -- plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-war-plugin/artifactId version3.3.2/version configuration failOnMissingWebXmlfalse/failOnMissingWebXml !-- 指向ZrLog的源码/资源目录关键 -- webResources resource directory/root/zrlog-src/directory includes includeWEB-INF/**/*/include includeMETA-INF/**/*/include include**/*.jsp/include include**/*.html/include include**/*.css/include include**/*.js/include /includes /resource /webResources /configuration /plugin /plugins /build /project EOF [rootdev ~]# cd /root/zrlog-src/META-INF/maven/com.hibegin/package/ ​ # 执行Maven打包-DskipTests跳过测试加快构建速度 mvn clean package -DskipTests✅ 构建成功标识控制台输出BUILD SUCCESS并在target/目录下生成zrlog-3.3.0.war文件名含版本号。2.3 安装数据库 / 反向代理 / 应用容器# 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专用库和用户 mysql -u root -e CREATE DATABASE zrlog DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER zrlog% IDENTIFIED BY zrlog123456; GRANT ALL PRIVILEGES ON zrlog.* TO zrlog%; FLUSH PRIVILEGES; ​ # 3. Nginx 反向代理部署 dnf install -y nginx # 写入优化配置 cat /etc/nginx/conf.d/zrlog.conf EOF server { listen 80; server_name _; charset utf-8; client_max_body_size 100M; # 反向代理Tomcat location / { #反向代理核心转发请求到Tomcat的8080端口 proxy_pass http://127.0.0.1:8080; #把用户请求中的 Host 头比如用户访问的域名 / IP传递给后端 Tomcat。 proxy_set_header Host $host; #把真实的客户端 IP 传递给后端 Tomcat。 proxy_set_header X-Real-IP $remote_addr; #传递 “IP 转发链”适配多层代理场景。 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置 Nginx 与后端 Tomcat 建立连接的超时时间60 秒 proxy_connect_timeout 60s; #设置 Nginx 等待后端 Tomcat 响应数据的超时时间60 秒。 proxy_read_timeout 60s; } } EOF # 启动并开机自启 systemctl start nginx systemctl enable nginx nginx -t # 验证配置无报错 ​ # 4. Tomcat 9 部署 cd /root [rootdev ~]# tar -zxf apache-tomcat-10.1.52.tar.gz [rootdev ~]# mv apache-tomcat-10.1.52 tomcat10 [rootdev ~]# ​ # 配置Tomcat内存参数 cat /root/tomcat10/bin/setenv.sh EOF export JAVA_HOME/root/jdk11 export CATALINA_OPTS-Xms512m -Xmx1024m EOF chmod x /root/tomcat10/bin/*.sh配置这些环境变量就是让系统和程序 “不用问、不用找”直接知道核心工具 / 依赖的位置既能简化命令执行也能避免版本冲突、路径错误等问题。变量一句话作用应用场景举例JAVA_HOME告诉系统 “JDK 装在哪”Tomcat 启动、Maven 编译、ZrLog 运行PATHJDK告诉系统 “java 命令在哪”执行java -version、javac 源码.javaCLASSPATH告诉 JVM “Java 类库在哪”编译 / 运行 ZrLog 源码时加载核心类MAVEN_HOME告诉系统 “Maven 装在哪”执行mvn命令时加载 Maven 配置PATHMaven告诉系统 “mvn 命令在哪”执行mvn clean package构建 War 包四、部署 War 包到 Tomcat4.1 复制 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/ROOT4.2 启动 Tomcat 并验证# 启动Tomcat /root/tomcat10/bin/startup.sh ​ # 查看启动日志确认War包解压、服务无报错 tail -f /root/tomcat10/logs/catalina.out✅ 启动成功标识日志中出现Server startup in XXX ms且无ERROR级日志。五、Web 端安装与访问5.1 访问地址http://192.168.223.20 Nginx反向代理80端口无需加80805.2 安装向导配置数据库信息配置项取值数据库地址192.168.223.20数据库端口3306数据库名zrlog数据库用户名zrlog数据库密码zrlog123456填写完成后点击「安装」即可进入 ZrLog 后台管理界面。六、常见问题排查6.1 Maven 构建失败问题现象解决方案依赖下载超时 / 失败确认阿里云镜像配置生效settings.xml路径正确或切换网络后重新构建JAVA_HOME未配置重新执行source /etc/profile.d/jdk.sh验证java -version输出正常缺少编译依赖执行dnf install -y gcc-c make安装编译工具后重新构建6.2 Tomcat 启动后 404问题现象解决方案ROOT.war 未解压检查catalina.out日志是否有解压错误手动删除 War 包重新复制后重启端口 8080 被占用netstat -tulpn | grep 8080找到占用进程kill 后重启 Tomcat数据库连接失败确认 MariaDB 已启动且zrlog用户允许远程连接%通配符6.3 Nginx 无法访问问题现象解决方案80 端口未监听systemctl status nginx查看状态修复配置错误nginx -t验证反向代理无响应确认 Tomcat 已启动且proxy_pass地址为127.0.0.1:8080无误七、标准化服务管理命令# JDK/Maven环境生效 source /etc/profile.d/jdk.sh source /etc/profile.d/maven.sh # MariaDB 管理 systemctl start/stop/status mariadb # Nginx 管理 systemctl start/stop/status nginx nginx -t # 配置验证 # Tomcat 管理 /root/tomcat9/bin/startup.sh # 启动 /root/tomcat9/bin/shutdown.sh # 停止 tail -f /root/tomcat9/logs/catalina.out # 实时日志总结本次优化核心补充新增Maven 阿里云镜像配置彻底解决国内网络下依赖下载失败 / 慢的问题明确pom.xml路径和构建命令适配你的压缩包结构补充构建 / 启动失败的排查方案降低部署风险所有命令可直接复制执行无需手动修改路径仅需替换服务器 IP。