ancos注册中心、网关和静态化freemarker、对象存储服务MinIO

news2024/11/14 21:43:24

在这里插入图片描述

1、docker安装ancos

①:docker拉取镜像

docker pull nacos/nacos-server:1.2.0

②:创建容器

docker run --env MODE=standalone --name nacos --restart=always  -d -p 8848:8848 nacos/nacos-server:1.2.0

③:访问地址:http://192.168.200.130:8848/nacos

2、 网关

在这里插入图片描述

2.1 pom.xml文件导入依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
     <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
    </dependency>
</dependencies>

2.2 创建微服务(搜索微服务、登录微服务等)

@SpringBootApplication
@EnableDiscoveryClient  //开启注册中心
public class AppGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(AppGatewayApplication.class,args);
    }
}

application.xml

server:
   # 网关端口
  port: 51601
spring:
  application:
    name: leadnews-app-gateway  
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.200.130:8848
      config:
        server-addr: 192.168.200.130:8848
        file-extension: yml

2.3 nacos的配置中心

在这里插入图片描述

在这里插入图片描述

1. 创建dataid为leadnews-app-gateway的yml配置

spring:
  cloud:
    gateway:
      globalcors:
        add-to-simple-url-handler-mapping: true
        corsConfigurations:
          '[/**]': # 匹配所有请求
            allowedHeaders: "*" 
            allowedOrigins: "*" #跨域处理 允许所有的域
            allowedMethods: # 支持的方法
              - GET
              - POST
              - DELETE
              - PUT
              - OPTION
      routes:
      #app网关的微服务的nacos的配置中心添加微服务
        # 用户微服务
        - id: user
          uri: lb://leadnews-user
          predicates:
            - Path=/user/**
          filters:
            - StripPrefix= 1
     #文章微服务
      - id: article
          uri: lb://leadnews-article
          predicates:
            - Path=/article/**
          filters:
            - StripPrefix= 1

3、Nginx

在这里插入图片描述

通过nginx来进行配置,功能如下

  • 通过nginx的反向代理功能访问后台的网关资源
  • 通过nginx的静态服务器功能访问前端静态页面

nginx方式集成前端项目

在这里插入图片描述

配置nginx.conf文件

在nginx安装的·conf目录下新建一个文件夹leadnews.conf,并新建heima-leadnews-app.conf文件

upstream  heima-app-gateway{
   #网关
    server localhost:51601;
}

server {
	listen 8801;
	location / {
	# 前端项目的资源位置
		root D:/workspace/app-web/;
		index index.html;
	}
	
	location ~/app/(.*) {
		proxy_pass http://heima-app-gateway/$1;
		proxy_set_header HOST $host;  # 不改变源请求头的值
		proxy_pass_request_body on;  #开启获取请求体
		proxy_pass_request_headers on;  #开启获取请求头
		proxy_set_header X-Real-IP $remote_addr;   # 记录真实发出请求的客户端IP
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  #记录代理信息
	}
}

nginx.conf

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	# 引入自定义配置文件
	include leadnews.conf/*.conf;
}

④ :启动nginx

​ 在nginx安装包中使用命令提示符打开,输入命令nginx启动项目

​ 可查看进程,检查nginx是否启动

​ 重新加载配置文件:nginx -s reload

⑤:打开前端项目进行测试 – > http://localhost:8801

3、docker安装MinIO

MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等

docker run -p 9000:9000 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minio" -e "MINIO_SECRET_KEY=minio123" -v /home/data:/data -v /home/config:/root/.minio minio/minio server /data


Access Key为minio   Secret_key 为minio123

3.1 将MinIO封装为starter

(文件服务:多个微服务都可以使用)
在这里插入图片描述
导入依赖pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>
    <dependency>
        <groupId>io.minio</groupId>
        <artifactId>minio</artifactId>
        <version>7.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

3.2 对外加入自动配置

在resources中新建META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.heima.file.service.impl.MinIOFileStorageService

3.3 其他微服务使用

  • 导入heima-file-starter的依赖
  • 在微服务中添加minio所需要的配置
minio:
  accessKey: minio
  secretKey: minio123
  bucket: leadnews
  endpoint: http://192.168.200.130:9000
  readPath: http://192.168.200.130:9000
  • 在对应使用的业务类中注入FileStorageService
@SpringBootTest(classes = MinioApplication.class)
@RunWith(SpringRunner.class)
public class MinioTest {

    @Autowired
    private FileStorageService fileStorageService;

    @Test
    public void testUpdateImgFile() {
        try {
            FileInputStream fileInputStream = new FileInputStream("E:\\tmp\\ak47.jpg");
            String filePath = fileStorageService.uploadImgFile("", "ak47.jpg", fileInputStream);
            System.out.println(filePath);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

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

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

相关文章

【论文阅读】The Deep Learning Compiler: A Comprehensive Survey

论文来源&#xff1a;Li M , Liu Y , Liu X ,et al.The Deep Learning Compiler: A Comprehensive Survey[J]. 2020.DOI:10.1109/TPDS.2020.3030548. 这是一篇关于深度学习编译器的综述类文章。 什么是深度学习编译器 深度学习&#xff08;Deep Learning&#xff09;编译器将…

getInputStream has already been called for this request 问题记录

问题背景 HttpServletRequest.getReader() HttpServletRequest.getInputStream() 不能在过滤器中读取一次二进制流&#xff08;字符流&#xff09;&#xff0c;又在另外一个Servlet中读取一次&#xff0c;即一个InputSteam(BufferedReader)对象在被读取完成后&#xff0c;将无…

FPGA XDMA 中断模式实现 PCIE3.0 AD7606采集 提供2套工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案AD7606数据采集和缓存XDMA简介XDMA中断模式QT上位机及其源码 5、vivado工程1--BRAM缓存6、vivado工程2--DDR4缓存7、上板调试验证8、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&am…

全方位支持图文和音视频、100+增强功能,Facebook开源数据增强库AugLy

Facebook 近日开源了数据增强库 AugLy&#xff0c;包含四个子库&#xff0c;每个子库对应不同的模态&#xff0c;每个库遵循相同的接口。支持四种模态&#xff1a;文本、图像、音频和视频。 最近&#xff0c;Facebook 开源了一个新的 Python 库——AugLy&#xff0c;该库旨在帮…

Error: unknown flag: --export 【k8s,kubernets报错】

报错情况如下&#xff1a; [rootk8smaster ~]# kubectl get deploy nginx -oyaml --export > my2.yaml Error: unknown flag: --export See kubectl get --help for usage.原因&#xff1a; --export在所使用的版本中已被移除 解决&#xff1a;去除--export即可&#xff0c…

基于Javaweb实现ATM机系统开发实战(十五)退卡和转账跳转实现

首先创建一个servlet接受和处理请求&#xff1a; package com.atm.servlet;import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException;//用户退出 WebServlet("/logout") public class ExitServlet ex…

14、php面向对象3(final、显示调用父类构造方法、static静态变量与方法)

1、如果父类中的方法被声明为 final&#xff0c;则子类无法覆盖该方法。如果一个类被声明为 final&#xff0c;则不能被继承。 <?php class BaseClass{public function test(){echo "BaseClass::test() called".PHP_EOL;}final public function moreTesting(){e…

使用CRM进行数据分析的四大好处

使用CRM数据分析系统够帮助企业更好地了解客户需求和行为习惯&#xff0c;提供个性化的服务&#xff0c;从而提高客户满意度和忠诚度。使用CRM数据分析系统可以为企业带来一些好处&#xff0c;包括提高客户洞察力、加强营销策略、提高运营效率等。 1.提高客户洞察力&#xff1a…

【C++ 重要知识点总结】进制与编码

1 进位计数 数制 2进制----字面量0b8进制----字面量010进制—无16进制0x-字面量0x 数制转化 r进制数转化成十进制 I a n − 1 r n − 1 ⋯ a 0 r 0 I a_{n-1}\times r^{n-1} \cdots a_0 \times r^0 Ian−1​rn−1⋯a0​r0十进制整数转化r进制数——除r取余法 I r…

日志系统:一条SQL更新语句是如何执行的

知识粗粮 为什么mysql 8 把缓存给取消了&#xff1f;&#xff08;在这里我不咋说&#xff0c;很简单&#xff0c;自己去百度&#xff09; mysql 可以回复到半个月内的任意一秒的状态 sql的执行链路&#xff08;8把查询缓存彻底给搞掉了呜呜呜&#xff09; 进入正题 下面我们从…

MyBatis-Flex 是什么(一个优雅的MyBatis增强框架)

直接去看官网吧&#xff1a;MyBatis-Flex - MyBatis-Flex 官方网站 MyBatis-Flex 是一个优雅的 MyBatis 增强框架&#xff0c;它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库&#xff0c;其内置的 QueryWrapper^亮点 帮助我们极大…

集装箱装卸作业相关的知识-Part1

1.角件 Corner Fitting of Container or called Corner Casting. there are eigth of it of one container. 国家标准|GB/T 1835-2006https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcnoD35857F2200FA115CAA217A114F5EF12 中国的国标&#xff1a;GB/T 1835-2006《系列1集…

基于Java+SpringBoot+vue前后端分离网上租赁系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

可维护性测试

目录 什么是可维护性测试&#xff1f; 如何衡量应用程序的可维护性&#xff1f; 参考资料 如何进行可维护性测试&#xff1f; 可维护性测试最佳实践 易分析性 内部可分析性指标 外部可分析性指标 可变更性&#xff08;易修改性 Changeability | Modifiability&#xf…

pnpm的安装与使用

pnpm使用 官网&#xff1a; https://www.pnpm.cn/installation 简介 1、概念 performant npm &#xff0c;意味“高性能的 npm”。pnpm由npm/yarn衍生而来&#xff0c;解决了npm/yarn内部潜在的bug&#xff0c;极大的优化了性能&#xff0c;扩展了使用场景。被誉为“最先进的包…

五分钟理解Linux磁盘逻辑卷管理LVM

LVM概念 LVM&#xff08;Logical Volume Manager&#xff0c;逻辑卷管理&#xff09;是Linux环境下对磁盘分区进行管理的一种机制。LVM的工作原理其实很简单&#xff0c;它就是通过将底层的物理硬盘抽象的封装起来&#xff0c;然后以逻辑卷的方式呈现给上层应用。在传统的磁盘…

【iOS】iOS持久化

1 持久化目的 快速展示&#xff0c;提升体验 已经加载过的数据&#xff0c;用户下次查看时&#xff0c;不需要再次从网络&#xff08;磁盘&#xff09;加载&#xff0c;直接展示给用户 节省用户流量&#xff08;节省服务器资源&#xff09; 对于较大的资源数据进行缓存&#x…

容器管理工具 portainer可视化面板 的安装及使用

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 什么是portainer Portainer是一款轻量级的Docker图形化管理的方案&#xff0c;相比k8s和k3s&#xff0c;只需…

Dev C++下载安装

1、下载 下载地址&#xff1a;Dev-C download | SourceForge.nethttps://sourceforge.net/projects/orwelldevcpp/ 点击“Download”下载 新建文件夹用于安装 2、安装 双击exe文件执行安装程序&#xff0c;选择“English”&#xff08;我没看到普通话&#xff09; 选择“I …

简单的语音广播功能方案

方案介绍&#xff1a; 1&#xff09;前端可以复用如下播放器的方案 &#xff08;或自行实现&#xff09; 其中&#xff0c;rtp封装过程中&#xff0c;额外增加了2字节的长度信息&#xff0c;后端服务接收之后&#xff0c;做好校验之后&#xff0c;需要剔除2个字节的数据头 2&a…