微服务基础环境搭建-centos7

文章目录

1、安装docker

1.1、安装步骤

  1. 卸载旧版本docker
shell 复制代码
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  1. 安装工具包
shell 复制代码
yum install -y yum-utils
  1. 设置镜像仓库
  • 推荐使⽤国内阿⾥云的仓库
shell 复制代码
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum软件包索引
shell 复制代码
yum makecache fast
shell 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 安装docker
shell 复制代码
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 检查docker是否安装成功
docker version
# 启动docker服务
systemctl start docker
# 查看docker服务状态
systemctl status docker
  1. 跑一个hello-world
shell 复制代码
docker run hello-world

1.2、docker常用命令

shell 复制代码
# 帮助命令
docker version # docker版本
docker info # docker系统信息
docker xxx --help #查看帮助
# 镜像操作
docker images # docker image ls
docker search xxx # 搜索镜像
docker pull xxx # 下载镜像 docker image pull
docker inspect xxx # 查看镜像信息
docker run -d --name myxxx -p 80:80 xxx # 启动镜像
docker ps # 查看镜像执⾏情况
docker exec -it {container_id} /bin/bash
docker rmi 镜像ID # 删除镜像
docker image rm -f $(docker image ls -q) #删除所有镜像
# 容器操作
docker ps
docker container ls -a #查询所有容器
docker rm $(docker ps -aq) #删除所有容器

2、安装Nginx

shell 复制代码
# 搜索镜像
docker search nginx
# 下载安装
docker pull nginx
# 启动镜像
docker run -d --name mynginx -p 80:80 nginx

3、Docker安装Mysql

dockerhub参考地址: https://hub.docker.com/_/mysql

需要特别注意的是,对于镜像中需要持久化保存的⽂件,需要通过-v挂载到宿主机上,这样这些⽂件才不会随

着容器关闭⽽消失。

对于MySQL,需要将他的⽇志⽂件、数据⽂件和配置⽂件挂载到宿主机上

shell 复制代码
# 拉取镜像
docker pull mysql:8
# 启动mysql并配置⼯作⽬录。将容器中的⼯作⽬录挂载到本机,这样这些数据⽂件才能持久化保存。
docker run -p 3306:3306 --name mysql8 -v /app/docker/mysql/log:/var/log/mysql -v /app/docker/mysql/data:/var/lib/mysql -v /app/docker/mysql/conf:/etc/mysql -v /app/docker/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=root -d mysql:8
# MySQL默认只能在本机登录,也就是只能从容器内登录。需要调整权限,允许远程访问。
docker container ls #获取容器ID
# 进⼊容器
docker exec -it e6b5762cb698 /bin/bash
# 在容器内登录MySQL 。 不要输密码  
mysql -u root
# 调整MySQL,允许远程连接
mysql> use mysql;
mysql> grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
mysql> update user set host='%' where user='root';
mysql> ALTER user 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
mysql> flush privileges;
# 如果都正常执⾏,那么MySQL服务就可以⽤客户端⼯具远程登录了

4、Docker安装Redis

需要注意将Redis的配置⽂件和⽇志⽂件挂载到宿主机上。

shell 复制代码
docker pull redis:latest
# 将Redis的配置⽂件和数据⽂件挂载到宿主机上
docker run -p 6388:6379 --name redis -v /app/docker/redis/config:/etc/redis.conf -v /app/docker/redis/data:/app/redis -d redis redis-server /etc/redis.conf
# 如果正常执⾏,那么Redis的服务就可以⽤客户端⼯具远程登录了。

5、安装Nacos

5.1、Nacos的作用

  • 服务注册中心
  • 配置中心

5.2、单体服务安装

下载⻚⾯: https://nacos.io/download/nacos-server/ 。 这次选择下载2.2.0版本

安装Nacos之前,需要注意⼀下。Nacos默认将元数据记录到derby内存数据库中,容易丢失。所以通常需要

将元数据改为存储到MySQL中。

使⽤MySQL保存元数据,需要在MySQL中创建独⽴的库和表。相关表的初始化脚本记录在nacos的

conf/mysql-schema.sql⽂件中。

接下来需要修改nacos的配置⽂件,主要调整以下部分:

bash 复制代码
### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use spring.sql.init.platform replaced.
# spring.datasource.platform=mysql
spring.sql.init.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?
characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicod
e=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

接下来就可以启动了。单机模式启动Nacos需要加上参数 -m standalone

shell 复制代码
bin/startup.sh -m standalone

如果启动没有问题,就可以访问nacos⻚⾯了。访问地址:http://xxxxxxx:8848/nacos 。默认⽤户名

