项目部署(前后端)

news2024/11/16 19:35:37

一:多环境概念:

借鉴来源:多环境设计_程序员鱼皮-多环境设计-CSDN博客

为什么需要多环境:

第一个例子:我们可以设想,我们肯定玩过王者荣耀,且王者荣耀也一直在不断更新,如果按我们以前的思想,一个项目如果一直在做更新,那项目肯定会不稳定,上线用户也无法使用。

第二个例子:如果本地和线上项目同时操控一个数据库,显而易见:开发人员和用户肯定不能同时操作数据库。

从上面这两个例子中差不多就可以推断出为什么需要多环境了,

多环境就是:根据实际需要,对项目阶段进行部署,相互独立且互相不影响。

多环境的分类:

  1. 本地环境(自己的电脑)localhost(熟悉的localhost)
  2. 开发环境:公司连同一台机器,方便开发
  3. 测试环境:性能测试/功能测试/系统集成测试
  4. 预发布环境(体验服):用正式服的数据再进行测试
  5. 正式环境(线上,公开访问的项目)
  6. 沙箱环境:目的就是为了做实验(做完就销毁)

前端配置多环境:

前端配置我直接一ant design pro的项目举例(本人对前端了解甚少)

1:请求地址:
  • 开发环境:localhost:8000
  • 线上环境:user-backend.code-nav.cn
2:启动方式:

npm run start 通常用于启动开发服务器或者应用程序的开发模式。这个命令一般会启动一个开发服务器,监听文件变化并自动重新加载应用,以方便开发人员在开发过程中进行实时调试。这个命令通常用于开发阶段,不会对代码进行优化和压缩,以便开发人员能够方便地调试和查看代码变化。

npm run build 通常用于构建生产环境下的部署包。这个命令会对项目代码进行优化、压缩和打包,以减小文件大小并提高运行效率。通常会生成用于部署的静态文件,准备好被部署到生产服务器上。这个命令一般在项目准备发布时执行,以确保发布的代码是经过优化和压缩的

3:项目的配置:
不同的项目(框架)都有不同的配置文件,umi 的配置文件是 config,可以在配置文件后添加对应的环境名称后缀来区分开发环境和生产环境。参考文档:https://umijs.org/zh-CN/docs/deployment
    • 开发环境:config.dev.ts
    • 生产环境:config.prod.ts
    • 公共配置:config.ts 不带后缀

首先我们需要知道,当我们使用umi框架的时候,build 时会自动传入 NODE_ENV == production 参数

所以我们的思路可是是什么呢

我们可以在前端的拦截器上加一个判断条件,如果NODE_ENV是等于这个prod的,我们就转到我们想要转的地址(user-backend.code-nav.cn)

const request = extend({
  credentials: 'include', // 默认请求是否带上cookie
  prefix: process.env.NODE_ENV === 'production' ? 'http://user-backend.code-nav.cn' : undefined
  // requestType: 'form',
});

 一般上线的话,需要运行build 进行打包构建,然后生成一个dist文件

可以使用 serve 工具启动(npm i -g serve),浏览打包好了的文件 

 

这个时候我们点开这个3000,我们就可以进入我们的prod环境了。 

 

后端配置多环境: 

后端和前端一样都需要配置文件:

SpringBoot 项目,通过 application.yml 添加不同的后缀来区分配置文件

这里鱼皮是用了一个线上的数据库来做测试,无奈没钱买,只能自己重新创了一个数据库。

这里我建了两个数据库,一个user是一开始开发时候使用的,一个user-prod是测试prod环境使用的。

然后我们运行maven中的package,对项目进行打包
这里有个小插曲

就是package的时候,我们出现了报错,报错提示:是我们的单元测试中有问题,

这个时候我们就可以进行考虑了,如果这个单元测试不重要,我们就可以点击跳过测试模式这个按钮。

 打包完之后,我们在这个打包出来的文件夹(target)的终端中输入

java -jar .\user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

那一行代码的意思就是往里传了一个环境参数,让前端去访问 user-prod那个数据库

经过测试每啥问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1812606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F103C8T6移植U8g2图形库及基于I2C协议的OLED显示(HAL库方式)【U8g2】【STM32开发板】【STM32CubeMX】

STM32F103C8T6移植U8g2图形库及基于I2C协议的OLED显示(HAL库方式)【U8g2】【STM32开发板】【STM32CubeMX】 实验说明 利用STM32F103的GPIO管脚、VCC和GND连接OLED屏的I2C接口,采用CubeMX设计一个HAL库程序框架,然后下载U8g2源码…

算法:94. 二叉树的中序遍历--扩展前中后层序遍历

中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 中遍历结果为:H D I B E J A F K C G 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出&#x…

图片二维码在线制作的教程,轻松实现图片转二维码

现在很多的内容都会放入二维码中来提供展示,这种方法可以有效的将大量的内容通过扫码这种简单的方式来获取。比如将图片转二维码后,就可以用手机扫码查看图片,无需通过软件传输后下载才可以查看,并且这种方式还可以提升图片的安全…

后端开发面经系列 -- 华为OD -- C++面经(全)

华为OD – C面经(全) 公众号:阿Q技术站 文章目录 华为OD -- C面经(全)一面1、C结构体和类的区别,类默认的访问权限,结构体可以定义成员函数吗?2、多态的意义?多态的意义…

数据结构刷题-链表

