在充分了解了分布式IM即时通讯系统的需求、业务流程、技术流程和架构设计之后,在正式开始研发分布式IM即时通讯系统之前,还需要搭建分布式IM即时通讯系统的研发环境。
注意:本节源码的README.md文件中,已经给出了安装docker和docker-compose的命令,大家打开源码的README.md文件查看即可。
#一、前言
任何一套系统的研发和运行都是有条件的,那就是需要在特定的环境下研发或者运行,在分布式IM即时通讯系统的架构设计章节,为了进一步增强分布式IM即时通讯系统的性能、可用性和可伸缩性,我们采用容器化架构的设计方案,所以,在正式研发分布式IM即时通讯系统之前,还需要对这些研发环境进行安装和测试。
#二、本章诉求
还是那句话:磨刀不无砍柴功。在动手写代码之前,将所有要准备的工作完成,这样写起代码来才会更加顺畅。本章,会在CentOS7操作系统之上搭建Docker环境、docker-compose环境,基于docker-compose环境一键安装分布式IM即时通讯系统所依赖的数据库、基础软件和中间件环境,随后会对搭建的环境进行测试。
注意:如何安装VMWare以及安装CentOS7操作系统,小伙伴们可以参见Seckill秒杀系统的《第7章:秒杀系统基础环境搭建 (opens new window)》,并且本节所有环境和软件的安装,都需要CentOS7能够正常联网才行,如果小伙伴们的虚拟机不能正常联网,可以参见Seckill秒杀系统的《第7章:秒杀系统基础环境搭建 (opens new window)》一章的内容解决。
#三、安装Docker环境
之前安装的操作系统为CentOS7版本,所以,这里以CentOS7为例安装Docker环境,具体安装步骤如下所示。
#3.1 查看操作系统内核版本
由于Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10,所以这里先查看下安装的CentOS7操作系统的内核版本。在,命令行输入如下命令。
uname -srm
输出的结果信息如下所示。
Linux 3.10.0-1160.el7.x86_64 x86_64
可以看到,内核版本是3.10,符合要求。
#3.2 卸载旧版本Docker
如果之前安装过旧版本的Docker,则可以执行如下命令卸载。
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce
#3.3 安装gcc环境
安装gcc环境主要是为了更加顺利的安装Docker环境,在命令行分别执行如下两条命令来安装gcc环境。
yum -y install gcc
yum -y install gcc-c++
2
#3.4 安装yum工具
在命令行执行如下命令安装yum工具。
yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
#3.5 设置Docker镜像仓库
这里,我将Docker的镜像仓库设置为阿里镜像源,执行如下命令即可。
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
执行如下命令将docker-ce.repo镜像仓库配置文件中的镜像源修改成阿里镜像源。
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
#3.6 更新yum包软件索引
更新yum包软件索引后,执行yum命令安装软件会快一些,在命令行执行如下命令更新yum包软件索引。
yum makecache fast
#3.7 安装Docker
在命令行执行如下命令安装Docker。
yum -y install docker-ce docker-ce-cli containerd.io
#3.8 启动Docker
在命令行执行如下命令启动Docker。
systemctl start docker
#3.9 设置Docker开机自启动
在命令行执行如下命令设置Docker开机自启动。
systemctl enable docker
#3.10 查看Docker版本
在命令行输入如下命令查看Docker版本。
docker version
输出的结果信息如下所示。
Client: Docker Engine - CommunityVersion: 23.0.6API version: 1.42Go version: go1.19.9Git commit: ef23cbcBuilt: Fri May 5 21:21:29 2023OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 23.0.6API version: 1.42 (minimum version 1.12)Go version: go1.19.9Git commit: 9dbdbd4Built: Fri May 5 21:20:38 2023OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.6.21GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8runc:Version: 1.1.7GitCommit: v1.1.7-0-g860f061docker-init:Version: 0.19.0GitCommit: de40ad0