环境搭建

2754 字
14 分钟
环境搭建

虚拟机环境#

虚拟机安装#

软硬件准备#

软件:推荐使用VMware,服务器上有相关安装包。

镜像:推荐使用ubuntu 18.04,本文也是以ubuntu18.04 为例进行说明

硬件:因为是在宿主机上运⾏虚拟化软件安装ubuntu,所以对宿主机的配置有⼀定的要求。最起码I5CPU 双核,内存4G及以上。

虚拟机安装#

  1. 安装VMware

  2. 打开VMware创建新的虚拟机

    image-20230320213838425
    image-20230320213838425

  3. 选择自定义安装或者是典型安装模式

    • 典型安装:VMware会将主流的配置应⽤在虚拟机的操作系统上,对于新手来很友好

    • 自定义安装:⾃定义安装可以针对性的把⼀些资源加强,把不需要的资源移除。避免资源的浪费

      推荐使用典型安装即可,需要注意的是,网络适配器选择NAT模式

      image-20230320225922056
      image-20230320225922056

  4. 安装完虚拟机之后开启虚拟机,稍微等待一会即可安装完成

静态IP设置#

说明,NAT模式默认情况下是DHCP模式,是自动获取IP的,导致每次虚拟机开启之后获取的IP可能会变化,假如项目中后续连接的是虚拟机上面的MySQL,那么MySQL的HOST地址可能会经常改变,这就需要我们经常去改项目中的MySQL的连接地址,比较麻烦。所以需要改为静态IP,也就是每次开机之后IP不会变,这样才能方便我们后面项目的开发。

  • 首先查看虚拟机本地的IP地址,执行命令

    Terminal window
    # 查看本地IP地址
    ifconfig
    # 如果提示没有找到这个命令,那么首先需要安装工具
    sudo apt install net-tools

    image-20230320230756033
    image-20230320230756033

  • 查看网关地址

    编辑 ⇒   虚拟网络编辑器 ⇒ VMnet8 ⇒ NAT设置

    image-20230320232059604
    image-20230320232059604

    点击NAT设置,即可看到如下图所示

    image-20230320232229532
    image-20230320232229532

  • 设置静态IP

    设置 ⇒ Network ⇒ 点击齿轮

    image-20230320232430561
    image-20230320232430561

    设置为下图所示

    image-20230320232846295
    image-20230320232846295

    重启虚拟机,查看IP地址是否变化,如果未变,那么设置成功。

docker安装#

准备工作#

Terminal window
# 需要先执行更新命令
sudo apt-get update
# 如果是新安装的虚拟机,执行失败,那么执行以下命令
sudo apt-get install --reinstall libappstream4

如果虚拟机上已经存在docker,那么需要先卸载可能存在的旧版本

Terminal window
# 查找docker相关的软件
dpkg -l |grep docker

image-20230320235033617
image-20230320235033617

如上图所示,查到一个docker,还有一个docker.io,需要删除掉

Terminal window
# --purge: 删除软件以及相关的配置文件
sudo apt-get remove --purge docker docker.io

安装docker#

安装docker的方式有很多种,这里推荐大家采用shell脚本的方式进行安装

Terminal window
# 下载curl工具
sudo apt install curl
# 安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 下面这两个命令也可以安装docker
# 下载安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
# 执行安装脚本
sudo sh ./get-docker.sh

查看docker版本

Terminal window
docker version

image-20230321000157819
image-20230321000157819

出现上图,表示docker安装成功。

设置docker开机启动

Terminal window
sudo systemctl enable docker

docker配置#

权限配置#

注意上面查看docker版本的执行命令结果的图中,出现了一个permission denied ... 的报错,此时是因为当前用户对docker命令没有执行权限造成的,那么可以在docker version 这个命令的前面添加sudo解决这个问题,不过每次执行都添加sudo比较麻烦,而且后续使用docker下载镜像,运行容器还需要大量的执行docker ... 命令,可以在这里执行以下命令将当前用户添加到docker组,来获取权限

Terminal window
# 添加docker用户组
sudo groupadd docker
# 将当前登录用户添加到docker用户组中
sudo gpasswd -a $USER docker
#更新用户组
newgrp docker
# 测试docker命令是否可以在当前用户下正常使用
docker version

image-20230321001210059
image-20230321001210059

如上图所示,docker权限配置好了之后,会显示出更多更完整的信息

如果出现以下提示,那么需要/var/run/docker.sock权限

image-20230321005105875
image-20230321005105875

Terminal window
# 添加权限
sudo chmod a+rw /var/run/docker.sock

