将瑞吉外卖项目jar包部署在远程服务器并成功运行在pc和移动端

2022-11-30 16:16:53 浏览数 (1)

将瑞吉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项目部署好了。细节的问题会持续修改,敬请期待。。。

未完续更。。。

0 人点赞