听说你还不会在服务器上部署项目?看这一篇文章就够了

作为一名资深(fu xiu)的程序猿来说 , 一直不想向IDEA低头可能是我对MyEclipse最大的尊重 。最近利用SSM框架搭建了一个项目后台 。但是由于开发人员并不能处于同一个局域网中 , 于是将后台需要部署到公网服务器中 。但是与普通的JAVAweb项目不同的是该项目是一个基于maven的多模块工程 。其实刚开始笔者一直在担心不知如何部署 , 在网上搜到的资料也是零星半点 。通过网上的一些思路 , 加上自己半天的摸索 , 终于将后台成功部署到服务器上 。下面就具体讲解一下如何部署maven多模块工程到公网服务器上 。PS:笔者服务器选用某云服务器(服务器只要是公网运行的就可以了!)
1、对maven项目进行打包 , 文件格式为war包
我们在使用SSM框架进行构建项目的时候 ,  父工程的打包方式是pom , common工程的打包方式是jar , 主要的项目工程是我们的聚合工程 , 打包方式是pom ,  聚合工程中又包括dao、pojo、interface、service、web工程 , 其中前四个打包方式都为jar , web工程的打包方式为war , 那么我们的思路就很清晰了——就是将web工程打包出来 。下图给出项目文件的整体架构图 。

听说你还不会在服务器上部署项目?看这一篇文章就够了

文章插图
项目结构图
对父工程、common工程、项目工程文件进行安装 , 安装方法就是对工程进行右键---> Run as ---> Maven install , 操作过程如下图所示:
听说你还不会在服务器上部署项目?看这一篇文章就够了

文章插图
安装maven项目
如果项目没有同步更新的话 , 在这一步可以对项目行update , 具体操作过程可以见下图 。
听说你还不会在服务器上部署项目?看这一篇文章就够了

文章插图
【听说你还不会在服务器上部署项目?看这一篇文章就够了】更新maven项目
安装成功后在console框中可以看到安装成功之后的war包的路径 , 如下图所示 。
听说你还不会在服务器上部署项目?看这一篇文章就够了

文章插图
war包所在文件夹
从计算机中打开这个路径 , 就会看到一个web工程的war包 , 我们可以记住这个路径 , 然后登陆上我们的云服务器 。项目需要部署到Tomcat容器中 , 因此需要在服务器上安装tomcat容器 , 运行tomcat的前提还是需要保证服务器上具有jdk环境 。因此还需要在服务器上安装jdk , 安装jdk以及tomcat容器的步骤实质非常简单 , 配置环境变量的步骤稍稍有些复杂 , 如果有不清楚的读者还不清楚怎么安装 , 可以自行百度或者评论留言 , 如果有必要我也会一步一步地将安装过程整理成一个帖子发出来 。
听说你还不会在服务器上部署项目?看这一篇文章就够了

文章插图
打包后的war文件
在此假设我们的服务器已经有了jdk环境以及tomcat容器 。将我们上步的war包通过文件上传工具上传到我们的服务器环境 , 然后进入服务器中的tomcat安装包中 。
听说你还不会在服务器上部署项目?看这一篇文章就够了

文章插图
tomcat安装包
将上传到服务器的war包复制到tomcat的webApps目录下(使用cp命令进行复制) , 复制之后的结果如下图所示:
听说你还不会在服务器上部署项目?看这一篇文章就够了

文章插图
复制成功自动解压文件
我们退回到启动bin目录下 , 也可以直接输入命令(这种需要我们对tomcat的安装包目录比较熟悉后使用) , 启动之后我们可以查看tomcat的启动日志
//启动tomcat的命令 进入bin目录下 运行startup.sh文件(假设我们目前在webapps目录下)../bin/startup.sh//查看tomcat启动日志的命令(假设在webapps目录下)tail -f ../logs/catalina.out看到如下的结果说明我们的tomcat启动成功:
听说你还不会在服务器上部署项目?看这一篇文章就够了

文章插图
tomcat启动成功
在浏览器中验证服务是否正常启动后台 , 在地址栏中输"公网ip:端口号(默认8080 , 可以自行设置端口80)/ 工程名/ controller文件下请求的路径" , 成功如下图所示 。写到这里 , 说明我们的后台服务已经能够正常启动 , 相对于一个前后端分离的项目 , 日后我们只需对后台进行维护和添加相应的服务 , 前端可以根据自己的需求进行请求服务 , 不受距离限制 , 保证网络即可 。在整个配置过程中笔者还遇到一些其他的问题 , 但都不是很难受的问题 , 只要我们认真看启动日志 , 就能够解决一多半的问题 。在此期间我遇到一个无法连接jdbc的问题 , 问题描述很清晰:"can‘t not connect the jdbc" 。遇到这种问题首先很容易想到是不是网络问题 , 但是对于本项目而言 , 数据库是使用的公网的oracle数据库 , 同一个服务器上的应该不存在这种问题 , 想想既然会在同一台机器那么我们是不是可以使用localhost或者127.0.0.1这种连接地址进行连接数据库(因为数据库相对于服务器来说应该说是本地环境) , 但是试了一下发现还是不可以 , 但是我觉得我想的道理应该没错 , 可能受于云服务器的安全限制 。于是我又改回来原来的ip 。使用本地服务器连接公网数据库 , 发现还是同样的错误 , 于是我就想到了公网的数据库很有可能没有跑起来 , 再然后我去服务器上查看oracle的进程以及端口都没有开启监听 , 使用navicat for oracle连接数据库都显示没有开启监听问题 , 这种更加确定了问题的所在--数据库没有启动 。于是在服务器上又开始开启数据库 , 由于第一次在云服务器上操作oracle数据库显然也是遇到了许多困难 , 对一些命令不熟悉不知道如何开启监听 , 也害怕哪个命令会搞坏这个东西 , 但最终还是摸索开启了数据库(如果大家这部分还有疑问的话可以评论留言 , 我有空还是会把这部分的经验步骤写出来 , 虽然不可能面面俱到的讲解 , 但起码我们有了解决问题的能力!) , 最终数据库连接成功 。至此mavne多模块项目也就成功部署到了云服务器上!


推荐阅读