当前位置: 首页 > news >正文

Zrolg项目部署

一、前置环境准备(JDK + Maven + 基础依赖)

1.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版本

# 1. 下载 Maven 3.9.6(适配JDK 11)

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


cd /root
wget https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz

# 2. 解压并重命名
root@zrlog ~]# tar -zxf apache-maven-3.9.14-bin.tar.gz
[root@zrlog ~]# 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版本即成功

[root@zrlog package]# vim /root/maven/conf/settings.xml
.....
<mirror>
<id>tencentmaven</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public/</url>
</mirror>
....

二、Maven 构建 ZrLog War 包(核心步骤)

2.1 解压 ZrLog 源码压缩包

cd /root
# 解压到指定目录,避免文件混乱
unzip -q zrlog-3.3.0-1811fd7-release.zip -d zrlog-src
cd zrlog-src

2.2 定位 pom.xml 并执行构建

# 进入pom.xml所在目录(根据你的压缩包结构)
[root@dev ~]# 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 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
[root@dev ~]# 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
[root@dev ~]# tar -zxf apache-tomcat-10.1.52.tar.gz
[root@dev ~]# mv apache-tomcat-10.1.52 tomcat10
[root@dev ~]#

# 配置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

三、部署 War 包到 Tomcat

3.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/ROOT

3.2 启动 Tomcat 并验证

# 启动Tomcat /root/tomcat10/bin/startup.sh ​ # 查看启动日志(确认War包解压、服务无报错) tail -f /root/tomcat10/logs/catalina.out

✅ 启动成功标识:

日志中出现Server startup in XXX ms,且无ERROR级日志。

四、Web 端安装与访问

4.1 访问地址

http://192.168.223.20 (Nginx反向代理80端口,无需加8080)

4.2 安装向导配置(数据库信息)

五、问题排查方法

总结

本次优化核心补充:

  1. 新增Maven 阿里云镜像配置,彻底解决国内网络下依赖下载失败 / 慢的问题;

  2. 明确pom.xml路径和构建命令,适配你的压缩包结构;

  3. 补充构建 / 启动失败的排查方案,降低部署风险;

  4. 所有命令可直接复制执行,无需手动修改路径(仅需替换服务器 IP)。

http://www.jsqmd.com/news/792937/

相关文章:

  • FPGA原型验证平台:现代SoC设计的核心工具与实战指南
  • 别再满世界找了!手把手教你用JetBrains官网和Toolbox App下载任意历史版本(IDEA/PyCharm等)
  • AI 视频生产力工具:Sulphur-2-GGUF 整合包深度评测与工作流分享》
  • Go语言游标分页库Kuysor:告别OFFSET性能瓶颈,实现高效大数据查询
  • SpringBoot参数验证
  • AI技能赋能:Crowdin本地化工作流自动化实战指南
  • 终极DLSS Swapper指南:3步掌握游戏性能优化利器,免费提升帧率
  • 从虚拟到物理:原型设计技术全景与实战指南
  • Chinese-LLaMA-Alpaca-2:从原理到实践,打造本地化中文大语言模型
  • Python自动化构建个人抖音技能库:合规爬虫与内容管理实践
  • 免费 IP 地址查询 API 接入实战_街道级归属接口调用与封装_ip geolocation api
  • Taotoken的TokenPlan套餐如何帮助个人开发者更可控地规划AI支出
  • 技术团队招聘与解雇实践:从Hire Slow Fire Fast到慧招快炒
  • 从零到一:在VS2019中高效部署OpenCV开发环境
  • Rust AI代理引擎hermes-rs:架构解析与高性能实践指南
  • 认知神经科学研究报告【20260045】
  • 算法复杂度的实验估算与误差分布建模的技术7
  • DistillGaze:基于视觉基础模型的轻量化视线追踪技术解析
  • Godot引擎AI集成:基于MCP协议实现智能游戏开发助手
  • AI驱动的前沿前端技术栈深度解析:从模型能力到UI封装的完整生命周期
  • Visual Studio AI助手深度集成:提升.NET开发效率的实战指南
  • AI+布局引擎:用excalidraw-architect-mcp智能生成专业架构图
  • HCCS:整数优化的Transformer注意力Softmax替代方案
  • AI网关架构解析:统一管理多模型API,提升服务治理与性能
  • KMS_VL_ALL_AIO:基于微软官方协议的系统激活工具技术解析
  • 把 GPT-4 塞进你的开发机:RAGFlow + Ollama 本地知识库从单机到集群的工程落地全指南
  • ThunderAI:用大语言模型插件打造智能邮件工作流
  • Vue3 路由守卫详解:全局守卫、路由独享守卫、组件内守卫
  • 本地化部署大语言模型:从量化到推理的完整实践指南
  • OpenAI Cookbook中文版:AI应用开发实战指南与工程化实践