如何将SSM项目通过tomcat部署到Linux云服务器上?

SSM项目分为单体项目和聚合项目,单体项目的部署方式通常是一种,而聚合项目的部署可有两种方式选择,下面将仔细介绍将SSM项目部署到阿里云Linux服务器的三种方式的完整步骤。

同时需要有连接服务器的工具,下面我以mobaxterm工具为例。

一、部署前准备工作

1、部署工具

  • 云服务器:阿里云、腾讯云等等,
  • mobaxterm:连接服务器
  • navicat(可选):便捷上传数据库sql脚本

2、安装并配置环境

(1) 安装JDK

bash 复制代码
# 安装OpenJDK 8
yum install -y java-1.8.0-openjdk-devel

# 验证安装
java -version  # 输出openjdk version "1.8.0_xxx"即成功

# 配置JAVA_HOME(可选,但部分工具需要)
# 先查找JDK安装路径
sudo update-alternatives --config java
# 复制输出中的路径(如/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java),去掉/jre/bin/java部分

# 编辑环境变量文件
sudo vim /etc/profile
# 在文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

# 生效配置
source /etc/profile
echo $JAVA_HOME  # 能输出路径即配置成功

(2) 安装MySQL

bash 复制代码
# 1.安装MySQL(2023年新版仓库包)
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
sudo rpm -Uvh mysql80-community-release-el7-11.noarch.rpm
sudo yum install -y mysql-community-server

# 2.启动并设置开机自启
systemctl start mysqld
systemctl enable mysqld

# 3.获取临时密码
grep 'temporary password' /var/log/mysqld.log

# 4.安全设置
mysql_secure_installation

# 5.配置root远程访问
# 登录MySQL
mysql -u root -p
# 切换到mysql库
use mysql;
# 修改root认证方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你设置的root密码';
# 授权root远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
exit;
# 配置MySQL监听地址
sudo vi /etc/my.cnf
# 在[mysqld]部分添加或修改
bind-address = 0.0.0.0
# 保存后重启MySQL
sudo systemctl restart mysqld
#验证监听(应该显示 0.0.0.0:3306 或 :::3306)
sudo netstat -tlnp | grep 3306

按上述步骤在服务器安装和配置MySQL,完成之后可以再配置阿里云安全组,开放3306端口,此时可以使用Navicat连接阿里云服务器的MySQL,直接执行本地的sql文件即可。

(3)安装Tomcat

前往 Apache Tomcat 9 官网 复制 Core -> tar.gz 的链接。

bash 复制代码
cd /usr/local/
# 下载 (链接可能会变,请以官网为准)
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.115/bin/apache-tomcat-9.0.115.tar.gz

# 解压
tar -zxvf apache-tomcat-9.0.115.tar.gz

# 重命名方便管理
mv apache-tomcat-9.0.115 tomcat9

3、项目打包与上传

(1)本地项目打包

点击父工程下的clean,待控制台出现"BUILD SUCCESS"提示之后,点击install,将项目打包。

(2)上传文件到服务器

将本地项目的war包上传到服务器,包括两种方式:

  • 方式一:使用scp命令
bash 复制代码
# 使用scp
scp API.war root@服务器IP:/tmp/
  • 方式二:使用sftp功能上传

在MobaXterm左侧找到SFTP浏览器,连接到你的服务器(与SSH同一个会话),在本地找到WAR包,直接拖拽到服务器的目标目录:

API.war → /usr/local/tomcat9/webapps/

二、部署SSM单体项目

现在我们已经做了好前期准备,部署一个ssm单体项目的流程很简单:

1、配置tomcat

bash 复制代码
# 修改server.xml(调整端口等配置)
vi /opt/tomcat/tomcat9/conf/server.xml

# 找到以下三处进行修改
# Shutdown 端口 (通常在第 22 行左右):
<Server port="8006" shutdown="SHUTDOWN">


# HTTP 端口 (通常在第 69 行左右):
<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

# AJP 端口 (通常在第 116 行左右,如果注释掉了就不用管,没注释则要改):
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

2、部署应用

bash 复制代码
# 如果Tomcat正在运行,停止它
systemctl stop tomcat

# 删除webapps下旧的部署(如果有)
rm -rf /opt/tomcat/tomcat9/webapps/yourproject
rm -f /opt/tomcat/tomcat9/webapps/yourproject.war

# 将WAR文件复制到webapps目录
cp /path/to/yourproject.war /opt/tomcat/tomcat9/webapps/

# 启动Tomcat(会自动解压WAR文件)
systemctl start tomcat

# 查看部署日志
tail -f /opt/tomcat/tomcat9/logs/catalina.out

3、配置项目

bash 复制代码
# 如果项目需要配置文件,可以放在外部
mkdir /opt/app-config
vi /opt/app-config/application.properties

# 修改Tomcat的catalina.sh添加配置路径
vi /opt/tomcat/tomcat9/bin/catalina.sh
# 在开头添加
export CATALINA_OPTS="$CATALINA_OPTS -Dspring.config.location=/opt/app-config/"

