概述
自己电脑是win10,我已经在虚拟机上部署过一次了,对可能遇到的问题有个大概的了解,现在在vps上试试,一步一步来,遇到的问题一个一个解决。
操作系统用CentOS7服务器用Tomcat,数据库就用CentOS7默认的Mariadb(Mariadb完全兼容MySQL),项目已经打好了war包。
首先得有VPS,可以选择国内的腾讯阿里,也可以用国外的。有了VPS就可以开始部署了。
第一阶段:往服务器传文件的手段
我搜了一下“传输文件到VPS”,看到有ftp和sftp两种协议,具体的传输工具有好几种,flashFXP,WinSCP什么的,好像还有Xshell什么的我也不太懂,这里我选择了WinSCP,开始正常的下载安装。打开WinSCP之后看样子要新建一个链接,要选择协议,我选了SFTP
遇到问题:链接服务器失败,提示“拒绝SFTP链接,但是监听FTP,要换成FTP吗?”
我想我这随便用用,不需要加密什么的,所以就用FTP吧
遇到问题:服务器积极拒绝,无法连接
现在容我百度一波,看看怎么解决。
查询过程中出现了一个经常见到但是我不明白是什么意思的词“SSH”
把FTP放一放,先来看看SSH是啥?
嗯,我明白SSH是干啥的了,现在选回SFTP
据网友所说,最有可能的就是VPS防火墙的问题了
然后我又搜了“CentOS7防火墙”,浏览了一下相关的知识。
先来查看一下服务器防火墙的状态
但是我看不懂它返回的信息,不过信息里有一个Active显示dead,估摸着应该是没启动的
于是我输入了启动防火墙的指令,执行成功,Active也显示running了
然后我输入stop的那条指令之后,Active又变成dead了
这说明服务器上防火墙就没启动
那这就奇怪了,为啥连不上?我不禁陷入了深深的思考,局面开始jiang化。
这里我想到一个曲线救国的办法:看看别人怎么用winscp链接VPS的。
结果搜出来的教程全都是输入IP,输入用户名密码,点登陆,就成了??????卧槽???
曲线救国失败。
我突然想到莫非我根本就没有服务器端的SSH,有这个可能
但是SFTP失败之后我就选择了FTP了呀,FTP应该是早就有的协议吧
这里又进入了我的知识盲区,只知道FTP是个文件传输协议是解决不了这个问题的
我大致了解了FTP里面的一些东西了,链接不上是因为CentOS7本身不自带FTP服务端。
CentOS7并没有自带FTP的服务端
所以我们要自己安装,我推荐先看看FTP的百度百科,再结合下面的博客安装,应该就差不多了
用yum命令安装,安装完默认是开启匿名登陆的,也就是可以用匿名用户的身份使用ftp服务
(本来我想新建一个虚拟用户,但是感觉挺麻烦的,所以先用匿名的了。)
匿名用户用户名是ftp或者anonymous,密码可以看后面给的网页
安装完之后我就直接用WinSCP登陆了,登陆很成功,进入到了默认的文件夹
遇到问题:不能上传,只能下载,提示permission denied
分析问题:
这应该就是文件权限的问题了,安装ftp的时候教程一直有提到防火墙和SELinux,我就默认是设置好的,现在终于遇到问题了。
能下载说明ftp的21端口是没问题的,和防火墙没有关系,那么就剩SELinux的问题或者本身的文件权限的问题
(其实看前面就知道防火墙已经关了,但是我早忘了。)
解决问题:
我发现同步的文件夹也就是/var/ftp的所属用户是root
所以我把该文件的所属用户改成了ftp,此时ftp这个用户对此文件的权限为最高
WinSCP是用ftp和空密码登陆的,对这个文件是以ftp的身份访问的,所以该有的权限都有
遇到问题:permission denied
解决问题:
重启一下ftp服务
遇到问题:卧槽,干脆连不上了
解决问题:
没办法,只能把用户还回root了,重启服务,又能连接上了。
回到问题:permission denied
分析问题:
上一步说明不是文件权限的锅,或许是ftp配置里面就不允许匿名用户上传文件?怕传病毒?
解决问题
改一下配置
看到配置文件里面果然是不允许匿名上传的
允许上传和新建文件夹之后,重启服务再试一次
遇到问题问题:提示变成can’t create file类似的东西
分析问题:
不能创建文件,看这次的错误提示很像是文件权限的锅
但是ftp文件的所属用户又不能改,难道换一下ftp文件对其他用户的权限就行了?
解决问题:
干脆新建一个文件夹吧,用户还是root,但是权限是777,再试一次。
成功!!!!!
说明就是文件权限的锅,和哪个用户没有关系
ps:当然,应该可以不用777,通过改变用户的方法来达到目的,这里我就不实验了。
至此,第一阶段任务完成
附上配置文件翻译
百度百科:FTP
用来参考的博客
也可以选这个,这个比较全
第二阶段:安装Tomcat
第一步先来安装JDK
首先看看操作系统有没有自带的,有的时候会自带openjdk,和安装的时候的选项有关系
有就删了,没有就从官网下载一个tar包,然后用上传到服务器。
也可以直接用指令下载,不过我不知道一般下东西都是怎么知道那个url的
上传,找好位置,解压,配置,一套流程下来然后检测一下有没有安装好
这里出现了一个奇怪的问题,租vps给的控制网页有好几个shell,有一个基本的shell检测不到java指令,另一个比较高级的却能???
上传速度比较慢,不知道是我的带宽有问题,还是FTP服务没有配置好。
上面的过程发现VPS提供商给的shell不好用,所以换成putty试试。
下载,解压,发现链接失败,提示拒绝什么的
卧槽,猜猜什么原因???SSH配置文件里面的port居然不是22,惊喜不惊喜,意外不意外?
然后root登陆的时候提示access denied
卧槽,再猜猜什么原因???因为root密码输错啦,我有个固定的root密码,结果人家的密码不是你设置的,怎么输都不对,最后到VPS的控制面板才看到真正的密码……
用putty连接了服务器,感觉比起自带的shell好了点,但是不多,凑合用吧
还有一开始传文件的时候说的ssh连接不到的原因,现在也知道了,centos7是自带openssh的,应该就是端口号有问题,或者root密码不对,下次不知道能不能直接用ssh传文件,不装ftp服务了。
第二步,安装Tomcat
套路都一样,下载,上传,配置
配置里要提的是profile的路径,不知道不配置行不行
还有就是端口号了,可以设置成80,当然也可以不设置
然后把上传的war包放到tomcat安装路径的webapp里面就会自动解压
然后就能通过IP地址访问了,或者可以考虑租个域名:)
弄好之后可以访问一些不需要数据库的网页
第三阶段:安装数据库
就用CentOS7自带的Mariadb
yum安装,配置
注意字符集的配置
接下来导入项目事先建好的数据库,当然要先从建表的地方导出成sql文件
上传,导入
然后连接不到数据库
出现的状况是可以访问tomcat的主页,也就是输入IP直接访问正常
输入登陆jsp页面的路径,即:IP/ServiceOld/index.jsp,也正常
一点登陆,也就是连接数据库的时候失败了,500,java空指针异常
Mariadb是正常运行的,我不知道为啥
先看了mariadb的端口是3306,项目里也是3306,没问题
又检查了连接的语法,应该是没问题的
java异常的log我又看不懂,只能大概知道是连接数据库有异常
没办法了,看到网上有人给连接数据库的每一步都用try块包起来,只能这么做了
本来想直接在服务器上改改,发现自己不太懂怎么改
于是我就在eclipse里加上了信息,打算重新打war包
war包打好,上传,把原来的war包删了,但是tomcat自动解压的文件没有删,直接把新war包移动到webapp里
结果好了…………
WTF???本来打算看看输出的信息,看看哪一步出了问题,结果换了个war包就好了???
我就把两句代码加上了try块,然后就好了??
不知道一开始出了什么问题,也不知道为什么好了
期间我因为脑子混乱,重新导入war包的时候把数据库删了重新导入了一遍,而且第一次导入没有use,直接source导致失败,第二次才成功
或者是因为之前的加载驱动,连接数据库在一个try块里面,catch的异常类型是Exception,后来改成两个try块,异常类型也变了,有可能是这个原因。
综上,全部部署过程完成,网站可以正常访问