前后端分离式项目部署

在这里插入图片描述

一、环境准备

准备三台Linux服务器节点,一台部署前端项目,Nginx以及一些基础设施(包括MySQL,redis);另外两台服务器节点用来部署后端项目(JDK,Maven和Tomcat),为了部署多实例,模拟集群。可以用SecureCRT来连接,SecureCrt是一款优秀的windows连接linux/unix机器的工具。

在码云上打包下来的文件,在本地IDEA要修改相关配置依赖,如数据库(application-druid.yml),redis(application.yml)以及日志文件(logback.xml)里面的日志位置和添加UTF-8编码。

利用XFTP上传压缩代码文件,现在100服务器上有前端文件,101和102服务器上各有一份后端文件。下面进行打包操作,
首先是前端100服务器
第一步nodejs安装前端项目依赖,输入下面一行命令:

npm install --unsafe-perm --registry=https://registry.npm.taobao.org

第二步进行编译打包:

npm run build:prod

这里是生产环境的包。打包后会在当前文件下生成一个dist目录,就是前端成品。后面会用Nginx部署起来。

后端打包:
要在101和102服务器上部署maven环境,然后输入命令进行jar打包:

mvn package

打包后会在当前文件夹生成一个target文件,然后cd target进去后会发现一个以jar结尾的包。把这个jar包拿出来,为了后面war包,防止被清理掉。
接下来打war包,要在本地改下配置:
(1)在pom.xml文件里改成war;
(2)然后要把内置的tomcat服务器给去掉,把war部署在外置的tomcat服务器,这就是war包的目的。需要加一段依赖,作用是为了在编译时用,发布时删掉:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

(3)要修改启动类,在同级目录下写一个类

public class SpringBootStarterApplication extends SpringBootServletInitializer{
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
        return builder.sources(原来启动类的名字.class);
   }
}

然后将pom.xml再上传替换,以及新加的文件类上传。
然后在101服务器上执行下面命令,102同理:

mvn clean
mvn package

这样就会在target包下生成一个war包。

部署

前端:
100服务器用Nginx部署,找到nginx配置,修改conf:

#在开头改一下权限,防止403
user root;

#找到对应位置
location /{
    root  /root/workspace/ruoyi-ui/dist;
    index  index.html index.htm;
}

#让后端和前端进行关联,新增配置代理,转发路径/prod-api可以在网页F12查看
location /prod-api/{
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#下面这么配,是因为我们做了个集群,所以相当于权重轮询
    proxy_pass http://ruoyi/;
}

然后再nginx下进入sbin/,然后输入 ./nginx,执行起来。可以再网页输入IP地址进行查看。

后端:
(1)运行jar文件,输入命令:

nohup java-jar ruoyi.jar &

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

(2)运行war包试试

ps -aux | grep java
kill -9 6880
#进入tomcat服务器里面webapps,把war包丢进来
cp /root/workspace/ruoyi.war ./
#启动tomcat,自动解压war
service tomcat start

为了让根目录192.168.31.101访问的不是tomcat而是项目后端页面,需要改一下tomcat的配置conf里面的server.xml。
在这里插入图片描述
在这里插入图片描述

102服务器同样这么部署,需要在100服务器上的nginx.conf把新加的102也进行配置

upstream ruoyi{
    server 192.168.31.101:8080 weight=5;
    server 192.168.31.102:8080 weight=3}

如果想看到底访问哪台机器,可以在我们之前配置的日志文件里查看

#进入101服务器日志文件的位置,实时监控日志输入循环读取
tail -f sys-info.log
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前后分离的分布式项目部署通常包括以下几个步骤: 1. 前部署: - 打包前代码:将前代码使用构建工具(如Webpack)进行打包,生成静态文件(HTML、CSS、JavaScript)。 - 部署静态文件:将打包好的静态文件上传至一个静态文件服务器(如Nginx),通过域名或IP地址访问。 2. 后部署: - 选择合适的云平台:根据项目需求选择合适的云服务提供商(如AWS、阿里云、腾讯云)。 - 虚拟机或容器化部署:创建虚拟机实例或使用容器技术(如Docker)创建容器,并在其中部署代码。可以使用自动化部署工具(如Ansible、Kubernetes)来简化部署流程。 - 数据库部署:根据项目需要选择适合的数据库类型(如MySQL、MongoDB),在数据库服务器上创建并配置数据库实例。 3. 网络配置: - 前后通信:配置前与后的网络通信,确保前能够正确地发送请求到后接口。 - 负载均衡:使用负载均衡技术(如Nginx、HAProxy)来分发请求,提高系统的并发处理能力和可用性。 - 安全配置:配置SSL证书以启用HTTPS协议,保证数据传输的安全性。 4. 监控和日志: - 监控系统:搭建监控系统,监控项目的运行状态、性能指标等,及时发现并解决问题。 - 日志管理:配置日志记录,将项目的日志信息输出到集中式日志管理平台,方便排查问题和分析。 5. 自动化部署和持续集成: - 使用自动化部署工具(如Jenkins、GitLab CI/CD)实现自动化部署流程,减少手动操作的错误和时间成本。 - 实施持续集成和持续交付策略,通过自动化测试、代码检查等手段确保代码质量,并快速将新功能交付给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值