从零开始网站部署全过程记录

概述

这篇文章是我2018年2月份写的,当时刚学完servlet,写了个非常非常非常简单的老人服务管理系统。想着把所有的流程都走一遍,于是租了服务器,准备上线部署,也是遇到了很多问题,到现在也是有一年多的开发经验了,回顾那个时候,感觉分析问题的思路还可以O(∩_∩)O哈哈~,最近打算重新整理一下文章的排版,也做个总结。(当时刚接触Markdown语法,写的是真的烂-_-||)

有什么问题欢迎在评论区提问,只要我看到了肯定会尽力解答,只要我没把这句话删了,就一直有效。


总结放在前面

  首先,要能把文件传到服务器上,不管用什么方法,只要能把本地文件上传上去就行了,一般都用SFTP传文件。
  然后,要配置运行环境,就和本地配置一样,能让你的Tomcat,Apache或者NGINX等等各种web容器运行起来,就行了。
  最后,把你的项目传上去就OK了。

以下是对原来的整理

  自己电脑是win10,我已经在虚拟机上部署过一次了,对可能遇到的问题有个大概的了解,现在在vps上试试,一步一步来,遇到的问题一个一个解决。操作系统用CentOS7,web服务器用Tomcat,数据库就用CentOS7默认的Mariadb(Mariadb完全兼容MySQL),项目已经打好了war包。

首先得有VPS(也就是公网的服务器),可以选择国内的腾讯阿里,也可以用国外的。有了VPS就可以开始部署了。

第一阶段:往服务器传文件的手段

第一阶段最后有一些用到的链接。

  我搜了一下“传输文件到VPS”,看到有ftp和sftp两种协议,具体的传输工具有好几种,flashFXP,WinSCP什么的,好像还有Xshell什么的我也不太懂,这里我选择了WinSCP,开始正常的下载安装。打开WinSCP之后看样子要新建一个链接,要选择协议,我选了SFTP。

(其实就是些乱七八糟的SSH客户端,Xshell和Xftp搭配使用体验还可以,不过现在Windows上我觉得“MobaXTerm”不错,功能比较齐全。SFTP就是用SSH的协议传文件,而一般服务器都会自带SSH服务,所以SFTP是开箱即用的文件传输手段。)

  然后输入IP、用户名、密码=>点击连接,毫无疑问失败了:

  • 遇到问题:链接服务器失败,提示“拒绝SFTP链接,但是监听FTP,要换成FTP吗?”

    内心OS:我想我这随便用用,不需要加密什么的,所以就用FTP吧。

(坑爹的搬瓦工默认的ssh端口号不是22,害得萌新时期的我连不上又去单独搞ftp服务去了,绕了一个大弯子。)

  • 遇到问题:服务器积极拒绝,无法连接。

    内心OS:现在容我百度一波,看看怎么解决。

  查询过程中出现了一个经常见到但是我不明白是什么意思的词“SSH”。把FTP放一放,先来看看SSH是啥?

  嗯,我明白SSH是干啥的了,现在选回SFTP,据网友所说,最有可能的就是VPS防火墙的问题了,然后我又搜了“CentOS7防火墙”,浏览了一下相关的知识。

  先来查看一下服务器防火墙的状态,但是我看不懂它返回的信息,不过信息里有一个Active显示dead,估摸着应该是没启动的,于是我输入了启动防火墙的指令,执行成功,Active也显示running了,然后我输入stop的那条指令之后,Active又变成dead了,这说明服务器上防火墙就没启动,那这就奇怪了,为啥连不上?我不禁陷入了深深的思考,局面开始jiang化。

  这里我想到一个曲线救国的办法:看看别人怎么用winscp链接VPS的。结果搜出来的教程全都是输入IP,输入用户名密码,点登陆,就成了??????卧槽???

  曲线救国失败,我突然想到莫非我根本就没有服务器端的SSH,有这个可能,但是SFTP失败之后我就选择了FTP了呀,FTP应该是早就有的协议吧,这里又进入了我的知识盲区,只知道FTP是个文件传输协议是解决不了这个问题的。

(我当时想的应该是ftp协议很早就有了,服务器应该集成了吧,其实已经想错了,还怀疑服务器没有ssh服务,?,没有ssh咋连的服务器……接下来的内容都是鼓捣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的,上传,找好位置,解压,配置,一套流程下来,然后检测一下有没有安装好。

ps:这里出现了一个奇怪的问题,租vps给的控制网页有好几个shell,有一个基本的shell检测不到java指令,另一个比较高级的却能???
pps:上传速度比较慢,不知道是我的带宽有问题,还是FTP服务没有配置好。

(其实OpenJDK也行,不要看不起OpenJDK,当然也能自己下载,配置好环境变量之后就Java环境就算弄好了。)

  上面的过程发现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块,然后就好了??不知道一开始出了什么问题,也不知道为什么好了。

ps:期间我因为脑子混乱,重新导入war包的时候把数据库删了重新导入了一遍,而且第一次导入没有use,直接source导致失败,第二次才成功。
pps:或者是因为之前的加载驱动,连接数据库在一个try块里面,catch的异常类型是Exception,后来改成两个try块,异常类型也变了,有可能是这个原因。

综上,全部部署过程完成,网站可以正常访问

你可能感兴趣的:(实操经验-练习)