Linux 云服务器部署 SSM 聚合项目
·
目录
一、部署前准备
1. 服务器环境确认
已完成基础环境搭建(若没有,配置详见前文):
- JDK 8+(推荐 1.8):java -version 验证,确保环境变量 JAVA_HOME 配置正确
- MySQL 5.7+或8.0:mysql -u root -p 能正常登录,且已创建项目所需数据库(如 ssm_project)
- Tomcat 8.5+/9.x:cd Tomcat目录/bin && ./version.sh 验证,确保 8080 端口未被占用或修改使用端口(netstat -tlnp | grep 8080)
- Maven 3.6+(本地打包用):mvn -v 验证,用于项目编译打包
2. 项目本地预处理
- 配置文件修改:
- 项目中jdbc.properties或applicationContext.xml的数据库连接信息改为服务器 MySQL 配置:
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://服务器IP:3306/数据库名?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true jdbc.username=服务器MySQL用户名(常见如root) jdbc.password=服务器MySQL密码 - 确保 Spring 配置文件中 springmvc-servlet.xml 的视图解析器、静态资源映射正常(避免页面 404)。
- 排除不必要依赖:若项目中引入本地测试依赖,需在 pom.xml 中用 test 标记,避免打包时带入。
3. 服务器基础配置
- 开放端口:通过防火墙开放 8080(Tomcat)、3306(MySQL)端口:
# 开放8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 开放3306端口 f
irewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙生效
systemctl restart firewalld
# 查看开放端口
firewall-cmd --list-ports
- MySQL 授权:允许项目通过服务器 IP 连接数据库(避免权限不足):
-- 登录MySQL后执行
GRANT ALL PRIVILEGES ON ssm_project.* TO 'root'@'%' IDENTIFIED BY '你的MySQL密码';
FLUSH PRIVILEGES;
-- 刷新权限
二、项目打包
- 进入本地 SSM 聚合项目根目录(含 pom.xml 的目录)。
- 执行 Maven 打包命令(跳过测试,加快打包速度):
mvn clean package -Dmaven.test.skip=true - 打包成功后,在项目的 target 目录下生成 xxx.war 文件(如 ssm-project.war,文件名可在 pom.xml 中通过<finalName>配置)。
三、项目上传至服务器
方法 1:Xshell + Xftp
- 打开 Xftp,连接服务器(IP、用户名、密码与 Xshell 一致)。
- 本地找到 target 下的 xxx.war 文件,拖拽至服务器的 Tomcat 安装目录的 webapps 文件夹下(如 /usr/local/tomcat/webapps)。
方法 2:scp 命令
本地终端执行(Windows 这里用 Git Bash示例):
scp 本地WAR包路径 服务器用户名@服务器IP:服务器Tomcat的webapps目录
# 示例:
scp D:\project\ssm-project\target\ssm-project.war root@192.168.1.100:/usr/local/tomcat/webapps
输入服务器密码后,等待上传完成。
四、Tomcat 配置优化(可不做)
1. 端口修改(避免 8080 端口冲突)
若需修改 Tomcat 端口(如改为 80 端口,无需输入端口号访问):
- 进入 Tomcat 配置目录:
cd /usr/local/tomcat/conf - 编辑 server.xml 文件:
vim server.xml - 找到以下配置,将 8080 改为目标端口(如 80):
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> - 保存退出:ESC + :wq
2. 项目默认访问(免输入项目名)
若需直接通过 http://服务器IP 访问项目(无需加 /ssm-project),两种方式任选:
- 方式 1:将 WAR 包改名为 ROOT.war(Tomcat 默认优先加载 ROOT 项目):
cd /usr/local/tomcat/webappsmv ssm-project.war ROOT.war
- 方式 2:配置 server.xml 的 Host 节点:
编辑 conf/server.xml,在 标签内添加:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
- path="":默认访问路径(空表示根路径)
- docBase:项目实际路径(WAR 包解压后的目录名)
- eloadable="true":项目文件修改后自动重启(生产环境建议改为 false)
3. 内存优化(避免项目运行内存溢出)
- 编辑 Tomcat 启动脚本:
在文件开头添加 JVM 内存配置(根据服务器内存调整,示例为 2G 内存服务器):vim /usr/local/tomcat/bin/catalina.shJAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
- Xms:初始堆内存,建议为服务器内存的 1/4
- Xmx:最大堆内存,建议为服务器内存的 1/2
- MetaspaceSize:元空间初始大小,避免类加载过多导致溢出
五、项目启动与验证
1. 启动 Tomcat
# 进入 Tomcat 的 bin 目录
cd /usr/local/tomcat/bin
# 启动 Tomcat(后台运行)
./startup.sh &
# 查看启动日志(关键!排查启动失败问题)
tail -f ../logs/catalina.out
2. 启动成功判断
日志中出现以下内容,表示 Tomcat 启动成功,且项目部署正常:
INFO: Server startup in xxxx ms
若日志报错,常见问题及解决:
- 数据库连接失败:检查 jdbc.properties 中 IP、端口、用户名、密码是否正确,MySQL 是否启动(systemctl status mysqld)。
- 端口被占用:netstat -tlnp | grep 8080 找到占用进程,kill -9 进程ID 关闭。
- 类找不到 / 依赖缺失:本地打包时未引入必要依赖,检查 pom.xml 依赖配置,重新打包。
3. 访问项目验证
打开本地浏览器,输入地址:
- 未修改端口和项目名:http://服务器IP:8080/ssm-project
- 修改为 80 端口且设为默认项目:http://服务器IP
验证内容:
- 能否正常进入项目首页(无 404、500 错误)。
- 能否正常登录(数据库连接正常)。
- 核心功能(如数据查询、新增、编辑、删除)是否正常。
六、项目停止与更新
1. 停止 Tomcat
cd /usr/local/tomcat/bin
# 停止 Tomcat
./shutdown.sh
# 若停止失败,强制杀死进程
ps -ef | grep tomcatkill -9 进程ID
#例如
ps -ef | grep tomcatkill -9 1234
2. 项目更新
- 停止 Tomcat(必须先停止,避免文件占用)。
- 删除旧项目文件:
rm -rf /usr/local/tomcat/webapps/ssm-project #或者 rm -rf /usr/local/tomcat/webapps/ROOT - 上传新的 WAR 包至 webapps 目录。
- 重启 Tomcat:
./startup.sh && tail -f ../logs/catalina.out
更多推荐
所有评论(0)