news 2026/3/24 21:41:55

HoRain云--高效管理多版本开发环境全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--高效管理多版本开发环境全攻略

🎬 HoRain 云小助手:个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

💻 配置多版本 JDK

🚀 配置多实例 Tomcat

🗃️ 配置多实例 MariaDB/MySQL

🌱 使用 Profile 配置多环境

🧩 整合使用:一个协同工作的示例


在软件开发中,尤其是在需要同时维护多个使用不同技术栈或配置的项目时,高效地管理开发环境是一项非常重要的技能。下面我将为你系统性地介绍 JDK、Tomcat、MariaDB 的多版本/多实例配置,以及如何使用 Spring Profile 实现应用层面的环境隔离。

下表概括了这四种场景的核心配置思路,你可以先建立一个整体印象。

配置场景

核心目标

关键配置方法/工具

一句话要点

多版本JDK

在系统全局或不同项目间灵活切换Java版本

手动:设置JAVA_HOMEPATH环境变量
自动(推荐):使用版本管理工具(如 SDKMAN! 、jEnv )

使用工具可以避免手动修改环境变量的麻烦和错误。

多实例Tomcat

在同一台机器上运行多个互不干扰的Tomcat服务

为每个实例设置独立的CATALINA_BASE目录,指向各自的配置、日志、工作目录 。

通过CATALINA_HOME(主程序)和CATALINA_BASE(实例配置)分离实现“一份程序,多份配置”。

多实例MariaDB

在同一台机器上运行多个独立的数据库实例

为每个实例准备独立的数据目录(datadir)、配置文件(指定不同端口和socket文件)和启动脚本 。

核心是确保每个实例的端口socket文件不同,以避免冲突。

多环境Profile

使应用能根据不同的运行环境(开发、测试、生产)加载不同的配置

在Spring Boot等框架中,通过application-{profile}.yml/properties文件定义特定环境配置,并使用spring.profiles.active属性激活 。

实现配置与代码分离,确保应用在不同环境下行为正确,如连接不同的数据库。

💻 配置多版本 JDK

在不同项目需要使用不同Java版本时,灵活切换JDK是关键。

🚀 配置多实例 Tomcat

当需要在一台服务器上部署多个互不干扰的Web应用或进行不同版本的测试时,可以配置多个Tomcat实例。

  1. 准备主程序和环境:下载并解压一份Tomcat压缩包到某个目录,例如/opt/tomcat-main,这个目录就是CATALINA_HOME

  2. 创建实例目录:为每个实例创建独立的工作目录,例如tomcat-instance-8080tomcat-instance-8081。在每个目录下,创建conf,logs,temp,work,webapps等子目录 。

  3. 复制并修改配置:从CATALINA_HOME/conf复制配置文件(如server.xml)到实例的conf目录。关键修改包括 :

  4. 设置环境变量并启动:通过设置CATALINA_BASE环境变量指向实例目录来启动特定实例 。

    # 启动实例1(监听8080端口) export CATALINA_HOME=/opt/tomcat-main export CATALINA_BASE=/path/to/tomcat-instance-8080 $CATALINA_HOME/bin/startup.sh # 启动实例2(监听8081端口) export CATALINA_BASE=/path/to/tomcat-instance-8081 $CATALINA_HOME/bin/startup.sh

    可以为此编写专门的启动和停止脚本(start.sh,stop.sh),将端口号作为参数传入,使操作自动化 。

🗃️ 配置多实例 MariaDB/MySQL

