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