瑞吉外卖前后端分离进行项目部署
如何前后端分离进行项目部署
由于我们的服务器数量有限,就使用这三台服务器,具体的软件规划如下:
对Redis、JDK、Git、Maven进行简单的安装及配置,这里我们就不再演示软件的安装了。
前端部署 1.将前端资源目录上传至Linux的/usr/local/nginx/html目录下 2.修改Nginx配置文件nginx.conf
server { listen 80; server_name localhost; location / { root html/dist; index index.html; } location ^~ /api/ { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://192.168.138.101.80; } location = /50x.html { root html; } }
3.通过nginx访问前端工程 就是安装Nginx的服务器,访问自己的ip地址 http://192.168.138.100
前端工程部署完成之后,我们可以正常的访问到系统的登录页面。
服务端部署 1). 在服务器B(192.168.138.101)中安装jdk、git、maven、MySQL,使用git clone命令将git远程仓库的代码克隆下来
#创建java代码存放目录 mkdir -p /usr/local/javaapp
#切换目录 cd /usr/local/javaapp
#克隆代码 , 需要使用自己的远程仓库 git clone https://xxxxxxxxxxxx
将资料中提供的reggieStart.sh文件上传到服务器B,通过chmod命令设置执行权限 chmod 777 reggieStart.sh
执行reggieStart.sh脚本文件,自动部署项目 脚本代码:
#!/bin/sh echo ================================= echo 自动化部署脚本启动 echo ================================= echo 停止原来运行中的工程 APP_NAME=reggie_take_out 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/javaapp/reggie_take_out echo 开始从Git仓库拉取最新代码 git pull echo 代码拉取完成 echo 开始打包 output=`mvn clean package -Dmaven.test.skip=true` cd target echo 启动项目 nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar &> reggie_take_out.log & echo 项目启动完成
执行完shell脚本之后,我们可以通过 ps -ef|grep java 指令,查看服务是否启动。
最后访问系统测试进行测试,就是部署后端项目的服务器 http://192.168.138.101/
图片展示问题处理 在上述的测试中,我们发现菜品的图片无法正常展示。原因是因为,在我们的配置文件中,图片信息依然是从 D:/img 中加载的,但是在Linux服务器中,是不存在D盘的。
1). 修改文件存储目录
将文件存储目录修改为:
reggie: path: /usr/local/img/
修改完成之后,需要将变动的代码提交到本地仓库,并推送至远程仓库。
2). 执行shell脚本,进行自动化部署,和之前一样的步骤
3). 将本地的测试图片文件夹img(整个文件夹)上传到服务器B的/usr/local目录下 4).再次访问测试 http://192.168.138.101/