镜像仓库加速#

由于国内用户下载Docker镜像文件的速度太慢(因为Docker官方镜像仓库的服务器地址在国外),所以我们需要配置Docker镜像加速地址,提高镜像文件下载速度,就像MAVEN镜像仓库一样。

这里推荐使用阿里云镜像仓库加速配置。【官方配置地址

Terminal window
# 修改docker配置文件
sudo vim /etc/docker/daemon.json

输入上面官方配置地址中的以下内容(每个人的有点区别)

image-20230321005920257
image-20230321005920257

Terminal window
cskaoyan@ubuntu:~$ cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://b66kcrvu.mirror.aliyuncs.com"]
}
cskaoyan@ubuntu:~$
Terminal window
# 加载新的配置文件
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker

验证docker镜像加速配置是否成功

Terminal window
# 查看docker详细信息
docker info

image-20230321010916711
image-20230321010916711

补充说明:docker镜像加速地址有很多,也可以配置别的镜像加速地址

如果速度不如预期,也可以在daemon.json中配置其他的镜像加速地址

说明:由于政策原因,上面的加速地址暂时都不可用了

大家可以使用这个加速地址:

https://docker.m.daocloud.io/

https://dockerpull.com

软件安装#

# 说明:由于政策原因,导致docker镜像可能会下载失败或者是下载非常慢,所以我们在此采用 导入本地文件的方式 导入Docker镜像
# 1.images.tar.gz 上传到 Linux服务器的桌面
# 2. 导入镜像
docker load -i ~/Desktop/images.tar.gz
# 3. 查看镜像是否导入成功
docker images

MySQL#

Terminal window
# 拉取镜像
# docker pull mysql:8.0.35
# 1. 先看看之前在linux上运行的mysql服务是否正在运行
sudo netstat -anp | grep 3306
# 2. 如果正在运行,那么停止linux上运行的mysql
systemctl stop mysql.service
# 3. 如果之前在linux上安装过mysql,那么删除相关的数据库文件
sudo rm -rf /home/ljaer/mysql
# 安装运行(如果不映射到宿主机的3306端口,那么跳过1,2步骤; 如果不需要删除之前的数据,那么跳过步骤)
docker run --name mysql --restart=always -v /home/winter/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d mysql:8.0.35
docker run --name mysql --restart=always -v /home/winter/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d mysql:la

查看MySQL是否启动

Terminal window
docker ps

image-20230321101402217
image-20230321101402217

使用Navicat测试连接,注意需要把主机地址改为虚拟机IP地址,用户名和密码均为root

redis#

Terminal window
# 拉取镜像
# docker pull redis:6.2
# 运行容器
docker run --name=redis-server -d -p 6379:6379 --restart=always redis:6.2
# 使用云服务器的同学
docker run --name=redis-server -d -p 6379:6379 --restart=always redis:6.2 redis-server "--requirepass 你自己的redis密码"
docker run --name=redis-server -d -p 6379:6379 --restart=always redis:latest redis-server "--requirepass 123456"
# 测试验证
docker exec -it redis-server redis-cli

nacos#

Terminal window
# 拉取镜像
# docker pull nacos/nacos-server:v2.2.0-slim
# 运行容器
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 -p 9848:9848 -e JVM_XMS=128m -e JVM_XMX=128m -e JVM_XMN=64m nacos/nacos-server:v2.2.0-slim
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 -p 9848:9848 -e JVM_XMS=128m -e JVM_XMX=128m -e JVM_XMN=64m nacos/nacos-server:latest
# 测试验证
# 访问Nacos, http://ip:8848/nacos

elasticsearch#

Terminal window
# 拉取镜像
# docker pull elasticsearch:7.8.0
# 注意如果是ARM架构的计算机,那么下载的ES镜像的版本如下:
docker pull elasticsearch:7.13.1
# 准备工作
sudo mkdir -p /mydata/elasticsearch/plugins /mydata/elasticsearch/data
sudo chmod -R 777 /mydata/elasticsearch
# 运行容器
docker run \
-p 9200:9200 -p 9300:9300 \
--name elasticsearch \
--restart=always \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-v /mydata/elasticsearch/plugins/:/usr/share/elasticsearch/plugins \
-v /mydata/elasticsearch/data/:/usr/share/elasticsearch/data \
-d elasticsearch:7.8.0
# 注意,ARM架构的计算机,使用的镜像版本为elasticsearch:7.13.1
# 测试验证,访问http://ip:9200

ES安装完成之后,还需要安装IK分词器。