数据结构刷题-链表 总结:1 链表的解法总结: 1 链表的知识点:1 LC链表合集:1.1 lc206反转链表: 双指针:lc25: K个一组翻转链表:栈1.2 lc203移除链表元素:1.3 设计链表:1.4…

基于C#开发web网页管理系统模板流程-总集篇

第一篇 基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 第二篇 基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善_c#网页设计-CSDN博客 第三篇 基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善_c#web程序设计…

【Vue】项目创建目录初始化

文章目录 vue-cli 建项目调整初始化目录结构 vue-cli 建项目 1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-shopping选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually sel…

[CAN] DBC数据库编辑器的下载与安装

DBC数据库编辑器 1 概述2 下载与安装2.1 下载2.2 安装 1 概述 VectorCANdb是一款专为CAN(Controller Area Network)通信设计的数据管理工具。这款软件为工程师们提供了一个全面、高效的平台,用于定义、修改和管理与CAN网络相关的数据&#xf…

【CS.PL】Lua 编程之道: 简介与环境设置 - 进度8%

1 初级阶段 —— 简介与环境设置 文章目录 1 初级阶段 —— 简介与环境设置1.1 什么是 Lua?特点?1.2 Lua 的应用领域1.3 安装 Lua 解释器1.3.1 安装1.3.2 Lua解释器的结构 1.4 Lua执行方式1.4.0 程序段1.4.1 使用 Lua REPL(Read-Eval-Print Loop&#x…

卫星通讯传输电力运维巡检EasyCVR视频汇聚平台智能监控方案

随着科技的快速发展,视频监控技术已广泛应用于各个领域。而卫星通讯作为一种高效、稳定的通信方式,为视频监控系统的远程传输提供了有力支持。 一、方案背景 随着电力行业的快速发展,电力运维巡检工作变得愈发重要。传统的巡检方式往往受到…

二分查找算法:穿越算法迷宫的指南

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 目录 前言 一. 二分查找算法介绍 二 二分查找的题目解析 2.1 二分查找 2.2 在排序数组中查找元素的第一个位置和最后一个位置 2.3 搜索插入位置 2.4 x的平方根 2.5 山峰数组峰顶的索引 2.6 寻找峰值 2.7 寻找旋转数…

5.所有权

标题 一、概念二、规则三、示例3.1 变量作用域3.2 所有权的移交(深拷贝与浅拷贝)3.3 函数与所有权3.4 返回值与作用域3.5 引用的使用 四、切片(&str) 一、概念 所有权是Rust的核心特性。所有程序在运行时都必须管理它们使用计算机内存的方式。Rust的…

java float 丢失的小数位,科学计数法陷阱

从不同的table,不同的Sql 获取的统计数据,map中有float 也有double数据。 只要定义的数据类型是float,即使最后转成double,其实精度都会损失。 float通过科学计数法,10 N次方,对于大数没有办法保留小数位。…

Docker 基础使用 (4) 网络管理

文章目录 Docker 网络管理需求Docker 网络架构认识Docker 常见网络类型1. bridge 网络2. host 网络3. container 网络4. none 网络5. overlay 网络 Docker 网路基础指令Docker 网络管理实操 Docker 基础使用(0)基础认识 Docker 基础使用(1)使用流程概览 …

ON DUPLICATE KEY UPDATE 子句

ON DUPLICATE KEY UPDATE 是 MySQL 中的一个 SQL 语句中的子句,主要用于在执行 INSERT 操作时处理可能出现的重复键值冲突。当尝试插入的记录导致唯一索引或主键约束冲突时(即试图插入的记录的键值已经存在于表中),此子句会触发一…

如何免费获取云服务器

这几天刚入手了阿贝云的 “免费云服务器 ” ,接下来给大家讲讲如何免费注册阿贝云的免费云服务器 如何获取免费云服务器 打开阿贝云官网,注册并认证 即可以领取免费云服务器 阿贝云地址:https://www.abeiyun.com/ 服务器优势 永久免费&…

R语言:str_view函数和writeLines函数的区别

str_view和writeLines都是R语言中用于处理和查看字符串的函数,但它们有不同的功能和用途。 str_view str_view 是 stringr 包中的一个函数,用于直观地显示字符串中模式的匹配情况。它会在RStudio Viewer窗格中生成一个HTML小部件,突出显示字…

混剪素材哪里找?分享8个热门素材网站

今天我们来深入探讨如何获取高质量的混剪素材,为您的短视频和自媒体制作提供最佳资源。在这篇指南中,我将介绍几个热门的素材网站,让您轻松掌握素材获取的技巧,并根据百度SEO排名规则,优化关键词的使用,确保…

游戏提示emp.dll丢失是怎么回事,哪种解决方法更值得推荐

在玩电脑游戏时,我们经常会遇到一些错误提示,其中最常见的就是“找不到emp.dll,无法继续执行代码”。这个问题会导致游戏无法启动运行。那么,究竟是什么原因导致了这个问题的出现呢?本文将从多个方面进行详细解析&…

encoding Token和embedding 傻傻分不清楚?

encoding 编码 “encoding” 是一个在计算机科学和人工智能领域广泛使用的术语,它可以指代多种不同的过程和方法。核心就是编码:用某些数字来表示特定的信息。当然你或许会说字符集(Unicode)更理解这种概念,编码更强调这种动态的过程。而字符…