和密码都是nacos

在nacos中,有个命名空间的概念。通过命名空间可以在不同应⽤之间形成数据隔离。

6、安装RocketMQ服务

6.1 MQ的作用

  • 异步
  • 解耦
  • 削峰

6.2 RocketMQ的基础服务架构

6.2、安装RocketMQ服务

下载地址:https://rocketmq.apache.org/download/ 选择5.2.0版本。下载 rocketmq-all-5.2.0-binrelease.zip 和 rocketmq-dashboard-master.zip 两个组件。

rocketmq-all-5.2.0-bin-release.zip解压后,可以直接启动nameserver服务

shell 复制代码
cd /app/rocketmq_5.2.0
nohup bin/mqnamesrv &

启动后,会在当前⽬录⽣成⼀个nohup.out⽇志⽂件。观察⽇志⽂件,有以下⼀⾏关键⽇志,表示服务启动成功。

bash 复制代码
The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876

接下来启动broker服务。启动之前建议对配置⽂件做⼀些调整。vi conf/broker.conf,增加下⾯内容。主要是

对存储⽂件进⾏规划,便于后续掌握服务运⾏情况。

bash 复制代码
#允许⾃动创建topic ⽤于测试
autoCreateTopicEnable=true
#存储路径
storePathRootDir=/app/rocketmq/store
storePathCommitLog=/app/rocketmq/store/commitlog
sstorePathConsumeQueue=/app/rocketmq/store/consumequeue
storePathIndex=/app/rocketmq/store/index
storeCheckpoint=/app/rocketmq/store/checkpoint
abortFile=/app/rocketmq/store/abort

然后,需要配置⼀个环境变量,指向name server服务地址

bash 复制代码
vi ~/.bash_profile
# 增加下⾯配置项
# export NAMESRV_ADDR=192.168.65.210:9876
# 增加完成后,让配置⽂件⽣效
source ~/.bash_profile

启动broker服务

bash 复制代码
cd /app/rocketmq_5.2.0
nohup bin/mqbroker -c conf/broker.conf &
# 启动成功的关键⽇志
# The broker[broker-a, 192.168.65.210:10911] boot success. serializeType=JSON and name
server is 192.168.65.210:9876

6.3、安装dashboard面板服务

RocketMQ提供了⼀个基于Web的管理服务Dashboard,可以基于浏览器快速监控并管理RocketMQ服务。

rocketmq-dashboard-master.zip包中,只包含了Dashboard服务的源码,并没有直接提供编译后的jar包。

复制代码
mvn clean package -Dmaven.test.skip=true

编译完成后,在源码的target⽬录下可以获得可运⾏的jar包rocketmq-dashboard-1.0.1-SNAPSHOT.jar。

接下来把jar包上传到服务器上,并在jar包同⽬录下创建⼀个⽂件application.yml,配置dashboard服务指向的

nameserver服务地址

shell 复制代码
rocketmq:
config:
namesrvAddrs:
- 192.168.65.210:9876

到此就可以启动dashboard服务了

shell 复制代码
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar &

如果nohup.out中没有报错信息,那么就可以访问dashboard的管理⻚⾯。

在集群中可以看到当前服务状况。

6.4、RocketMQ快速体验

RocketMQ内置了测试案例,可以快速体验RocketMQ的收发消息功能。

shell 复制代码
cd /app/rocketmq_5.2.0
# 发送消息
bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# 接受消息
bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

很显然,tools.sh实际上是提供了⼀个RocketMQ客户端的运⾏环境,然后去执⾏对应的java类。如果想要了解

在Java应⽤中如何往RocketMQ收发消息,可以去查看下对应的测试类

相关推荐
贵慜_Derek11 小时前
《从零实现 Agent 系统》连载 32|闭集 IE 与小模型:分类、意图与字段抽取
人工智能·架构·agent
江米小枣tonylua1 天前
译:设计生产级 RAG 架构
架构
怕浪猫1 天前
领域特定语言(Domain-Specific Language, DSL)
设计模式·程序员·架构
怕浪猫1 天前
哪些软件对 Chrome DevTools Protocol 频繁使用
人工智能·架构·前端框架
Jack201 天前
HarmonyOS APP事件驱动大揭秘
架构
米丘1 天前
微前端之 Web Components 完全指南
微服务·html
秋播1 天前
国内本地WSL2编译rancher源码
云原生
Colin草率地做慢慢地改1 天前
关于QuickStore这个项目的重构(2)- 数据库建表文件
后端·面试·架构
candyTong2 天前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
唐某人丶2 天前
从画架构图开始:架构分析与进阶指南
架构