商城微服务项目组件搭建(六)——MinIO、Gitea、Zipkin等安装
bigegpt 2025-07-07 14:38 10 浏览
1、本文属于mini商城系列文档的第0章,由于篇幅原因,这篇文章拆成了6部分,本文属于最后一部分。
2、mini商城项目详细文档及代码见CSDN:
https://blog.csdn.net/Eclipse_2019/article/details/132141211
3、本文主要讲解MinIO、Gitea、Zipkin、Maven、docker compose的安装部署以及Ideal连接GitHub和Flutter环境配置。
2.21 MinIO部署
98虚拟机中安装,本项目只安装单机版就好了
2.21.1 单机部署
1、下载
下载地址:
GNU/Linux
https://dl.min.io/server/minio/release/linux-amd64/minio
2、新建minio安装目录,执行如下命令
mkdir -p /usr/local/eclipse2019/minio/data
mkdir -p /usr/local/eclipse2019/minio/bin
3、挂载磁盘
在98虚拟机中挂载单独一个盘(10G大小)
fdisk -l #查看磁盘
mkfs.ext4 /dev/sdc #格式化磁盘
mount /dev/sdc /usr/local/eclipse2019/minio/data #挂载
4、把minio二进制文件上传到run目录后,执行:
chmod +x minio #给予权限
同时在run目录下创建start.sh文件
export MINIO_ACCESS_KEY=minioadmin #创建账号
export MINIO_SECRET_KEY=minioadmin #创建密码
#默认的端口为:9000
#自定义端口方式:自定义启动端口号以及控制台端口号,不设置则控制台会自动配置其他端口号,非常不方便
nohup /usr/local/eclipse2019/minio/bin/minio server --address :9098 --console-address :9099 /usr/local/eclipse2019/minio/data > /usr/local/eclipse2019/minio/data/minio.log &
然后直接执
sh start.sh
#查看状态
ps -ef|grep minio
5、访问地址:192.168.8.98:9098
输入账号密码后:
进行创建桶,名字自取,创建完成后服务器
/usr/local/eclipse2019/minio/data下也会创建这个文件目录
必须将规则设置成readwrite ,才可进行读取文件,否则只存或者只能读。
2.21.2 集群部署
1、环境说明
服务器节点 | 数据目录 | 运行目录 |
192.168.8.74 | /opt/minio/data | /opt/minio/run |
192.168.8.75 | /opt/minio/data | /opt/minio/run |
192.168.8.76 | /opt/minio/data | /opt/minio/run |
192.168.8.98 | /opt/minio/data | /opt/minio/run |
run:启动脚本及二进制文件目录; data:数据存储目录; /etc/minio:配置文件目录; 注意:/minio 目录必须是挂载的单独硬盘,否则后面启动报is part of root drive, will not be used错误
2、创建数据目录及配置目录,在四个节点分别创建
mkdir -p /opt/minio/{run,data1,data2}
mkdir -p /etc/minio
3、下载minio二进制文件,并上传到两个两个节点的运行目录里
4、集群启动文件创建,四个节点都创建
采用默认端口9000,access_key和secret_key设置为minioadmin、minioadmin
vim /opt/minio/run/start.sh #创建启动文件
文件内容如下
#!/bin/bash
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
/opt/minio/run/minio server --config-dir /etc/minio \
--address :9000 \
http://192.168.8.74/opt/minio/data1 http://192.168.8.74/opt/minio/data2 \
http://192.168.8.75/opt/minio/data1 http://192.168.8.75/opt/minio/data2 \
http://192.168.8.76/opt/minio/data1 http://192.168.8.76/opt/minio/data2 \
http://192.168.8.98/opt/minio/data1 http://192.168.8.98/opt/minio/data2
#MINIO_ACCESS_KEY:用户名,长度最小是5个字符;
#MINIO_SECRET_KEY:密码,密码有复杂度要求,长度最小是8个字符;
#–config-dir:指定集群配置文件目录;
5、创建minio系统服务,四个节点都创建
vim /usr/lib/systemd/system/minio.service
文件内容如下
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
[Service]
WorkingDirectory=/opt/minio/run/
ExecStart=/opt/minio/run/start.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
6、启动集群,l两个节点执行同样操作
修改启动文件权限
chmod +x /usr/lib/systemd/system/minio.service
chmod +x /opt/minio/run/minio
chmod +x /opt/minio/run/start.sh
启动集群
systemctl daemon-reload #重新加载服务
systemctl start minio #启动服务
systemctl enable minio #加入自启动
systemctl status minio.service #查看集群状态
tail -f /var/log/messages #查看日志
7、通过任意节点的ip都可以进行操作,可通过界面或者接口进行操作,如果要均衡访问,可通过nginx做负载均衡 通过如下连接访问minio的web界面 http://192.168.8.74:9000/ 也可通过75节点访问 http://192.168.8.75:9000/
2.22 Ideal连接GitHub
1、本地安装git工具
参考:
https://blog.csdn.net/weixin_44486583/article/details/122704375
安装完成之后,用cmd进命令提示符,输入where git,就知道位置了。
2、在idea配置GitHub账号
快捷键ctrl+alt+s打开设置
正常测试结果是下面出现一个版本号。
然后点左侧的GitHub,点右边的“+”号,下面的时间设置最好改一下,这玩意就算改成60s也时不时超时,毕竟GitHub有点那个。。。然后右下角点应用点OK就行
这里用Token登录,用户名和密码登录一直显示没有权限。
获取Token的方式:
- 登录GitHub仓库,并进入setting
- 输入描述,打钩权限范围,最后点击 Generate token 生成Token。Note:Token描述。Expiration:令牌有效期,建议个人项目全选。Select scopes:权限范围
- 创建Token:
3、在idea里面操作上传项目
然后在idea的VCS点这个share project这个,就正常点点点就行了,没多的操作,这一步主要是容易出现奇奇怪怪的超时,这个应该取决于你目前和GitHub网站的访问流畅程度和你前面操作也就是前面连接GitHub的时间操作有关系,可以多试几次。
4、更新项目
VCS的git里面有commit file选项(第一个)。
点了之后在左侧这边可以选择性写写更新信息,然后commit。
然后点击push选项
2.23 Gitea私有仓库安装
137服务器中安装
1、安装
docker run -d --name gitea -p 3000:3000 -p 2221:22 -v /usr/local/eclipse2019/gitea/data:/data \
-v /usr/local/eclipse2019/gitea/timezone:/etc/timezone:ro \
-v /usr/local/eclipse2019/gitea/localtime:/etc/localtime:ro \
-e USER_UID=1000 -e USER_GID=1000 gitea/gitea:latest
2、配置
(1)通过浏览器访问 nextcloud 的登录网页,当首次登录时,会进入配置界面,访问:http://192.168.8.137:3000,进入后如下图所示:
(2)指定MySQL服务器,这里的服务器为上面安装的,如下图所示:
(3)配置访问信息
(4)点击安装
注意:当没有创建管理员用户的时候,注册的第一个用户便是管理员用户
用户名:eclipse2019
密码:123456
要增加其他员工账号只需添加用户即可
(5)创建库
(6)通过ideal上传代码
添加刚才创建的库地址就好了,然后push
2.24 Zipkin安装
这里介绍两种部署流程:
2.24.1 Zipkin+ES
最简单的单机安装,将链路日志直接推送到 Zipkin Server 进行聚合,存储到 ElasticSearch 中,最后再用 Zipkin UI 展示链路过程。
本msd系统采用的是这种部署方式
这种方式使用与配置起来比较简单,并且在 Kubernetes 中能够很容易的横向扩展来处理一定的链路日志数据,不过如果服务过多,链路日志数据量过大还是可能造成 Zipkin Server 的崩溃,所以比较适合服务数量不大的境中。
docker run -itd -p 9411:9411 --restart=always --name zipkin -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.8.138:9200 openzipkin/zipkin
2.24.2 Zipkin+ES+kafka
将链路日志推送到 Kafka,然后启动 Zipkin Server 聚合日志,监听 Kafka ,如果有新的消息则进行拉取存入到 ElasticSeach,最后再用 Zipkin UI 展示链路过程。
这种方式使用与配置比较复杂,需要 Kubernetes 集群中部署 Kafka 与 Zookeeper,通过将链路日志数据写入 Kafka 进行削峰,再由 Kafka 写入 Zipkin Server 进行聚合,所以比较适合数据量大、服务多的环境。
Kubernetes 部署 Zipkin
1、部署 Zipkin Server Zipkin Server 是用于收集链路日志信息进行聚合,然后保存数据,并通过 UI 展示数据的组件,这里新建部署文件,然后执行 Kuberctl 命令在 Kubernetes 集群创建 Zipkin Server,并且由于 Zipkin Server 需要监听 Kafka,所以这里也要设置 Kafka 相关配置。
apiVersion: v1
kind: Service
metadata:
namespace: springcloud
name: zipkin
labels:
app: zipkin
spec:
type: NodePort #指定为 NodePort 方式暴露出口
ports:
- name: server
port: 9411
targetPort: 9411
protocol: TCP
selector:
app: zipkin
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: springcloud
name: zipkin
labels:
name: zipkin
spec:
replicas: 1
selector:
matchLabels:
app: zipkin
template:
metadata:
labels:
app: zipkin
spec:
containers:
- name: zipkin
image: openzipkin/zipkin:2.15
ports:
- containerPort: 9411
env:
- name: JAVA_OPTS
value: "
-Xms512m -Xmx512m
-Dlogging.level.zipkin=DEBUG
-Dlogging.level.zipkin2=DEBUG
-Duser.timezone=Asia/Shanghai
"
- name: STORAGE_TYPE
value: "elasticsearch" #设置数据存储在ES中
- name: ES_HOSTS
value: "elasticsearch.logging:9200" #ES地址
- name: ES_INDEX #设置ES中存储的zipkin索引名称
value: "zipkin"
- name: ES_INDEX_REPLICAS #ES索引副本数
value: "1"
- name: ES_INDEX_SHARDS #ES分片数量
value: "3"
#- name: ES_USERNAME #如果ES启用x-pack,需要设置用户名、密码
# value: ""
#- name: ES_PASSWORD
# value: ""
- name: KAFKA_BOOTSTRAP_SERVERS #Kafka 地址
value: "kafka-svc.kafka:9092"
- name: KAFKA_TOPIC #Kafka Topic名称,默认为"zipkin"
value: "zipkin"
- name: KAFKA_GROUP_ID #Kafka 组名,默认为"zipkin"
value: "zipkin"
- name: KAFKA_STREAMS #消耗Topic的线程数,默认为1
value: "1"
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 500m
memory: 256Mi
2、部署 Zipkin-Dependencies
zipkin-dependencies 是一个聚合数据依赖关系的服务,这里启动服务后它会自动从 ElasticSearch 中获取索引,分析依赖关系然后再以 zipkin索引名称-dependency-yyyy-mm-dd 命名创建新索引存入 ElasticSearch。
并且这个服务内置 Crond 定时任务,默认每隔一小时会执行分析 ElasticSearch 中索引关系的任务(在 Kubernetes 中将其设置一个 Job 任务来使用也是可以的,因为它每次启动时候都会先进行分析依赖数据,当然也可以用容器内部的 Crond 来执行定时任务)。
注意:下面 yaml 中一定要设置 command 命令来启用 crond 定时任务,否则之后执行一次分析依赖关系任务后程序自动关闭。
vi zipkin-dependencies.yaml
apiVersion: v1
kind: Service
metadata:
namespace: springcloud
name: zipkin
labels:
app: zipkin
spec:
type: NodePort #指定为 NodePort 方式暴露出口
ports:
- name: server
port: 9411
targetPort: 9411
protocol: TCP
selector:
app: zipkin
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: springcloud
name: zipkin
labels:
name: zipkin
spec:
replicas: 1
selector:
matchLabels:
app: zipkin
template:
metadata:
labels:
app: zipkin
spec:
containers:
- name: zipkin
image: openzipkin/zipkin:2.15
ports:
- containerPort: 9411
env:
- name: JAVA_OPTS
value: "
-Xms512m -Xmx512m
-Dlogging.level.zipkin=DEBUG
-Dlogging.level.zipkin2=DEBUG
-Duser.timezone=Asia/Shanghai
"
- name: STORAGE_TYPE
value: "elasticsearch" #设置数据存储在ES中
- name: ES_HOSTS
value: "elasticsearch.logging:9200" #ES地址
- name: ES_INDEX #设置ES中存储的zipkin索引名称
value: "zipkin"
- name: ES_INDEX_REPLICAS #ES索引副本数
value: "1"
- name: ES_INDEX_SHARDS #ES分片数量
value: "3"
#- name: ES_USERNAME #如果ES启用x-pack,需要设置用户名、密码
# value: ""
#- name: ES_PASSWORD
# value: ""
- name: KAFKA_BOOTSTRAP_SERVERS #Kafka 地址
value: "kafka-svc.kafka:9092"
- name: KAFKA_TOPIC #Kafka Topic名称,默认为"zipkin"
value: "zipkin"
- name: KAFKA_GROUP_ID #Kafka 组名,默认为"zipkin"
value: "zipkin"
- name: KAFKA_STREAMS #消耗Topic的线程数,默认为1
value: "1"
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 500m
memory: 256Mi
[root@k8s-master01 zipkin]# ls
zipkin-dependencies.yaml zipkin-server.yaml
[root@k8s-master01 zipkin]# cat zipkin-dependencies.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: springcloud
name: zipkin-dependencies
labels:
name: zipkin-dependencies
spec:
replicas: 1
selector:
matchLabels:
app: zipkin-dependencies
template:
metadata:
labels:
app: zipkin-dependencies
spec:
containers:
- name: zipkin
image: openzipkin/zipkin-dependencies:2.3.1
ports:
- containerPort: 80
command: ["sh","-c","crond -f"]
env:
- name: JAVA_OPTS
value: "-Xms512m -Xmx512m"
- name: STORAGE_TYPE
value: "elasticsearch"
- name: ES_HOSTS
value: "elasticsearch.logging:9200"
- name: ES_INDEX #设置ES中存储的zipkin索引名称
value: "zipkin"
#- name: ES_USERNAME #如果ES启用x-pack,需要设置用户名、密码
# value: ""
#- name: ES_PASSWORD
# value: ""
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 500m
memory: 256Mi
访问 Zipkin Web UI:192.168.8.138:9411/zipkin
2.25 Flutter环境配置
1、官网下载flutter sdk
- https://docs.flutter.dev/get-started/install/windows
- 将(当前最新版)flutter_windows_3.0.5-stable.zip 下载到本机上,解压缩到路径举例:D:\SDKS\flutter
2、设置环境变量
- 复制 flutter/bin 的完整路径,例如:D:\SDKS\flutter\bin,windows 搜索栏输入 env, 系统变量Path 编辑 -> 新建 上面的路径
3、测试flutter安装
- 在terminal中输入flutter --version如果出现版本信息就代表安装成功了
4、运行 flutter doctor
- 输入命令行flutter doctor 查看一下flutter环境中的一些安装情况
5、flutter doctor --android-licenses
一直输入Y就可以了,大概是8次的一个输入
6、Ideal插件中安转Flutter插件
7、Ideal安装Android SDK
2.26 maven安装
在192.168.8.139服务器上
官网下载:
https://maven.apache.org/download.cgi
然后将安装包放到/usr/local/eclipse2019/目录下
通过命令解压:tar zxf apache-maven-3.8.3-bin.tar.gz
再执行:ln -s apache-maven-3.8.3 maven
vi /etc/profile
在文件末尾加上
MAVEN_HOME=/usr/local/eclipse2019/maven
export PATH=$MAVEN_HOME/bin:$PATH
保存退出后执行
source /etc/profile
查看maven版本
mvn -version
2.27 docker compose安装
1、下载compose
下载地址:
https://github.com/docker/compose
2、上传文件到系统/usr/local/bin,并且重命名mv
docker-compose-linux-x86_64 docker-compose
3、修改文件权限并配置环境变量
chmod 777 docker-compose
4、修改配置
vi /etc/profile
内容:
export PATH=$PATH:/usr/local/bin/
source /etc/profile
5、执行docker-compose -v 查看版本
相关推荐
- Linux 命令 ncftp(文件传输)——想玩转linux就请一直看下去
-
我是IT悟道,点击右上方“关注”,每天分享IT、科技、数码方面的干货。Linuxncftp命令Linux命令大全Linuxncftp命令用于传输文件。FTP让用户得以下载存放于服务器主机的文件,...
- 玩转 Linux 之:磁盘分区、挂载知多少?
-
今天来聊聊linux下磁盘分区、挂载的问题,篇幅所限,不会聊的太底层,纯当科普!!1、Linux分区简介1.1主分区vs扩展分区硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两...
- 一文带你了解 Linux 文件权限,从基础到高级
-
在Linux中,每个文件和目录都关联了一组权限,定义了不同用户对其的访问能力。权限分为三类:读取(read,r)、写入(write,w)和执行(execute,x),分别用字母r、w、x...
- Linux 使用 socat 让云服务器作为跳板机的方法
-
概念三台机器:客户端A(192.168.1.11)服务器B(192.168.1.88)跳板机C(192.168.1.32)实现A与B的双向数据传输,本该这样:A<...
- Linux启动流程之ROM-CODE(linux启动详解)
-
1.从哪里开始?下图是AM335X核心板和功能框图:AM335X核心板的存储信息如下:AM335X核心板运行linux系统,在这里提出一个问题:上电后指令从哪里开始执行?DDRorEMMC?2....
- 「Linux」——select和epoll详解(linux epoll详解)
-
select和epoll详解select和epoll的区别(面试常考)select一、什么是select1.select函数原型2.参数解释3.参数timeout取值4.返回值5.监控原理二、sele...
- Linux中使用输入输出和错误重定向, 赶紧收藏!
-
Linux中的每个进程都提供三个打开的文件(通常称为文件描述符),分别是标准的输入、输出和错误文件。StandardInput是键盘,抽象为文件,使编写脚本和程序更容易。StandardOut...
- 「正点原子Linux连载」第七十一章Linux 4G通信实验
-
1)实验平台:正点原子Linux开发板2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南》关注官方微信号公众号,获取更多资料:正点原子第七十一章Linux4G通信实验前面我们学习了如何在Li...
- LSM Oops 内存错误根因分析与解决
-
作者简介:吴文涵,图形算法出身,同时热爱linux内核开发的工程师,喜欢推导并乐于分享。版权声明:本文最先发表于“泰晓科技”微信公众号,欢迎转载,转载时请在文章的开头保留本声明。Oops是...
- 连你家电器的算力都不放过,新发现Linux恶意软件用IoT设备挖矿
-
萧箫发自凹非寺量子位|公众号QbitAI继电脑和手机后,挖矿病毒也盯上了IoT设备。无论是智能冰箱、彩电还是洗衣机,但凡有点算力的(物联网和端侧)设备都可能被这种病毒感染,用于挖掘加密货币等...
- 苹果iOS 26锁屏大升级:更个性更沉浸 有五大亮点
-
【CNMO科技消息】CNMO注意到,苹果近日在iOS26开发者预览版中推出了多项锁屏界面创新功能,可以大幅提升用户个性化设置与操作便捷性。这些更新不仅优化了视觉体验,还通过技术手段增强了交互效率,为...
- 福彩 3D 第 2025178 期:心水407 !大小奇偶双平衡 + 跨度适配,速收藏
-
福彩3D第2025178期:497后和值回落!五维分析+形态调整策略福彩3D2025177期开奖号码497,组六形态,大小比2:1,奇偶比1:2,和值20,跨度5。面对大...
- 一加 Ace5 至尊版手机首发适配和平精英手游
-
7月8日消息,据用户反馈,一加Ace5至尊版手机开启新版本系统推送,升级包大小约6.83MB、版本号为15.0.2.215(CN01),适配了腾讯《和平精英》手游144Hz高刷。IT...
- 外媒称苹果今年秋季将推出超15款新品 远不止iPhone 17
-
【CNMO科技消息】2025年已过半程,有外媒指出苹果计划在今年秋季推出超过15款新产品,涵盖iPhone革新、M5芯片设备迭代、可穿戴设备升级及智能家居布局等。苹果1.iPhone17系列:产品...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)