部署SSM项目 - 聚合项目(多模块多端口、多模块同一端口)
在部署SSM项目前需要安装jdk1.8、Tomcat8.5、Mysql5.7
MobaXterm远程连接云服务器(Centos环境)及配置jdk、Tomcat、MySQL环境
聚合项目
这种聚合项目架构适合中大型项目,能够有效解耦系统功能,提高开发效率和系统可维护性。
1. 什么是聚合项目?
聚合项目(或称微服务架构)将一个大型应用拆分为多个独立的模块/服务,每个模块:
-
拥有独立的端口号
-
可以独立开发、部署、运行
-
通过API进行通信
-
技术栈可以不同(Spring Boot、Node.js等)
2. 架构图
┌─────────────────────────────────────────────────┐
│ API网关/负载均衡器 │
│ (端口: 80/443) │
└─────────────────┬───────────────┬───────────────┘
│ │
┌───────────▼──────┐ ┌──────▼──────────┐
│ 用户服务模块 │ │ 订单服务模块 │
│ (端口: 8081) │ │ (端口: 8082) │
└──────────────────┘ └──────────────────┘
│ │
┌───────────▼──────┐ ┌──────▼──────────┐
│ 商品服务模块 │ │ 支付服务模块 │
│ (端口: 8083) │ │ (端口: 8084) │
└──────────────────┘ └──────────────────┘
3. 优点
-
独立部署:各服务可独立更新部署
-
技术异构:不同服务可以使用不同技术栈
-
故障隔离:一个服务故障不影响其他服务
-
弹性扩展:可针对热点服务单独扩展
多模块多端口的聚合项目部署
多模块多端口的聚合项目的部署方式又可以称为 多实例部署。
每个模块都有独立的Tomcat运行,监听不同的端口,互不干扰。若有一个不能正常运行,也不会影响其他的。
⭐⭐⭐项目准备:确保项目可以本地正常运行,多模块之间通过接口调用。
1. 数据库准备
在云服务器MySQL中创建数据库,导入数据。
- 使用Navicat连接远程数据库
- 创建数据库名,运行 SQL 脚本,建表并导入初始数据。

