如何在云服务器部署单体项目和聚合项目
其实我们在云服务器上部署单体项目和聚合项目的步骤与在本地部署的流程是一样的,这里我连接服务器用的是 Xshell 和 Xftp 两款工具,下面分别讲解单体 Mavenweb 项目、SSM聚合多模块项目完整云服务器部署流程,系统以 CentOS7 为例。
一、部署前期准备
1.1 工具说明
-
Xshell:远程 SSH 终端工具,用来登录 CentOS7 云服务器,执行 Linux 命令、查看日志、启停项目。
-
Xftp:文件传输工具,基于 SFTP 协议,可以把本地打包好的 war 包上传到云服务器指定目录,实现本地与服务器文件互传。
1.2 服务器环境提前部署
部署 Maven Web、SSM 这类传统 Web 项目,需要提前在 CentOS7 服务器装好以下环境:
-
JDK1.8(必须和本地开发使用的 JDK 版本保持一致,避免版本兼容报错)
-
Tomcat8.5 服务器(用来运行 war 格式的 Web 项目)
-
MySQL5.7/8.0(存放业务数据,需要提前创建项目数据库、给账号开启远程访问权限)
云服务器安全组放行端口:8080(Tomcat)、3306(MySQL),否则外网无法访问项目与数据库。
对于上面三个环境的安装问题,我们可以在官网下载压缩包通过xftp上传到服务器的/opt目录下,然后在此目录下进行解压(或者将自己本地配置好的文件夹上传),安装完jdk之后,记得配置配置 JAVA_HOME 环境变量。具体的步骤可以参考网上的资料
这里我为了演示清晰,用了两个版本的tomcat(其实都一样),我在9.0版本的tomcat做单体项目演示,在8.5.0的tomcat上做聚合项目演示

1.3 环境校验命令
Xshell 连接服务器后,执行以下命令验证环境是否正常:
# 校验JDK环境
java -version
# 校验Maven环境(打包需要)
mvn -v
# 查看Tomcat进程
ps -ef | grep tomcat
二、单体 Maven Web 项目云服务器部署(war 包部署)
单体项目我在9.0版本的tomcat上进行演示
2.1 本地 Maven 打包
-
IDEA 打开 Maven 侧边栏,先执行 clean 清理上一次打包残留文件;
-
再执行 package 进行项目打包;
-
打包成功后,在项目 target 目录下会生成 .war 后缀的部署包。
![image]()
2.2 上传 war 包到云服务器
-
Xshell 登录云服务器,找到 Tomcat 的 webapps 目录,一般路径为:/opt/apache-tomcat-9.0.115/webapps/;
cd /opt/apache-tomcat-9.0.115/webapps/ -
打开 Xftp,连接同一台服务器,将本地 target 下的 war 包直接拖拽上传到 webapps 文件夹;
2.3 修改server.xml文件
- 打开/opt/apache-tomcat-9.0.115/conf目录下的server.xml文件,在文件中添加如下代码:
<!-- 每个service的名称要区别开 -->
<Service name="Catalina1">
<!-- 每个项目的端口号也要进行区分,保证不被占用 -->
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URLEncoding="UTF-8"/>
<!-- 这里的AJP端口同样也要进行区分 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
<Engine name="Catalina1" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<!-- 这里是想要部署的对应项目的名称 -->
<Context docBase="ham-file-1.0-SNAPSHOT" path="/" reloadable="true"/>
</Host>
</Engine>
</Service>


按esc ,输入:wq 回车退出。
这样配置文件就修改好了。
2.4 配置数据库并启动 Tomcat
启动 Tomcat 服务
# 进入Tomcat的bin目录
cd /opt/apache-tomcat-9.0.115/bin
# 启动Tomcat
./startup.sh
2.5 打开浏览器,输入云服务器的ip+端口号访问
也就是
服务器ip:端口号
输入到浏览器的网址栏,就即可访问部署完成的单体 Maven Web 项目。(如果访问不了记得打开云服务器的防火墙,放行自己设置的端口号即可)
三、云服务器部署SSM聚合多模块项目
SSM 聚合项目由父工程 + 多个子模块构成,这里我以最近做的hami音乐项目为例简单演示在云服务器部署SSM项目。
这里我是用8.5版本的tomcat进行云服务器部署的演示,接下来简单介绍以下hami音乐项目的大致组成:

其中,属于web项目的是console(后台)、file(图片服务器)以及portal(后台),所以今天的tomcat本地部署就是部署这三个web
3.1 打包SSM项目
我们和前面单体项目一样,打开IDEA右侧的Maven视图,这里我们只需要对父工程进行清理(clean)和打包(install),就能够得到三个子模块的war包

3.2 上传 Web 模块的 war 包
-
在聚合项目的 Web 子模块的 target 文件夹中找到打包好的 war 包;
-
通过 Xftp 将 war 包上传到服务器 Tomcat 的 webapps 目录下;
-
若一个服务器部署多个 SSM 聚合项目,可以部署多个 Tomcat,或者修改 Tomcat 端口实现多项目共存。
3.3 修改server.xml文件
还是和之前一样,进入到/opt/apache-tomcat-9.0.115/conf目录下,找server.xml文件进行修改,添加如下代码(需要部署多少个,就加几个,我这里是3个,所以就加了3个)
<!-- 每个service的名称要区别开 -->
<Service name="Catalina1">
<!-- 每个项目的端口号也要进行区分,保证不被占用 -->
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URLEncoding="UTF-8"/>
<!-- 这里的AJP端口同样也要进行区分 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
<Engine name="Catalina1" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<!-- 这里是想要部署的对应项目的名称 -->
<Context docBase="ham-file-1.0-SNAPSHOT" path="/" reloadable="true"/>
</Host>
</Engine>
</Service>
<Service name="Catalina2">
<Connector port="8075" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URLEncoding="UTF-8"/>
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
<Engine name="Catalina2" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="ham-portal-1.0-SNAPSHOT" path="/" reloadable="true"/>
</Host>
</Engine>
</Service>
<Service name="Catalina3">
<Connector port="8089" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URLEncoding="UTF-8"/>
<Connector port="8012" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
<Engine name="Catalina3" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="ham-console-1.0-SNAPSHOT" path="/" reloadable="true"/>
</Host>
</Engine>
</Service>
注意:每对service里面都有两处需要修改:修改端口号和docBace的值。这里需要注意的是这里设置的端口号要和IDEA这个i不过tomcat配置中设置的端口号一致
3.4 启动tomcat
进入到/opt/apache-tomcat-9.0.115/bin目录下,启动tomcat
3.5 打开浏览器,分别输入云服务器IP:端口号,打开三个web项目
四、单体 Maven Web 项目与 SSM 聚合项目部署核心差异
| 部署维度 | 单体 Maven Web 项目 | SSM 聚合多模块项目 |
|---|---|---|
| 打包位置 | 直接在当前 Web 项目执行 clean+package | 必须在父工程统一打包,遵循依赖先后顺序 |
| 打包数量 | 仅生成 1 个 war 包 | 仅 Web 启动模块生成 war,其他子模块为 jar 依赖包 |
| pom 打包配置 | 当前项目直接配置 war 打包 | 仅 Web 子模块配置 war,其余子模块为 jar |
| 依赖管理 | 直接引入第三方依赖 | 统一在父工程管理依赖版本,子模块继承父工程依赖 |
| 部署方式 | 单个 war 部署 Tomcat | 依旧单个 war 部署,内部整合所有子模块代码 |


浙公网安备 33010602011771号