对于数据库,同样可以通过多实例来隔离不同服务的数据。

  1. 安装MariaDB/MySQL:使用系统包管理器安装即可,如yum install mariadb-server

  2. 准备实例目录结构:为每个实例创建独立的目录,用于存放数据、配置、日志、socket文件等 。

    mkdir -p /mysql/{3306,3307,3308}/{data,etc,socket,log,pid} chown -R mysql:mysql /mysql
  3. 初始化数据目录:使用mysql_install_db命令为每个实例初始化系统数据库 。

    mysql_install_db --datadir=/mysql/3306/data --user=mysql mysql_install_db --datadir=/mysql/3307/data --user=mysql # ... 以此类推
  4. 为每个实例创建配置文件:每个实例需要一个独立的my.cnf文件,主要区分以下参数 :

    # /mysql/3306/etc/my.cnf 示例 [mysqld] port=3306 # 关键:端口唯一 datadir=/mysql/3306/data socket=/mysql/3306/socket/mysql.sock # 关键:socket文件路径唯一 log-error=/mysql/3306/log/mysql.log pid-file=/mysql/3306/pid/mysql.pid # 其他配置(如字符集、缓冲大小等)可根据实例需求单独调整
  5. 启动实例:使用mysqld_safe指定配置文件来启动各个实例 。

    mysqld_safe --defaults-file=/mysql/3306/etc/my.cnf & mysqld_safe --defaults-file=/mysql/3307/etc/my.cnf &

🌱 使用 Profile 配置多环境

在应用代码层面,使用Profile是实现多环境配置的最佳实践,它避免了为不同环境打包不同部署包的问题。

🧩 整合使用:一个协同工作的示例

假设一个场景:你需要同时开发一个使用Java 11的老项目(A)和一个使用Java 17的新项目(B)。

  1. JDK管理:使用SDKMAN!,在终端A中运行sdk use java 11.0.21-amzn,在终端B中运行sdk use java 17.0.9-tem。或者在各自的IDE中为项目A和B分别指定JDK 11和17。

  2. 中间件与数据库:项目A和B都需要独立的Tomcat和数据库进行测试。

  3. 应用配置:项目A和B的配置文件(如application.properties)中,通过Profile设置不同数据源。

  4. 部署与运行:分别将项目A和B的WAR包部署到对应的Tomcat实例上,并启动这两个Tomcat实例和两个MariaDB实例。这样,两个项目就在同一台机器上完全隔离地运行起来了。

通过上述方法,你可以清晰地管理复杂的开发部署环境。希望这些具体的方案能帮助你更好地开展工作!如果你对某个细节有更深入的疑问,我很乐意继续探讨。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/20 5:50:37

吐血推荐MBA必用10款一键生成论文工具

吐血推荐MBA必用10款一键生成论文工具 2026年MBA论文写作工具测评:如何选对工具提升效率 MBA学习过程中,论文写作是一项重要且耗时的任务。面对繁重的课程压力与研究任务,选择一款高效、专业的论文辅助工具显得尤为重要。随着AI技术的不断进步…

作者头像 李华
网站建设 2026/3/13 7:57:25

305. Java Stream API - 短路操作

文章目录 305. Java Stream API - 短路操作✅ 什么是短路操作?🧠 重要概念: ✅ 短路操作示例🎬 findFirst() 和 findAny() 示例输出: 🎬 anyMatch()、allMatch() 和 noneMatch() 示例输出: ✅ 非…

作者头像 李华
网站建设 2026/3/13 19:03:38

低代码测试平台二次开发实战指南

测试领域的新赋能 在软件测试领域,低代码平台正迅速成为提升效率的利器。通过可视化界面和模块化组件,测试人员能快速构建自动化测试流程,但标准功能常无法满足复杂业务场景需求。二次开发允许测试从业者深度定制平台,集成专属测…

作者头像 李华
网站建设 2026/3/23 5:01:11

测试执行引擎核心模块设计解析

在DevOps与持续测试的行业背景下,测试执行引擎作为自动化测试的中枢系统,其模块化设计直接影响测试效能。本文从测试从业者的工程实践视角出发,深度剖析调度控制层、用例执行层、环境治理层三大核心模块的设计原理,并结合分布式调…

作者头像 李华
网站建设 2026/3/21 6:07:33

springboot图书捐赠管理系统设计开发实现

背景分析图书捐赠管理系统在数字化社会中的需求日益显著。传统捐赠流程依赖人工登记、分类和追踪,效率低下且易出错。尤其在教育机构、公益组织或社区图书馆中,大量闲置图书的流转需要透明化、系统化的管理工具。SpringBoot作为轻量级Java框架&#xff0…

作者头像 李华