第一次在linux云服务器上部署项目,经过非常坎坷的摸索之后终于部署完成了

进行项目部署的一些默认条件

默认你有一台linux操作系统的云服务器,博客中演示的linux的发行版本是centos7

其次博客中部署的是gitee上的SpringBoot项目,后端打包完的格式是zip格式,默认你也是

博客中前端的部署是使用的nginx

最后使用finalshell作为远程连接工具,有很多优点就不再细说,默认已经连接上了

一,后端项目打包与上传

先在maven中进行clean与install

然后找到target目录,将打包好的项目准备好

linux云服务器部署gitee开源springboot项目_项目部署

这里选择打包好的zip格式文件,因为开源项目作者是推荐用这个部署的

然后在服务器上选择好位置

使用cd指令切到该目录下

cd 路径

使用mkdir指令创建空文件夹

mkdir 文件夹名称

linux云服务器部署gitee开源springboot项目_nginx_02

我这里路径是usr/local,新建了一个iot-parent文件夹

将打包好的项目上传到空文件夹

二,后端项目部署

因为我的项目部署使用的是zip格式的,所以进行要进行解压缩

cd切到这个目录下,使用unzip指令进行解压

unzip 文件名

如果你的项目打包完不是zip,或者不以zip格式的文件部署

我默认你也是使用的开源项目,在项目部署的具体方式上,可以去项目的git上看一看,一般redme文件中都有讲

linux云服务器部署gitee开源springboot项目_nginx_03

解压完成,压缩包先留着,后续项目有问题还可以进行重置

找到在config文件夹下的application.yaml文件(或者springboot项目的其他格式配置文件),对监听端口进行设置,我这边使用的是8083端口

一般情况下,除了后端的接口,还会有数据库的接口

可以通过命令查看端口是否被占用

lsof -i :端口号

然后如果被占用了可以根据列出的信息看一看是否重要

如果不重要可以通过kill指令结束进程

kill 程序pid

如果是比较重要的程序,不能直接kill程序

可以看看都哪些端口被占用了

netstat -tuln

换个没有被占用端口

经过一番操作,现在已经设置好后端和数据库的端口,然后还要把前端使用的端口确定下来,然后记下来,去云服务器的防火墙上开放端口

然后启动后端的项目

linux云服务器部署gitee开源springboot项目_服务器_04

按照你的项目的启动方式来就行,我这边是使用start.sh

sh 文件名

linux云服务器部署gitee开源springboot项目_nginx_05

有时候也会因为之前的项目没有关干净,导致端口占用启动不了,还是按照之前的指令给解除占用就行

linux云服务器部署gitee开源springboot项目_服务器_06

然后就启动成功了

三,前端项目打包与上传

如果你没有安装nginx,可以跳转我朋友的这篇

nginx一键部署

使用的是一键部署,很方便,适合小白

前端项目我也默认你是使用的开源项目,所以项目里一般都有写如何打包

打包完成后你会得到一个dist文件夹

linux云服务器部署gitee开源springboot项目_项目部署_07

在服务器上选好路径,把文件夹上传上去就行

然后记住这个路径,后边要用

四,前端项目部署

找到安装的nginx,conf文件夹下的nginx.conf

进行编辑

linux云服务器部署gitee开源springboot项目_nginx_08

linux云服务器部署gitee开源springboot项目_项目部署_09编辑

 打开

linux云服务器部署gitee开源springboot项目_nginx_10

 配置文件中比较重要的四个部分,为了方便演示,我给很多注释起来的设置去掉了

第一处

linux云服务器部署gitee开源springboot项目_项目部署_11

把user后边改成root,代表root用户

第二处

linux云服务器部署gitee开源springboot项目_项目部署_12

map $http_upgrade $connection_upgrade {
           default upgrade;
           ''      close;
       }

直接在http下边加入这个就行,否则nginx重启的时候会报错

第三处

linux云服务器部署gitee开源springboot项目_服务器_13

listen后边的端口是访问前端的端口,记得服务器防火墙要开放

server_name后是服务器的ip地址

root后是前端的dist文件夹路径,因人而异,要从根目录开始

index后不用动就这样就可以

第四处

linux云服务器部署gitee开源springboot项目_项目部署_14

这一段是我从项目的gitee那里弄来的,你也可以去项目的gitee上看一看,然后画线的那里,ip就是后端服务器ip,端口就是后端的监听端口

这些全都搞完,保存然后项目部署就基本完成了

总结与反思

这次项目部署历时好几天

犯了不少错误,走了很多弯路

1,因为端口占用启动失败,没有去看日志文件的意识

最开始我是在自己电脑的虚拟机上尝试的部署,根据项目的gitee上的介绍用sh文件打开,但是一直启动不了,因为前几天刚学了点docker就使用了docker对项目进行了部署,当时好像也没什么问题

后来我的朋友跟我说不需要使用docker,用项目gitee上介绍的方式就行,一直启动不了是因为端口占用了,打印的日志在log文件中,没有去看,这也不够细致,要学会看日志文件

2.nginx重复安装导致端口占用,不知道如何解除占用

因为用的是学长的服务器,所以不知道已经安装过nginx了,所以又安装了一个nginx,因为端口占用,导致新的nginx启动不了,我试图把这原有的nginx关闭掉,查了端口,用kill指令结束进程,但是结束之后又会出现新的nginx进程(从pid不同得知),现在看来应该是没有关闭主进程导致的。后续即使是把原有的nginx的文件删了,进程也还是一直在运行,直到意外之中关闭了主进程,才解决这个问题

3,不理解nginx配置文件,看教程照猫画虎导致参数配置错误

在部署过程中,我在网上查了一些资料和博客,但是并没有弄明白nginx的conf文件中各个参数的含义,直接就根据自己的想法进行了配置,这是非常不严谨的

4,过于想当然

在对服务器进行防火墙端口放行设置的过程中,想当然的认为服务器内部进行访问的后端接口不需要放行,导致前端一直无法连接后端

5,不够了解服务器部署

在腾讯云的防火墙上放行过后端端口之后,前端依然无法访问后端,原因居然是宝塔面板还有一个防火墙,这也是因为我不够了解服务器部署

综上,对以上错误和不足进行反思

如果这篇文档对你有帮助,欢迎点赞收藏支持一下,如果有问题,也欢迎在评论区讨论,博主也会力所能及的帮助大家解决问题

写在最后

        感谢你能看到最后。虽然我加入小组也还没有一年,去年来的比较晚,但我也是学长了。去年学习的时候心里总是很浮躁,迷茫,我始终觉得小组是我的枷锁,牢牢地钉在我身上让我动弹不得,只能看着别人自由的模样,羡慕的不得了。天天学习也不怎么认真,博客也逐渐荒废了。

        但是近一段时间我的想法好像渐渐的变了,我开始跟在星火的大家打交道,开始感觉到大家每个人都是如此鲜活,虽然已经在小组呆了一个学期,但我感觉从前一段时间开始我才真正加入我们小组。我开始庆幸能够遇到大家,包括平级的友友们也包括高年级的学长学姐。

    同时我也成为了我们组的组长,我希望我能给我们组的同学做好榜样,就从现在开始,把博客捡起来