SpringBoot项目部署及多环境

1、多环境

2、项目部署上线

  • 原始前端 / 后端项目
  • 宝塔Linux
  • 容器
  • 容器平台

3、前后端联调

4、项目扩展和规划

多环境

程序员鱼皮-参考文章

本地开发:localhost(127.0.0.1)

多环境:指同一套项目代码在把不同的阶段需要根据实际情况根来调整配置并且配置到不同的机器上

为什么需要?

  1. 每个环境互不影响
  2. 为了区分不同的阶段:开发 / 测试 / 生产
  3. 对项目进行优化
    1. 本地日志级别
    2. 精简依赖,节省项目体积
    3. 项目的环境 / 参数可以调整,比如JVM参数

总结一下,多环境是为了针对不同环境做不同的事

多环境分类:

  1. 本地环境(我们自己的电脑): localhost(127.0.0.1)
  2. 开发环境(远程开发):开发人员连接同一台机器
  3. 测试环境(测试):开发 / 测试 / 产品,性能测试 / 功能测试 / 系统集成测试,独立的数据库、服务器
  4. 预发布环境(体验服):基本和正式环境一致,使用正式数据库,更严谨,检查出更多问题
  5. 正式环境(线上,对外公开的项目):尽量不要改动,保证上线的代码是“完美”的
  6. 沙箱环境(实验环境):为了做实验

前端多环境实战

后端多环境实战

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

image-20231229004920149

可以在启动项目时传入环境变量来选择配置文件

主要是改:

  • 依赖的环境地址
    • 数据库地址
    • 缓存地址
    • 消息队列地址
    • 项目端口号
  • 服务器配置
java -jar ./brrbaii_backend_init-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

可以看到启动时选择了application-prod.yaml文件

image-20231229010834495

Linux宝塔部署

MYSQL安装及对外开发

以腾讯云为例,在防火墙内开放3306端口

image-20231229002727730

还有在宝塔面板的安全组里也同步开放一下

image-20231229002829184接着登录进mysql

mysql -u root -p '你的密码'

选择数据库

use mysql;

更新域属性,'%'表示允许外部访问:

update user set host='%' where user ='root';

执行以上语句之后再执行:

FLUSH PRIVILEGES;

再执行授权语句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

最后刷新一下

FLUSH PRIVILEGES; 

接着外部就可以访问到了

Tomcat安装

直接搜安装即可

image-20231229012040367

新建站点

image-20231229012643723

新建文件,把我们的JAR包丢进去

image-20231229020054568

添加JAVA项目

image-20231229015114073

可以看到启动成功了

image-20231229020141426

Docker部署

docker是容器,可以将项目的环境(比如java、nginx)和项目的代码一起打包成镜像,所有朋友都能下载镜像,更容易分发和移植

可以看到启动成功了

[外链图片转存中…(img-Y1RjwKXZ-1703855103783)]

Docker部署

docker是容器,可以将项目的环境(比如java、nginx)和项目的代码一起打包成镜像,所有朋友都能下载镜像,更容易分发和移植

再启动项目时,不需要敲一大堆命令,而是直接下载镜像、启动镜像,docker可以理解为软件安装包

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

守护青山绿水 千巡翼Q20无人机变身护林员

守护青山绿水 千巡翼Q20无人机变身护林员 无人机目前在林业上的应用主要在森林资源调查、森林资源监测、森林火灾监测、森林病虫害监测防治、野生动物监测等方面。传统手段在森林资源调查中需要耗费大量人力物力,利用无人机技术可快速获得所需区域高精度信息&#…

Java核心知识点1-java和c++区别、隐式和显示类型转换

java和c区别 java通过虚拟机实现跨平台特性,但c依赖于特定的平台。java没有指针,它的引用可以理解为安全指针,而c和c一样具有指针。java支持自动垃圾回收,而c需要手动回收。java不支持多重继承,只能通过实现多个接口来…

WPF 消息日志打印帮助类:HandyControl+NLog+彩色控制台打印+全局异常捕捉

文章目录 前言相关文章Nlog配置HandyControl配置简单使用显示效果文本内容 全局异常捕捉异常代码运行结果 前言 我将简单的HandyControl的消息打印系统和Nlog搭配使用,简化我们的代码书写 相关文章 .NET 控制台NLog 使用 WPF-UI HandyControl 控件简单实战 C#更改…

【嵌入式开发 Linux 常用命令系列 7.3 -- linux 命令行数值计算】

文章目录 linux 命令行数值计算使用 awk使用 bc 命令使用 Bash 的内置算术扩展使用 expr脚本命令实现 linux 命令行数值计算 在 Linux 命令行中,您可以使用多种方法来执行基本的数学运算。以下是一些示例: 使用 awk awk 是一个强大的文本处理工具&…

Linux第一个小程序-进度条(c语言版)

目录 行缓冲区概念: 行缓冲区代码演示: ​编辑进度条代码 1:memset函数: 2:const char* lable"|/-\\"; 3:usleep C语言 usleep 函数的功能和用法: 4:进度条代码的实…

C语言经典算法【每日一练】20

题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 1、先排序 2、插入 #include <stdio.h>// 主函数 void main() {int i,j,p,q,s,n,a[11]{127,3,6,28,54,68,87,105,162,18};//排序&#xff08;选择排序&#xff09…

