将瑞吉jar包部署在远程服务器并成功运行
- 前言
- 手动部署项目
- Shell 脚本自动部署项目
前言
目前开始写初步部署,因为我是完全用jar包部署的,直接部署的。没有放在docker容器中,所以我先这样做了。因为目前项目还是存在许多不足的地方,只是功能上的不完善,所以目前开始写jar包的初始部署运行。
一遍在这边练习部署的命令和docker容器,一遍从头开始梳理瑞吉外卖的整个过程,我觉得一定就闭环了。
我相信一定要自己试一遍,不要眼高手低。
手动部署项目
首先我们打开idea,进行打jar包,点击这里我们运行生成jar。
生成的时候会告诉你生成在哪里。其实就在我们的target目录,在你当前项目的target目录里面。
还有一点,如果你的项目没法打成jar包,可能是你的maven打jar包的依赖没有导入。其实你自动生成springboot项目的话一般会带的。
我们要部署在远程服务器,不要部署在虚拟机。我需要将这个文件首先上传到远程服务器。
我这里用到的是FinalShell,这个挺方便的,远程连接,还可以帮我们更好的查看目录结构,当然也可以上传文件到远程服务器。上传到一个文件夹里面。建议的话最好是一个简单的文件夹,这样自己可以记住在哪里。
上传上去之后,我们就需要运行jar包了,你的服务器肯定需要一些基础条件,必须有jdk,必须有mysql的服务,而且数据库得有,基本的表这些。我们后面再说我们还得准备什么,但是数据库,jdk是你目前运行jar包需要的,tomcat并不是需要的,jar包自带了。
没有的话自己安装一下。
有两种运行方式
可以这样去运行
代码语言:javascript复制java -jar reggle_demo_jgdabc-0.0.1-SNAPSHOT.jar
注意自己的路径,我的jar包在我当前路径,自己没在的话记得加上路径。
这样就启动成功了,现在我们去自己的电脑去访问,自己注意端口的问题。
后台管理没有问题
这里我还在手机端输入链接访问了一下没有问题。
但是这个其实除了功能不完善的问题以外还有图片展示的问题。为什么图片为什么没有正常展示,因为我们之前在图片存储的时候路径的问题,到了远程服务器就不一样了,路径变了,所以这个不能正常展示,但是这个不影响项目的运行,怎么做,有多种办法,可以在idea里面改,也可以在服务器运行jar包的时候指定图片存储路径,不过这样似乎还不如直接在idea里面改,后面我们项目完善的时候说。
但是这样的部署其实算不上真的部署,因为这个界面一旦关掉,就停下来了,它是霸屏的模式,不可以在后台运行。我们希望,当我们关闭界面也可以自己运行。
我们这样去启动
代码语言:javascript复制 nohup java -jar reggle_demo_jgdabc-0.0.1-SNAPSHOT.jar &> reggie.log &
最后面这个&符号的含义是让项目在后台运行,&>reggie.log是让项目输出日志到这个文件
此时关闭这个FinalShell,还是没有任何问题。
这个项目已经可以在远程服务器自己运行了,并且我们数日地址就可以访问到。
但是其实你还需要考虑很多问题,就是加入我们对项目需要更新,比如在改动一些代码,有没有一种便捷的方式,只要我们改动提交,在远程服务器执行一个脚本,项目就可以自己部署运行?只要我们执行脚本,就可以自己拉取代码,编译打包和启动?
Shell 脚本自动部署项目
我们所做的是,当我们提交完后,也就是提交到github或者gitee,我们可以做到执行费脚本后的自动拉取和编译,打包,启动。所以拉取的话必要的使用git,打包一定要用到maven。所以这些你需要配置好。这些安装配置都非常简单。
这个最好自己在idea配置好git,我想都到这步了,没有人还没有在idea配置git吧。这里啊首先我们需要在服务器的创建一个文件夹,或者你怎么样做的合适就行,自己看. 进去usr/local/
代码语言:javascript复制cd /usr/local
然后呢,在这里进行一个对远程仓库的克隆
代码语言:javascript复制git clone https://github.com/jgdabc/reggie.git
这样克隆后,会在你的这个目录里面生成一个文件夹,这里面是我的一些项目文件,后面在用shell的时候一定要注意到层级关系。不然你会被恶心到。
我上传的时候是没有带target的,因为服务器上部署的maven会有命令打包。现在我们引入sh脚本文件。
还是上传上来,在/usr/local 这里创建一个sh的文件夹,我们就把文件传到这里。
现在我们来看这个脚本文件是怎么写的。
代码语言:javascript复制#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=reggle_demo_jgdabc-0.0.1-SNAPSHOT
# 查进程
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
echo 准备从Git仓库拉取最新代码
cd /usr/local/reggle
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
cd /usr/local/reggie/reggle_demo_jgdabc # 我的pom文件在在这里,所以打包#需要进去到这个目录
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd target
echo 启动项目
nohup java -jar reggle_demo_jgdabc-0.0.1-SNAPSHOT.jar &> reggie.log &
echo 项目启动完成
执行的整个过程,中间出现了点提示,但是并没有影响我的项目部署
看视频的时候有的人会出现找不到target这个目录的问题,其实是没有打包成功,因为打包的话,你最好应该在pom文件这个路径,你要进入到这个打包。
这样才能正确生成。
我们现在测试一件事啊,原来我们的图片不是不能正确显示吗?现在我们去改一下路径。在我们的本地idea里面。怎么改呢? 你首先要明白你的路径是从这里读取的。
然后提交github, 当然github慢的话,你提交gitee就好啦。一样的道理。
提交后这里就更新成功了
然后执行脚本,但是呢,这里比较慢,卡顿的话ctrl c退出多执行几次。
你看这里也显示了过程,说明确实获取到更新的数据,然后你这时候再修改上传外卖图片。
成功显示,然后保存,你看它就保存好了。
我测试了全部
都可以
自动化部署展示好了,下面就是解决一些bug和功能完善了。就目前项目存在一些bug和接口异常,还有一些功能没有完善,可以很好的去完善拓展,比如移动发短信我还得去日志看验证码,这就很蛋疼,后面完善的话会在这里展示吗,并在前面的文章中持续回顾并更新瑞吉外卖的学习记录过程。
本篇主要是将一个完整的springboot的web项目部署好了。细节的问题会持续修改,敬请期待。。。
未完续更。。。