- 修改配置文件 (关键):
打开项目中的数据库配置文件,通常是src/main/resources/jdbc.properties或db.properties。
核对三项信息:url: 确保数据库名正确(如jdbc:mysql://localhost(或云服务器ip地址):3306/你的数据库名?useUnicode=true...)。-
username: 你的本地 MySQL 账号(通常是 root)。 -
password: 你的 MySQL 密码。
2. 打包项目
将每个模块打包成war包(或jar包,但传统SSM项目通常打包成war包,部署到Tomcat)。
首说明各个模块的功能及端口号:
| 模块 | 功能 | 端口号 |
|---|---|---|
| ham-music | 管理每个子模块的依赖关系、插件版本,以pom形式打包 | |
| ham-core | 公用模块,负责dao层和service层,以jar形式打包 | |
| ham-portal | 前台模块,负责控制层,以war形式打包 | 8087 |
| ham-file | 文件服务器,以war形式打包 | 8085 |
| ham-console | 后台模块,负责控制层,以war形式打包 | 8086 |
- 方式一:使用命令
mvn clean package - 方式二:使用idea中的maven图形化界面工具,双击package

直接点击父工程打包(父工程打包完成之后,会自动打包子模块)

注意:打包之前要检查pom.xml文件是否把配置文件页打包(旧版本的idea需要手动配置)src/main/resources **/*.* false src/main/java **/*.xml false src/main/webapp **/*.* false
3. jar/war包上传到云服务器
- jar/war包上传到云服务器Tomcat中的webapps下
cd /usr/local/tools/tomcat8/webapps注意:
1. 若该目录下有旧的jar/war包,需要先删除,在上传新的
2. 建议在上传之前将名称修改为简单易懂的名字

- 修改tomcat的server.xml文件(重点)
- 进入conf目录
cd /usr/local/tools/tomcat8/conf - 修改server.xml文件内容
vi server.xml用同一个tomcat运行多个独立的web服务时,需要为它们分配不同的端口。
添加如下内容:注意:有几个地方需要修改
-
首先要改service名字,名字不可以重复;
-
其次是端口,Http端口和AJP端口;
-
最后是Context的配置:它定义了一个名为 ham-file(这个要与上传的jar包名称一致) 的Web应用程序,其访问路径为根路径("/"),并且开启了“自动重新加载”功能。Context 是Web 应用的具体配置,它将一个 Web 应用映射到一个 URL 路径上,docBase用于指定 Web 应用的物理路径,path用于指定浏览器访问时的路径名,reloadable用于指定是否自动重载。

-
- 进入conf目录
-
在云服务器上添加安全组/防火墙(重点)

4. 启动Tomcat
# 1. 进入Bin目录
cd /usr/local/tools/tomcat8/bin
# 2. 执行启动脚本
./startup.sh
tomcat启动时,把war包解压成同名字的文件夹:

同时conf目录下会生成我们在server.xml配置的服务的文件夹:

5. 浏览器进行访问
http://公网IP:端口号 (如果重命名)
或者 http://公网IP:端口号/原项目名 (如果你没重命名)
6. 查看日志(关键)
启动tomcat后,一定要查看日志,有没有报错,方便查找问题出处。
- 执行查看日志命令: 启动后,立刻执行以下命令查看控制台输出:
# 假设你在 bin 目录下,日志在上一级的 logs 目录 tail -f ../logs/catalina.out - 观察输出内容:
- 如果有
ERROR或Exception(通常是数据库连接失败),就根据错误去修代码。 - 如果有 Successfully completed request ,说明启动成功!
- 退出日志查看:Ctrl + c
- 如果有
多模块同一端口的聚合项目部署
1. 数据库准备
在云服务器MySQL中创建数据库,导入数据。
- 使用Navicat连接远程数据库
- 创建数据库名,运行 SQL 脚本,建表并导入初始数据。

- 修改配置文件 (关键):
打开项目中的数据库配置文件,通常是src/main/resources/jdbc.properties或db.properties。
核对三项信息:url: 确保数据库名正确(如jdbc:mysql://localhost(或云服务器ip地址):3306/你的数据库名?useUnicode=true...)。-
username: 你的本地 MySQL 账号(通常是 root)。 -
password: 你的 MySQL 密码。
2. 打包项目
- 确认每个模块的pom.xml文件配置
需要确保 每一个 需要独立部署的子模块(如console后台和portal前台),其pom.xml中都配置了 war 打包方式:war - 避免路径冲突(代码层面)
虽然它们运行在不同的上下文路径下,但建议检查以下几点:- Cookie 覆盖问题: 如果两个项目部署在同域名同端口下,Session Cookie 可能会冲突。通常 Tomcat 会自动处理(Path 不同),但最好确保 application.properties 或 web.xml 里的 Session 配置是默认的。
- 数据库连接池: 因为是两个独立应用,它们会分别创建各自的连接池。如果应用很多,要注意 MySQL 的最大连接数限制(不要让单个应用占用太多)。
3. 打包项目(与 多项目多端口的聚合项目部署 的打包过程一致)

3. jar/war包上传到云服务器
- jar/war包上传到云服务器Tomcat中的webapps下
cd /usr/local/tools/tomcat8/webapps注意:
1. 若该目录下有旧的jar/war包,需要先删除,在上传新的
2. 建议在上传之前将名称修改为简单易懂的名字

- 修改tomcat的server.xml文件(重点)
- 进入conf目录
cd /usr/local/tools/tomcat8/conf - 修改server.xml文件内容
vi server.xml配置同一个端口号,添加如下内容:
注意:
1. 多个模块配置同一端口号,在Host 下 写多个 Context,但path要不同;
2. 若tomcat的端口号设置为8080,项目的端口号就不能设置为8080,否则会被占用。
- 进入conf目录
4. 启动Tomcat
# 1. 进入Bin目录
cd /usr/local/tools/tomcat8/bin
# 2. 执行启动脚本
./startup.sh
5. 查看日志(关键)
启动tomcat后,一定要查看日志,有没有报错,方便查找问题出处。
- 执行查看日志命令: 启动后,立刻执行以下命令查看控制台输出:
# 假设你在 bin 目录下,日志在上一级的 logs 目录 tail -f ../logs/catalina.out - 观察输出内容:
- 如果有
ERROR或Exception(通常是数据库连接失败),就根据错误去修代码。 - 如果有 Successfully completed request ,说明启动成功!
- 退出日志查看:Ctrl + c
- 如果有
6. 浏览器进行访问
http://公网IP:端口号 (如果重命名)
或者 http://公网IP:端口号/原项目名 (如果你没重命名)
扩展
Tomcat 内存优化 (多应用部署的关键)
这是最重要的一步。
默认的 Tomcat 内存配置很小(通常几十 MB)。当你启动好几个 SSM 项目时,Spring 容器会初始化多次,极易导致 OutOfMemoryError: Java heap space 或者 PermGen/Metaspace 溢出。
你需要修改 Tomcat 的启动参数来增加内存。
1. 创建/编辑 setenv.sh
在 Tomcat 的 bin 目录下创建 setenv.sh 文件(Linux 下 Tomcat 启动时会自动读取这个文件,优于直接改 catalina.sh)。
cd /usr/local/tools/tomcat8/bin
vi setenv.sh
2. 写入内存配置
写入以下内容(根据你的服务器内存调整,以下假设服务器有 4G 内存):
# JVM 内存设置
# -Xms: 初始堆内存 (建议 512m 或 1024m)
# -Xmx: 最大堆内存 (建议 1024m 或 2048m)
# -XX:MetaspaceSize: 元空间 (存放 Class 信息,SSM 类很多,这个要大)
export JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
按 Esc,输入 :wq 保存退出。
3. 赋予执行权限
chmod +x setenv.sh
本文地址:https://www.yitenyun.com/3956.html










