第一次在linux云服务器上部署项目,经过非常坎坷的摸索之后终于部署完成了
进行项目部署的一些默认条件
默认你有一台linux操作系统的云服务器,博客中演示的linux的发行版本是centos7
其次博客中部署的是gitee上的SpringBoot项目,后端打包完的格式是zip格式,默认你也是
博客中前端的部署是使用的nginx
最后使用finalshell作为远程连接工具,有很多优点就不再细说,默认已经连接上了
一,后端项目打包与上传
先在maven中进行clean与install
然后找到target目录,将打包好的项目准备好
编辑
然后在服务器上选择好位置
使用cd指令切到该目录下
cd 路径
使用mkdir指令创建空文件夹
mkdir 文件夹名称
编辑
我这里路径是usr/local新建了iot-parent文件夹
将打包好的项目上传到空文件夹
二,后端项目部署
因为我的项目部署使用的是zip格式的,所以进行要进行解压缩
cd切到这个目录下,使用unzip指令进行解压
unzip 文件名
如果你的项目打包完不是zip,或者不以zip格式的文件部署
我默认你也是使用的开源项目,在项目部署的具体方式上,可以去项目的git上看一看,一般redme文件中都有讲
编辑
解压完成,压缩包先留着,后续项目有问题还可以进行重置
可以去config文件夹下的application.yaml文件(或者springboot项目的其他格式配置文件),对监听端口进行设置,我这边使用的是8083端口
一般情况下,除了后端的接口,还会有数据库的接口
你可以查看端口是否被占用
lsof -i :端口号
然后如果被占用了可以根据列出的信息看一看是否重要
如果不重要可以通过kill指令结束进程
kill 程序pid
也可以看看都哪些端口被占用了
netstat -tuln
换个没有被占用端口
经过一番操作,现在已经设置好后端和数据库的端口,然后还要把前端使用的端口确定下来,然后记下来,去云服务器的防火墙上开放端口
然后启动后端的项目
编辑
按照你的项目的启动方式来就行,我这边是使用start.sh
sh 文件名
编辑
有时候也会因为之前的项目没有关干净,导致端口占用启动不了,还是按照之前的指令给解除占用就行
编辑
然后就启动成功了
三,前端项目打包与上传
如果你没有安装nginx,可以跳转我朋友的这篇
使用的是一键部署,很方便,适合小白
前端项目我也默认你是使用的开源项目,所以项目里一般都有写如何打包
打包完成后你会得到一个dist文件夹
编辑
在服务器上选好路径,把文件夹上传上去就行
然后记住这个路径,后边要用
四,前端项目部署
找到安装的nginx,conf文件夹下的nginx.conf
进行编辑
编辑
打开
编辑
这里边的要点也就这四个,为了方便演示,我给很多注释起来的设置去掉了
第一处
编辑
把user后边改成root,代表root用户
第二处
编辑
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
直接在http下边加入这个就行,否则nginx重启的时候会报错
第三处
编辑
listen后边的端口是访问前端的端口,记得服务器防火墙要开放
server_name后是服务器的ip地址
root后是前端的dist文件夹路径,因人而异,要从根目录开始
index后不用动就这样就可以
第四处
编辑
这一段是我从项目的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,不够了解服务器部署
在腾讯云的防火墙上放行过后端端口之后,前端依然无法访问后端,原因居然是宝塔面板还有一个防火墙,这也是因为我不够了解服务器部署
综上,对以上错误和不足进行反思
如果这篇文档对你有帮助,欢迎点赞收藏支持一下,如果有问题,也欢迎在评论区讨论,博主也会力所能及的帮助大家解决问题
写在最后
感谢你能看到最后。虽然我加入小组也还没有一年,去年来的比较晚,但我也是学长了。去年学习的时候心里总是很浮躁,迷茫,我始终觉得小组是我的枷锁,牢牢地钉在我身上让我动弹不得,只能看着别人自由的模样,羡慕的不得了。天天学习也不怎么认真,博客也逐渐荒废了。
但是近一段时间我的想法好像渐渐的变了,我开始跟在星火的大家打交道,开始感觉到大家每个人都是如此鲜活,虽然已经在小组呆了一个学期,但我感觉从前一段时间开始我才真正加入我们小组。我开始庆幸能够遇到大家,包括平级的友友们也包括高年级的学长学姐。
同时我也成为了我们组的组长,我希望我能给我们组的同学做好榜样,就从现在开始,把博客捡起来