部署步骤
第一步 打包
在idea使用maven将web项目打成 war包,这步不会自行百度
第二步 部署
在部署前需要自己在阿里云或者其他云,买一个云服务器,记得把相应的端口打开,web服务需要打开 8080(tomcat),3306(mysql),其他的端口自动打开了。
之后使用xshell连接到开的服务器,在服务器上安装相应软件,jdk,mysql,tomcat,然后将war包放到tomcat的webapps目录下即可。
第三步 遇到的问题
大致步骤就是按照上述两步即可,有些小问题在此记录一下。
1 项目端
因为在Idea上能正常运行,所以没怎么在意,直接将项目部署到服务器,但是访问的时候发现找不到对应的资源,404即找不到资源路径。
最后才发现是在项目里面使用的绝对路径,导致部署到服务器出错,不要使用绝对路径,需要使用request.getContextPath() ,request.getServletPath()等来动态获取项目的路径。
但这里也碰到一个问题,在controller端,使用request获取到对应的动态地址,然后要将结果传到jsp端,在jsp一般页面其实不用传地址,他可以自己使用相应的函数来获取,但是我有个按钮使用的ajax,即在jsp里面写函数,在这个函数里面不能使用相应函数动态获取地址,所以在controller获取地址将其保存在requestScope中,然后可以在ajax函数中获取地址,记得使用""将${requestscope.page.path}括起来,不然获取地址的时候会在最后多一个}符号。
2 tomcat 端
上述修改完,部署到本地tomcat里面进行测试,没有任何修改,原来忘记清缓存了,将项目部署过来之后,页面连接报错,查看tomcat端的日志,看看报的什么错。
第一个错是项目使用jdk8编译的,服务器端安装的jdk7;
第二个就是tomcat版本较低,不支持项目里的某些jar包;
第三个错在连接的时候,没有报错,而是一直转圈访问,这应该不是项目地址出错,查看tomcat日志,发现一直在重连数据库,Public Key Retrieval is not allowed是mysql8.0之后的,需要在连接中加allowPublicKeyRetrieval=true。
3 mysql
上述测试成功,就把war包部署到云服务器,然后需要自己下载mysql,tomcat,jdk。
我使用的tar包安装(也可以使用源码安装,centos的rpm包安装),安装完成后,修改mysql配置文件,自己最好网上搜一下各个参数含义,这样知道报错的意思,参数配置切记不能有空格。
总结
在部署的时候,遇到错误,需要查看相应的日志信息,这样才能有方向的进行修改,而不是想到什么试什么