12.21自动售货机,单物品,多物品

自动售货机 if朴素方法 一种思路是用寄存器cnt记录已有的最小单位货币量&#xff0c;这里就是0.5 当d1时&#xff0c;cnt1;d2时&#xff0c;cnt2;d3时&#xff0c;cnt4; timescale 1ns/1ns module seller1(input wire clk ,input wire rst ,input wire d1 ,input wire d2 …

Python:日期和时间类型学习

背景 在非开发环境经常需要做一下日期计算&#xff0c;就准备使用Python&#xff0c;顺便记下来学习的痕迹。 代码 1 1 # coding utf-82 2 3 3 from datetime import *4 4 5 5 ########################## 日期 ##########################6 6 date_now date.today()…

【网络安全】全网最全的渗透测试介绍(超详细)

渗透测试介绍 渗透测试就是模拟攻击者入侵系统&#xff0c;对系统进行一步步地渗透&#xff0c;发现系统地脆弱环节和隐藏风险。最后形成测试报告提供给系统所有者。系统所有者可根据该测试报告对系统进行加固&#xff0c;提升系统的安全性&#xff0c;防止真正的攻击者入侵。…

【Leetcode 39】组合总和 —— 回溯法

39. 组合总和 给你一个无重复元素的整数数组candidates和一个目标整数target &#xff0c;找出candidates中可以使数字和为目标数target的 所有不同组合&#xff0c;并以列表形式返回。你可以按**任意顺序 **返回这些组合。 candidates中的同一个数字可以 无限制重复被选取 。…

C++线性表

线性表的定义及其运算 线性表是一种最简单、最基本也是最常用的线性结构。在线性结构中&#xff0c;数据元素之间存在一个对一个的线性关系&#xff0c;数据元素“一个接一个地排列”。在一个线性表中&#xff0c;数据元素的类型是相同的&#xff0c;或者说&#xff0c;线性表…

【教程】Typecho Joe主题开启并修复壁纸相册不显示问题

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景说明 Joe主题本身支持“壁纸”功能&#xff0c;其实就是相册。当时还在网上找了好久相册部署的开源项目&#xff0c;太傻了。 但是网上教程很少&#xff0c;一没说如何开启壁纸功能&#xff0c;二没说开启后为…

Python跨年烟花秀

写在前面 今年跨年怎么过呢~博主用python的pygame实现了一场炫酷的烟花秀&#xff0c;一起来看看吧&#xff01; 环境需求 python3.11.4及以上PyCharm Community Edition 2023.2.5pyinstaller6.2.0&#xff08;可选&#xff0c;这个库用于打包&#xff0c;使程序没有python环境…

使用yolov5的2.0分支训练自己的模型并在x3派运行

目录 准备代码、权重、数据集配置环境准备数据标注数据 训练模型转换模型验证模型准备校准数据转换为板上模型模型精度分析 上板 之前训练自己模型的时候使用的是博主 bubbling的1.0分支的代码&#xff0c;博主的 博客比较详细&#xff0c;使用的是VOC2007数据集&#xff0c;…

迷宫问题的对比实验研究(代码注释详细、迷宫及路径可视化)

题目描述 对不同的迷宫进行算法问题&#xff0c;广度优先、深度优先、以及人工智能上介绍的一些算法&#xff1a;例如A*算法&#xff0c;蚁群算法等。 基本要求&#xff1a; &#xff08;1&#xff09;从文件读入9*9的迷宫&#xff0c;设置入口和出口&#xff0c;分别采用以上方…

基于huffman编解码的图像压缩算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Huffman编码算法步骤 4.2 Huffman编码的数学原理 4.3 基于Huffman编解码的图像压缩 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..…

基于ElementUI二次封装el-table与el-pagination分页组件[实际项目使用]

效果&#xff1a; 二次封装el-table组件 <template><div><!-- showHeader:是否显示头部size:表格的大小height:表格的高度isStripe:表格是否为斑马纹类型tableData:表格数据源isBorder:是否表格边框handleSelectionChange:行选中&#xff0c;多选内容发生变化回…

遗传算法的应用——求解一元函数的极值

遗传算法的应用——求解一元函数的极值 1 基本概念2 预备知识3.1 模拟二进制转化为十进制的方法3.2 轮盘赌选择算法 3 问题4 Matlab代码5 运行效果6 总结 1 基本概念 遗传算法(Genetic Algorithm,GA)是模拟生物在自然环境中遗传和进化过程从而形成的随机全局搜索和优化方法&am…

3D视觉-结构光测量-多线结构光测量

工作原理 多线结构光测量在测量方式上类似上述线结构光测量&#xff0c;但是两者也有着一些明显的差别。这种形式的结构光测量&#xff0c;也常常被成为面结构光测量。首先激光器发出电光源通过通过光栅的调制产生多个切片光束&#xff0c;这些切片光束照射到待测物体表面后形成…

2023第三届中国高校大数据挑战赛B题代码

任务已完成&#xff0c;聚类效果很好&#xff08;主要在于数据的处理以及特征工程&#xff09;, 需代码si&#xff0c;yuer有限先到先得。