4、防火墙和安全组配置

bash 复制代码
# 开放8080端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

# 或者直接关闭防火墙(仅测试环境)
systemctl stop firewalld
systemctl disable firewalld

同时登录阿里云控制台,进入ECS实例,找到安全组配置,添加入方向规则:端口范围:8080;授权对象:0.0.0.0/0(或指定IP)

二、部署SSM聚合项目(将不同模块放在不同Tomcat服务下)

1、复制Tomcat目录

在该文章第一部分,我们已经解压了一个标准的Tomcat到/usr/local/tomcat9。我们将它作为"母板",复制出两份新的。

bash 复制代码
cd /usr/local/

# 复制出 Admin 用的 Tomcat
cp -r tomcat9 tomcat-admin

# 复制出 API 用的 Tomcat
cp -r tomcat9 tomcat-api

2、修改tomcat端口配置

Tomcat 默认占用 3 个端口,必须全部修改,否则第 2 个 Tomcat 启动时会报错端口被占用。

(1)修改tomcat-admin的配置

bash 复制代码
# 编辑配置文件
vi /usr/local/tomcat-admin/conf/server.xml

找到以下三处并修改:

bash 复制代码
# Shutdown 端口 (通常在第 22 行左右):
<Server port="8006" shutdown="SHUTDOWN">


# HTTP 端口 (通常在第 69 行左右):
<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

# AJP 端口 (通常在第 116 行左右,如果注释掉了就不用管,没注释则要改):
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

(2)修改tomcat-api的配置

bash 复制代码
vi /usr/local/tomcat-api/conf/server.xml

Server port 改为 8007

Connector HTTP port 改为 8082

Connector AJP port 改为 8011

3、部署 WAR 包

将 WAR 包分别放入对应的 Tomcat 容器中。为了访问方便(不带项目名),建议都重命名为 ROOT.war。

(1)部署 Admin 项目

bash 复制代码
# 先清空默认应用
rm -rf /usr/local/tomcat-admin/webapps/*

# 上传并重命名 (假设 war 包在本地当前目录)
scp admin.war root@服务器IP:/usr/local/tomcat-admin/webapps/ROOT.war

*访问地址将是:http://服务器IP:8081/\*

(2) 部署 API 项目

bash 复制代码
# 先清空默认应用
rm -rf /usr/local/tomcat-api/webapps/*

# 上传
scp api.war root@服务器IP:/usr/local/tomcat-api/webapps/ROOT.war

*访问地址将是:http://服务器IP:8082/\*

4、启动与运维

(1)启动

bash 复制代码
# 启动 Admin
/usr/local/tomcat-admin/bin/startup.sh

# 启动 API
/usr/local/tomcat-api/bin/startup.sh

(2)检查

bash 复制代码
# 使用ps命令查看进程,应该能看到两个java进程。
ps -ef | grep tomcat


#或者检查端口监听:
netstat -ntlp | grep java
# 应该能看到 8081, 8006, 8082, 8007 都在 LISTENING

(3)开放防火墙

启动并配置防火墙

bash 复制代码
# 启动firewalld服务
sudo systemctl start firewalld

# 设置开机自启
sudo systemctl enable firewalld

# 开放Tomcat端口
sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8082/tcp --permanent

# 重新加载防火墙规则
sudo firewall-cmd --reload

# 验证端口已开放
sudo firewall-cmd --zone=public --list-ports

同时配置阿里云安全组(如果还没配):

登录阿里云ECS控制台

找到你的实例 → 安全组 → 配置规则

添加规则:允许TCP 8081和8085端口(源:0.0.0.0/0 或你的IP)

(4) 验证服务状态

bash 复制代码
# 在服务器上测试
curl -I http://localhost:8081
curl -I http://localhost:8082
相关推荐
寂柒3 小时前
信号量——基于环形队列的生产消费模型
linux·ubuntu
一袋米扛几楼984 小时前
【密码学】CrypTool2 工具是什么?
服务器·网络·密码学
林姜泽樾7 小时前
Linux入门第十二章,创建用户、用户组、主组附加组等相关知识详解
linux·运维·服务器·centos
xiaokangzhe7 小时前
Linux系统安全
linux·运维·系统安全
feng一样的男子7 小时前
NFS 扩展属性 (xattr) 提示操作不支持解决方案
linux·go
南棱笑笑生7 小时前
20260310在瑞芯微原厂RK3576的Android14查看系统休眠时间
服务器·网络·数据库·rockchip
XDHCOM8 小时前
ORA-32152报错咋整啊,数据库操作遇到null number问题远程帮忙修复
服务器·数据库·oracle
Highcharts.js8 小时前
Highcharts React v4.2.1 正式发布:更自然的React开发体验,更清晰的数据处理
linux·运维·javascript·ubuntu·react.js·数据可视化·highcharts
c++之路9 小时前
Linux网络协议与编程基础:TCP/IP协议族全解析
linux·网络协议·tcp/ip
Charlie__ZS9 小时前
Ubuntu 22.04新建用户,并赋予管理权限
linux·os·ubuntn