Terminal window
# 1. 上传资料中的IK分词器压缩包到Linux主机
# 2. 解压
unzip elasticsearch-analysis-ik-7.8.0.zip -d ik-analyzer
# 注意如果是ARM架构的计算机,那么使用的ik分词器的版本也要是7.13.1,所以命令如下:
unzip elasticsearch-analysis-ik-7.13.1.zip -d ik-analyzer
# 3. 上传到ES容器
docker cp ./ik-analyzer elasticsearch:/usr/share/elasticsearch/plugins
# 4. 重启ES
docker restart elasticsearch

这里需要注意一下,如果使用的是

kibana#

Terminal window
# 拉取镜像
# docker pull kibana:7.8.0
# 注意如果计算机为ARM架构的铜须,如果使用的ES版本为7.13.1那么,Kibaba的版本也要相应使用7.13.1
docker pull kibana:7.13.1
# 运行容器
docker run --name kibana --restart=always -e ELASTICSEARCH_URL=http://虚拟机ip或者云服务器ip:9200 -p 5601:5601 -d kibana:7.8.0
docker run --name kibana --restart=always -e ELASTICSEARCH_URL=http://192.168.31.117:9200 -p 5601:5601 -d kibana:7.8.0
# ARM架构的计算机,使用如下命令
docker run --name kibana --restart=always -e ELASTICSEARCH_URL=http://虚拟机ip或者云服务器ip:9200 -p 5601:5601 -d kibana:7.13.1
# 修改配置
docker exec -it kibana /bin/bash
vi config/kibana.yml
elasticsearch.hosts: [ "http://这里改为你自己的虚拟机IP:9200" ]
elasticsearch.hosts: [ "http://192.168.253.132:9200" ]
# 保存退出并且 重启kibana
docker restart kibana
# 测试验证,访问http://ip:5601
# 测试IK分词器
GET /_analyze
{
"text": "我是一只因为有光,所以有梦想的鱼",
"analyzer": "ik_max_word"
}

minio#

Terminal window
# 拉取镜像
# docker pull minio/minio
# 创建文件夹
sudo mkdir -p /home/data /home/config
# 运行容器
docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-d --restart=always \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123456" \
-v /home/data:/data \
-v /home/config:/root/.minio \
minio/minio server /data --console-address ":9001"
Terminal window
# 测试验证,访问http://ip:9001

RocketMQ#

拉取镜像#

Terminal window
# docker pull rocketmqinc/rocketmq
# 如果是arm架构则下载如下镜像
docker pull king019/rocketmq

创建namesrv数据存储路径#

Terminal window
sudo mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store

运行NameServer容器#

Terminal window
docker run -d \
--restart=always \
--name rmqnamesrv \
-p 9876:9876 \
-v /docker/rocketmq/data/namesrv/logs:/root/logs \
-v /docker/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq \
sh mqnamesrv
# 使用arm架构计算机的同学使用如下命令
docker run -d --restart=always --name rmqnamesrv -p 9876:9876 -v /docker/rocketmq/data/namesrv/logs:/root/logs -v /docker/rocketmq/data/namesrv/store:/root/store -e JAVA_OPT_EXT='-Xms128m -Xmx128m -Xmn64m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=32m' -e "MAX_POSSIBLE_HEAP=100000000" king019/rocketmq sh opt/soft/rocketmq/bin/mqnamesrv

创建broker数据存储路径#

Terminal window
sudo mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf

创建broker配置文件#

Terminal window
sudo vim /docker/rocketmq/conf/broker.conf

文件内容

Terminal window
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 192.168.153.143
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
# 定义延迟级别对应的延迟时间
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h

运行broker容器#

Terminal window
docker run -d \
--restart=always \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-v /docker/rocketmq/data/broker/logs:/root/logs \
-v /docker/rocketmq/data/broker/store:/root/store \
-v /docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq \
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
# 如果是arm架构计算机的同学运行如下docker run命令
docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 -v /docker/rocketmq/data/broker/logs:/root/logs -v /docker/rocketmq/data/broker/store:/root/store -v /docker/rocketmq/conf/broker.conf:/opt/soft/rocketmq/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" -e JAVA_OPT_EXT='-Xms128m -Xmx128m -Xmn64m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=32m' king019/rocketmq sh opt/soft/rocketmq/bin/mqbroker -c /opt/soft/rocketmq/conf/broker.conf

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

环境搭建
https://firefly-mu-weld.vercel.app/posts/microservice-08-env/
作者
Daisy
发布于
2026-06-14
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Daisy
Hello, I'm Daisy.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签

文章目录