瑞吉外卖前后端分离进行项目部署

如何前后端分离进行项目部署

由于我们的服务器数量有限,就使用这三台服务器,具体的软件规划如下:

服务器 软件 名称 192.168.138.100 Nginx(部署前端项目、配置反向代理),MySQL(主从复制的主库) 服务器A 192.168.138.101 JDK1.8、Git、Maven、jar(项目jar包基于内嵌Tomcat运行)、MySQL(主从复制的从库) 服务器B 172.17.2.94 Redis(缓存中间件) 服务器C

对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/

经验分享 程序员 微信小程序 职场和发展