CentOS7(Linux)从系统安装到环境搭建

本篇文章编辑时间: 2026年1月28日

本篇文章修改时间: 暂无

本篇文章基于以下环境操作

主机环境:Windows11 25H2

虚拟机软件:VMware Workstation 17 Pro

远程连接软件:xshell 8

文件上传软件:xftp 8

目录

一、前言

今天带来一篇实打实的全栈环境搭建实操博客------从0到1创建CentOS7虚拟机,逐步完成前端、后端、数据库、中间件全链路组件的部署与配置,覆盖日常开发、测试乃至小型生产环境常用的核心工具,全程无多余冗余,主打一个可落地、可复现,帮大家避开搭建过程中的各类"坑"。

在日常开发和学习中,我们常常会遇到"环境搭建难"的问题:组件版本不兼容、依赖缺失、配置参数混乱,尤其是涉及多组件协同(前端反向代理、后端运行环境、数据库存储、缓存、消息队列、检索分析等)时,哪怕是资深开发者,也可能在繁琐的步骤中出错,浪费大量时间在环境调试上。而对于新手而言,全栈环境的搭建更是入门路上的一道难关,面对众多组件的部署流程、配置细节,往往无从下手。

基于此,我整理了这篇完整的实操指南,内容从最基础的CentOS7虚拟机创建(含基础初始化配置)开始,逐步搭建前端核心Nginx服务、后端JDK运行环境、MySQL数据库,再到中间件(Redis缓存、RabbitMQ消息队列、Elasticsearch检索、Kibana可视化、IK分词器适配、Canal数据同步)的全套部署、配置与简单校验,每一步都配有清晰的操作说明,兼顾新手友好性与实用性。

🚨温馨提示

文章中如果跳过了Nginx安装步骤的,出现主机无法访问虚拟机的任何服务,如已经修改过MySQL用户访问,Redis的bind,以及RabbitMQ的admin访问权限后依旧访问的,请关闭防火墙,我在Nginx的环境配置中直接整个关闭防火墙以及关闭开机自启防火墙

二、系统安装

1.准备工作

1.1下载Vmware

我这里使用的是虚拟机软件是 VMware® Workstation 17 Pro,大家可以去哔哩哔哩搜索相关下载资源,目前VMware是提供了免费的下载版本,下载了一下是纯英文的,有中文包,但是不完全,大家英文不好的可以下载和我一样的版本

1.2下载CentOS7镜像

CentOS官网下载

这里不推荐大家用这种方式去下载镜像,因为速度很慢,建议使用下面的方式
选择其中一个镜像源下载CentOs7镜像即可
清华大学镜像源

阿里云镜像源

2.创建虚拟机

我们第一次打开应该是这个样子,我们直接点击左边的创建虚拟机选项

在弹出的窗口选择自定义,然后点击下一步

这里不用管直接下一步

选择稍后安装操作系统,点击下一步

选择要安装的系统和版本,然后点击下一步

然后给虚拟机起一个名称,并选择安装位置,点击下一步

这里选择处理器数量,大家可以按照自己的电脑配置来,如果超出了自己电脑配置,VMware会有提示

这里给虚拟机的运行内存,我的电脑是32G的我分了8G,这个也是大家按照自己的电脑配置来就行了,如果给太高或者太低,可能会导致主机蓝屏或者虚拟机比较卡顿的情况

这里默认使用NAT模式,我们直接用默认的就可以,然后点击下一步

使用默认,直接下一步


这里给的磁盘大小就是虚拟机的硬盘,我分配的20G,他这个是根据后面我们安装的软件越来越多逐步占用我们主机的硬盘空间,并不是创建好之后就立马占据我们主机的20个G

默认下一步

点击自定义硬件

我们刚刚是没有选择系统镜像的,里选择我们系统镜像文件

点击完成

3.VMware网络适配器配置

在我们创建好虚拟机之后,还需要进行一个网络适配器的配置,以便于我们待会去对CentOS7的网络进行静态ip的设置

点击菜单栏的编辑,然后在弹出的菜单中选择虚拟网络编辑器

点击更改设置

选择最下面的NAT模式,然后设置子网ip以及子网掩码,我这里设置的子网ip是192.168.1.0,然后点击DHCP设置

这个设置是让你的虚拟机待会使用DHCP自动分配ip的时候会从哪个ip开始划分,我这里设置的起始ip是192.168.1.100,结束ip是192.18.1.254,这个意思是待会自动分配的时候会默认从100开始分配,最多到254,这里结束ip的最后一位最大可以设置254,前面大家设置的子网ip是哪个网段的这里的起始ip就是哪个网段的,也就是,前面设置的子网ip为192.168.124.0,那你这里起始ip也应该是192.168.124.*,设置完点击确定

先点击应用,然后等待几面,再点击确定

4.安装系统

点击开启此虚拟机

4.1installl CentOS7

这里通过键盘的上下按键选择第一项install然后回车等待几分钟

4.2选择默认安装语言

然后会出现CentOS7安装的界面,然后我们选择安装过程中使用中文语言,在最下面,选择好后点击继续

4.3软件安装选择

我们先选择一下要安装的软件

这个最小安装时没有桌面的,如果大家不需要的话可以直接选择这个然后在右侧可以选择一个开发工具,然后点击完成就可以了

如果大家希望安装一个桌面,那么就可以选择下面的带GUI的服务器,然后在右侧选择开发工具,然后点击完成

这里不管是带桌面还是不带桌面,都不建议大家选择过多的右侧的环境附加选项,如果这个选择过多的话会非常占用磁盘空间,可能会导致后面我们安装的软甲装不进去然后运行不起来,这个也是踩过坑的,提前说一下

我这里直接安装的是GUI的版本,后续我们操作这个虚拟机是在xshell和xftp上面进行的,所以选择GUI还是最小安装都没关系

4.4磁盘分区

点击安装位置进行磁盘分区

点击我要配置分区,然后点击完成,自动跳转到磁盘分区页面

这里我直接点击自动创建,这里他自动创建的和我们手动点击下面+进行分配是一样的,这里省事就让他自己分配了,如果要手动分配的话也可以参考我下面自动分配出来的进行配置,

分配完成后点击左上角的完成,然后会弹出确认框,点击接受更改即可

4.5网络和主机名配置

下面我们配置网络和主机名,待会安装完成后进入系统再进行静态ip的配置

进来之后把以太网打开,然后设置一个主机名,点击应用,点击完成

4.6开始安装

4.7设置root用户名密码

给管理员用户设置密码,然后点击两次完成

4.8创建一个普通用户

输入好普通用户的用户名和密码后点击两次完成即可

4.9完成配置

至此我们就只需要等待系统自行安装即可,上面设置的root用户以及普通用户在后面我们使用xshell和xftp进行连接的时候会用到,这时候大家可以自行去xshell官网进行下载软件,然后等待安装完成
xshell和xftp官网免费授权页面

等待几分钟后已经安装完成了,然后我们点击重启进入系统

开机之后会进入一个初始设置的界面,我们点击许可信息

点击同意许可协议,然后点击完成即可

下面哪个网络的不用管,我们刚刚已经设置过了,直接点击完成配置

4.10进入系统

没有装GUI桌面的朋友可能没有这一步,直接跳过到下面一个节点即可

默认选择中文键盘布局即可,点击前进

选择汉语带拼音的,点击前进,后面可以在英文和中文之间切换

直接前进或者跳过

4.11打开终端

如果是没有安装GUI的朋友,这里直接就可以输入命令,如果是安装了GUI的朋友,右键选择打开终端

打开终端后输入ip a查看虚拟机ip信息,这里我的ip为192.168.1.101

4.12打开xshell和xftp进行连接

第一次打开会有输入邮箱和用户名这些,可以跳过,也可以输入一下,跳过的话每次启动都会需要自己点击确认按钮

打开软件之后你们没有连接过虚拟机的是空白的,我这里是连接了一些的

点击这个新建按钮

这里随便起连接名字,我这里因为连接的多,我就直接输入ip做区分,然后下面的主机会自动同步名称,如果没有同步的话,填写我们刚刚在虚拟机终端查看的ip地址

然后点击用户身份验证,然后输入刚刚的root用户或者创建的普通用户进行连接,然后点击连接,这里我是用的root用户,方便后面不用每次登陆之后手动切换到root用户

第一次连接这个虚拟机会弹出一个保存密钥的弹窗,点击接受并保存

出现这样就是已经连接好root用户

如果前面不是root,说明连接的普通用户

如果刚刚连接的时候使用的是普通用户进行连接的,我们需要root权限的时候,我们可以通过su命令切换到root用户,控制台输入su进行切换,然后输入root的账户密码,这里不会明文显示出来显示的密码,输入后直接回车即可

4.13常用linux的命令

这里我放一些常用的linux的命令在这里,后面使用命令的时候我就不在过多描述了

bash 复制代码
clear --->这清屏命令
pwd --->查看当前文件夹所在路径
ls --->查看当前文件夹下所有文件以及文件夹名称
ll --->查看当前文件夹下所有文件以及文件夹的详细信息等同于ls
tar -zxvf 软件包名 -C 路径 --->解压缩命令,中间的-zxvf参数信息我就不介绍了,从-C后面可有可无,-C参数是在解压的同时指定解压文件夹,如果不需要指定,就不需要-C参数和后买你的路径
rpm -ivh 软件包名 --->安装指定的软件包并显示详细信息以及进度条
yum install 软件包名 --->安装指定的软件包
ip a --->查看ip地址的命令
vim 文件路径 --->vim编辑器,我们需要对某个文件进行编辑的时候使用,如果文件不存在,会自动创建一个新的文件
cd 路径 --->路径跳转
mkdir 文件夹名称 --->创建文件夹
cp 文件夹路径 目标文件夹路径 --->复制文件或文件夹到目标文件夹
mv 文件夹路径 目标文件夹路径 --->移动文件或文件夹到目标地址
reboot --->重启
poweroff --->关机
systemctl start 服务名 --->启动服务
systemctl stop 服务名 --->关闭服务
systemctl enable 服务名 --->开机自启服务
systemctl disable 服务名 --->关闭开机自启服务
systemctl status 服务名 --->查看服务运行状态
systemctl is-enabled 服务名 --->查看开机自启服务状态

4.14阿里云镜像源切换

在安装环境之前,我们把CentOS的镜像源切换一下,不然会下载的非常慢

先备份原本的文件

bash 复制代码
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

下载国内源配置文件

bash 复制代码
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

更新软件包缓存

bash 复制代码
yum makecache

三、环境搭建

1.Java环境安装

环境搭建首先从Java环境入手,JDK作为后端服务及多数中间件的核心运行基础,必须优先部署.本次将选用适配CentOS7的稳定JDK版本

我使用的是Spring提供的 BellSoft Liberica JDK,下载的是jdk17版本,大家也可以下载jdk8的版本,但是我们在CentOS7安装的时候选择了开发工具所以自带一个jdk-1.8.-openjdk,所以如果要安装jdk1.8的朋友可以直接跳过这一步

1.1下载jdk的rpm包

Spring Liberica JDK 17.0.18
Oracle Java17.0.18

我们尽量选择rpm包去进行下载安装

1.2上传文件

下载完成之后我们使用xftp软件进行上传到CentOS7

我们可以直接通过xshell的菜单栏中的xftp打开,前提是你的电脑得安装xftp这个软件,这样打开的话就直接连接到我们的CentOS7上,就不用再去输入主机地址.用户名和密码了,xftp创建连接和xshell方式是一样的就不再说明了

默认进来左侧是你的主机,右侧是你的虚拟机

我们在xshell中使用命令创建一个文件夹专门存放安装包

bash 复制代码
 mkdir /home/package

我这里是直接在home文件夹下创建了一个package文件夹,然后去xftp中虚拟机那边进入到刚刚创建的文件夹

然后在xshell中跳转到刚刚存放文件夹的地方,然后输入ll命令查看

bash 复制代码
cd /home/package/
ll

1.3删除旧版jdk

在这个文件夹我们使用rpm命令来安装jdk,但是在安装之前,我们说过CentOS是自动带了一个openjdk1.8的,我这里用不上,我直接就给卸载掉

bash 复制代码
rpm -qa | grep java

执行命令,我们查看Java的文件有哪些,然后进行删除

执行删除命令,上面看到有5个包,其中一个是python的工具包不需要删除,这里删除其他几个就可以了remove是删除的意思,instal是安装的意思,在删除的时候我们就yum renmove,安装的时候就yum install -y参数是后面所有需要确认的步骤自动选择yes 后面的Java是需要删除的包名*是通配符

bash 复制代码
yum -y remove java-1.8.0-openjdk*
yum -y remove javapackages-tools*
yum -y remove tzdata-java*

卸载完成之后运行命令再次确认是否删除干净

bash 复制代码
rpm -qa | grep java

1.4安装jdk

然后执行rpm 命令进行安装,这里输入的时候后面的包名换成你们自己的,不用输入太长,输入几个字母之后可以按tab进行补全

bash 复制代码
rpm -ivh bellsoft-jdk17.0.18+10-linux-amd64.rpm

1.5确认环境

这样就是安装完成了我们运行java -version查看版本号确认时候安装成功

bash 复制代码
java -version

如果弹出版本号就说明已经安装成功

2.Nginx环境安装

我们开始安装前端核心服务Nginx。Nginx主要用于静态资源部署、反向代理及负载均衡,是前端项目上线的必备组件。

这里的步骤我直接采用nginx官网的步骤来

2.1安装工具包

这里sudo的意思是使用root权限来执行此命令,如果你是root用户,可以不用直接运行后面的yum命令

bash 复制代码
sudo yum install yum-utils

2.2创建Nginx专属源

我们直接使用vim创建这个文件并编辑,进入vim之后,我们可以按下键盘上的i进入编辑模式,在编辑结束之后,按下esc输入:wq保存并退出

bash 复制代码
vim /etc/yum.repos.d/nginx.repo
复制代码
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2.3切换仓库(非必须步骤,不建议执行,如果下面2.4执行失败可再执行本语句后继续执行)

默认情况下,稳定的nginx包仓库被使用。 如果你想使用主线nginx软件包, 执行以下命令:

上面我们配置了两个仓库,一个是nginx-stable(默认),一个是nginx-mainline如果稳定仓库不可用,我们切换主线仓库

bash 复制代码
sudo yum-config-manager --enable nginx-mainline

2.4安装Nginx

安装nginx时,请执行以下命令:

bash 复制代码
sudo yum install -y nginx

安装完成之后我们可以直接运行一下命令启动nginx服务

bash 复制代码
nginx

这里我们直接在主机上访问我们的虚拟机是不行的,我们需要关闭防火墙或者在防火墙开一个80的端口,因为默认nginx采用的是80端口

我这里直接就把防火墙关闭

bash 复制代码
systemctl stop firewalld  # 关闭防火墙
systemctl disable firewalld # 关闭防火墙开机自启

我们在主机的浏览器上输入192.168.1.101

出现这样就说明我们的nginx服务已经启动起来了

2.5开机自启Nginx

我们有时候需要nginx开机自启,我们可以运行一下命令

bash 复制代码
systemctl enable nginx # 开机自启
systemctl is-enabled nginx # 查看是否开机自启成功

如果显示的是enabled说明已经成功开启

这种命令我只会教一次,后面需要开机自启服务的你们可以自行添加,我就不再说了

至此nginx就已经安装完成

3.MySQL环境安装

我们接下来安装全栈环境的核心数据库------MySQL。MySQL作为主流的关系型数据库,是前后端服务数据存储的核心载体,负责存储业务数据、配置信息等,支撑前端展示、后端接口调用及各类中间件的数据交互。

3.1下载MySQL8的Yum源

这里我下载的是mysql8.0的Yum源
MySQL 8.0的Yum源

3.2上传MySQL包

和上面上传jdk的方式一样,我们打开xftp然后在我们主机那边找到刚下载的MySQL包双击上传到创建的专门存放安装包的文件夹

3.3安装 MySQL Yum 源

在安装mysl yum源之前先更新以下mysql密钥

bash 复制代码
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

执行以下命令安装yum源

bash 复制代码
rpm -ivh mysql80-community-release-el7-2.noarch.rpm

3.4安装MySQL

我们使用yum命令安装mysql,执行以下命令

bash 复制代码
yum -y install mysql-community-server

这里可能会报错,

text 复制代码
"MySQL 8.0 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。

我们执行以下命令即可解决,然后重新执行以上命令

bash 复制代码
yum install mysql-server --nogpgcheck

3.5启动MySQL服务

我们现在来启动以下mysql服务,MySQL的默认服务名是mysqld,执行以下命令

bash 复制代码
systemctl start mysqld
systemctl enable mysqld

3.6MySQL配置

我们先查看mysql默认给我们的初始密码,就像我们在Windows上使用绿色安装包安装MySQL一样有一个初始密码,运行以下命令,在root@localhost:后面跟着的就是我们的初始密码,中间的空格不是

bash 复制代码
grep 'temporary password' /var/log/mysqld.log

然后我们复制密码,然后登陆mysql

bash 复制代码
mysql -uroot -p

回车之后会出现输入密码,这里输入密码是不会明文显示的,直接粘贴进去回车就可以了

修改我们的root账户登陆密码,这里的密码强度如果太低则修改失败,必须要有字符数字大小写英文字母

mysql 复制代码
alter user root@localhost identified by 'Root@123123';

然后修改我们的mysql登陆权限为所有可访问

mysql 复制代码
use mysql;
update user set host = '%' where user = 'root' and host = 'localhost';

重启以下MySQL服务生效

bash 复制代码
systemctl restart mysqld

至此我们的MySQL就已经安装好并且可以在主机上通过图形化工具进行访问

4.Redis环境安装

我们继续部署核心中间件------Redis。Redis是高性能的键值对缓存数据库,主要用于缓存热点数据、减轻数据库压力、实现会话存储等,是提升服务响应速度的关键组件。

4.1配置EPEL仓库

EPEL 的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。EPEL则为服务器版本提供大量的rpm包(yum程序所使用的程序安装包,类似Windows的exe),而且大多数rpm包在官方 repository 中是找不到的。

bash 复制代码
yum install -y epel-release

4.2安装Redis

我们执行以下命令自动安装redis

bash 复制代码
yum install -y redis

4.3配置Redis

安装完成之后我们需要对redis进行一个配置,目前是仅支持本机访问,以及只能前台运行,所以我们要进入到redis的配置文件进行修改

运行下面的命令查找所有和redis相关的文件,我们查找redis.conf在哪个位置

bash 复制代码
rpm -ql redis

我们使用vim进行编辑这个文件

bash 复制代码
vim /etc/redis.conf

进入文件后不要按i进入输入模式,如果进入输入模式,按一下esc退出输入模式

然后直接输入/bind进行搜索,按n进行下一个查询

找到下面哪个默认开放的bind将后面的127.0.0.1地址修改为0.0.0.0让所有ip地址都可以访问redis

i进入编辑模式输入

我们修改完访问地址之后修改后台守护进程

我们再按esc按键退出编辑模式输入/daemonize进行搜索,按n进行下一个查询

将后面的no改成yes

然后按esc退出编辑模式输入:wq保存并退出

4.4启动Redis服务

执行下面的命令启动redis服务并自启动服务

bash 复制代码
systemctl start redis
systemctl enable redis

至此redis我们就已经安装完成了

5.RabbitMQ环境安装

我们接下来安装另一核心中间件------RabbitMQ。RabbitMQ是高性能的消息队列组件,主要用于实现服务间解耦、削峰填谷、异步通信等,避免服务直接调用导致的耦合过高、压力集中问题。

5.1准备RabbitMQ的Yum仓库

准备仓库之前我们先导入以下gpgkey密钥,逐个执行以下命令

bash 复制代码
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey
rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey

使用vim创建/etc/yum.repos.d/rabbitmq.repo文件

bash 复制代码
vim /etc/yum.repos.d/rabbitmq.repo

在文件中将下面的内容直接粘贴进去

text 复制代码
##
## Zero dependency Erlang
##

[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

##
## RabbitMQ server
##

[rabbitmq_server]
name=rabbitmq_server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
       https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_server-source]
name=rabbitmq_server-source
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

5.2安装RabbitMQ

执行下面的命令安装erlang和rabbitmq-server

bash 复制代码
yum install erlang rabbitmq-server -y

在之前的Java环境汇总中提到,安装RabbitMQ之前我们需要安装Erlang这里直接两个一起安装,为什么一定要安装erlang语言,因为RabbitMQ是使用erlang语言进行编写的,所以我们要先给RabbitMQ准备好相应的环境

5.3启动服务

安装完成之后我们启动rabbitMQ服务

bash 复制代码
systemctl start rabbitmq-server
systemctl enable rabbitmq-server

5.4启动RabbitMQ插件

执行下面的命令启动插件

bash 复制代码
rabbitmq-plugins enable rabbitmq_management

5.5创建RabbitMQ用户

我们创建一个admin用户,然后赋值权限让我们在主机环境下可以进行访问rabbitmq的控制台,默认的guest用户只能在localhost下才能访问,所以我们在主机使用guest用户是登陆不进去的

bash 复制代码
rabbitmqctl add_user admin admin # 创建用户并赋值密码
rabbitmqctl set_permissions -p "/" "admin" ".*" ".*" ".*" # 配置访问权限
rabbitmqctl set_user_tags admin administrator # 设置用户标签

此时我们的rabbitmq就可以在主机访问了

6.Canal环境安装

我们继续部署数据同步中间件------Canal。Canal是阿里巴巴开源的分布式数据同步工具,核心用于监听MySQL二进制日志,实现数据实时同步(如同步至ES、Redis等组件),解决数据异构、实时备份等业务场景需求。

💡 温馨提示

在安装 Canal 之前,请确保你的 MySQL 服务已经安装、配置并正常运行。这是 Canal 正常工作的重要前提。

6.1下载Canal压缩包

Github仓库

我们选择deployer版本进行下载,然后通过xftp进行上传

6.2解压缩

我们对canal的绿色压缩包执行解压缩并指定位置

一般我们会把软件存放在opt目录下,我们之前创建的文件夹只是用于存放安装包,opt目录是系统自带的所以我们这里不需要创建

我现在在安装包路径下执行下面的命令进行解压缩

bash 复制代码
mkdir /opt/canal.deployer-1.1.8 # 创建一个目录用于接收canal解压缩后的文件
tar -zxvf canal.deployer-1.1.8.tar.gz -C /opt/canal.deployer-1.1.8

然后我们使用cd 命令到opt目录,使用ll命令查看当前文件夹下的所有文件,然后进入canal的文件夹

bash 复制代码
cd /opt
ll
cd canal.deployer-1.1.8/

6.3开启MySQL的Binglog日志

我们在使用canal之前有一些东西需要配置,先确认一下我们的MySQL的Binlog 是否开启

我们在mysql中查询以下语句

mysql 复制代码
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'binlog_format';


如果你的命令结果不是以上那么继续看下面的步骤

在xshell中运行以下命令去修改MySQL的配置文件

bash 复制代码
vim /etc/my.cnf

在文件的末尾添加以下内容开启binglog

text 复制代码
# 打开binlog
log-bin=mysql-bin
# 选择ROW(行)模式
binlog-format=ROW
# 配置MySQL replaction需要定义,不要和canal的slaveId重复
server_id=1

保存并关闭后重启mysql服务

6.4配置Canal

canal中的conf文件夹下有一个示例文件,我们直接去编辑

bash 复制代码
vim conf/example/instance.properties

这两个参数我们去mysql执行下面的查询语句

mysql 复制代码
SHOW MASTER STATUS

第一列对应的是canal配置文件的canal.instance.master.journal.name

第二列对应的是canal配置文件的canal.instance.master.position

继续下翻

找到这两个配置,我们需要在mysql中配置一个canal专属的用户,这个用户必须新建

我创建的用户名是canal,访问权限%, 密码Canal@123123

mysql 复制代码
CREATE USER 'canal'@'%' IDENTIFIED BY 'Canal@123123';  # 创建用户 
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; # 赋值权限
FLUSH PRIVILEGES; # 刷新

这里填写的就是刚刚创建的canal用户的用户名和密码

这里还需要一个配置,我们将这个配置添加到canal密码的下面,后面的值是你默认要监听的哪个数据库的库名

text 复制代码
canal.instance.defaultDatabaseName=

然后保存并退出

我们在运行之前还需要修改bin目录下start.sh文件

bash 复制代码
vim bin/startup.sh

下翻到99行的位置

这个是在jdk1.8之前才有的一个参数,我这里安装的是jdk17,参数名变化了,所以这里需要修改以下,如果使用的是jdk8的朋友,这里就不需要修改

将这个参数名称改成MetaspaceSize保存退出

然后运行以下命令启动canal

bash 复制代码
./bin/startup.sh

我们通过ps命令查看是否正在运行

bash 复制代码
ps -ef | grep canal

如果出现出了最下面那条以外还有那就说明启动起来了

这里我们先把这个进程关闭

bash 复制代码
./bin/stop.sh

6.5创建Canal服务

这里我们目前还不能开机自启动,我们可以通过创建服务的方式启动

bash 复制代码
vim /etc/systemd/system/canal.service
text 复制代码
[Unit]
Description=canal-server
After=network.target mysqld.service
Requires=mysqld.service

[Service]
Type=forking
WorkingDirectory=/opt/canal.deployer-1.1.8 # 这个是工作目录,改成你的canal存放目录
ExecStart=/opt/canal.deployer-1.1.8/bin/startup.sh # 这个是启动canal需要执行的命令,直接执行canal目录下bin目录的startup.sh文件,这里写全路径从根目录开始
ExecStop=/opt/canal.deployer-1.1.8/bin/stop.sh # 这个是停止canal需要执行的命令,和启动命令在同一个目录下,也是需要写全路径的
User=root
Group=root
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

保存后刷新服务

bash 复制代码
systemctl daemon-reload

保存并退出后,设置自启动

bash 复制代码
systemctl start canal
systemctl enable canal

至此我们的Canal的安装以及启动和自启动就配置好了

7.Elasticsearch环境安装

我们搭建分布式检索核心组件------Elasticsearch(简称ES)。ES是高性能分布式搜索引擎,核心用于全文检索、日志分析、数据聚合等场景,可快速处理海量数据的检索需求,后续将搭配Kibana和IK分词器使用。

7.1下载Elasticsearch

💡 温馨提示

在安装ES之前先查看以下是否有kibana相匹配的版本,如果没有则先安装有kibana的ES版本

ElaSticsearch

截至目前最新是9.2.4,在下载的同时我们也要去看一下kibana的最新版是多少,我看了一下,在我写这篇文章的时候kibana最新版本也是9.2.4,elasticsearch和kibana两个版本一定要一样,不然可能会存在版本不一致问题

点击页面之后下载linux x86_64版本的

然后将我们刚刚下载好的ES通过xftp上传到CentOS7

目前安装包文件夹下只有这几个文件

7.2解压缩

我们将上传的ES进行解压缩放到/opt目录下,并进入/opt下的es目录

bash 复制代码
tar -zxvf elasticsearch-9.2.4-linux-x86_64.tar.gz -C /opt/
cd /opt/elasticsearch-9.2.4/

7.3 修改ES配置文件

我们在启动前需要修改es的配置文件,让es可以在主机上进行访问

bash 复制代码
vim config/elasticsearch.yml

进入文件之后找到network.host这个配置修改这个地址为0.0.0.0,然后保存并退出

这里还有一项配置,需要待会把es启动起来之后再进行修改,我们先往下走

这里有几个常见的坑,我提前给大家规避以下

  1. 修改虚拟内存大小
bash 复制代码
vim /etc/sysctl.conf 

将下面的内容添加到最下面

text 复制代码
vm.max_map_count=655360

然后执行下面的命令让修改生效

bash 复制代码
sysctl -p

增加内存锁限定

bash 复制代码
vim /etc/security/limits.conf

将下面的内容添加到文件中保存并退出

text 复制代码
es - nofile 655360

重新加载 systemd

bash 复制代码
systemctl daemon-reload
  1. 文件权限不足
    我们的es是不允许使用root用户去运行的,所以我们这里要新增一个专门用来起es的用户
bash 复制代码
useradd es # 添加用户,名称为es
passwd es # 给名称为es的用户设置密码

这里要输入两次密码,提示无效的密码: 密码少于8个字符不用管,直接设置就行了

创建好用户之后,我们要给es用户给权限

bash 复制代码
chown -R es:es /opt/elasticsearch-9.2.4/

到这里,我们的坑就规避掉了,然后就可以切换用户去启动es了,运行下面的命令切换到es用户执行es

bash 复制代码
su es
./bin/elasticsearch

这次启动会报错,因为还有一项配置我们刚刚说过需要运行es之后才能进行修改

等待es自己结束之后,我们切换回root用户去修改

bash 复制代码
vim config/elasticsearch.yml 

下拉到文件末尾找到xpack.security.enabled配置这个是关闭安全校验的,将后面的true改成false

然后在页面的最下面,添加一行禁用机器学习的功能,然后保存并退出

text 复制代码
xpack.ml.enabled: false

切换到es用户,启动es

bash 复制代码
su es
./bin/elasticsearch

这时候我们的ES服务就启动起来了,我们在浏览器输入192.168.1.101:9200就可以访问了,出现如下数据,就说明服务没有问题

7.4创建ES启动服务

我们现在是前台启动,且没有开机自启动的,所以我们要创建一个和canal一样的服务文件

bash 复制代码
su
vim /etc/systemd/system/elasticsearch.service
text 复制代码
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co/cn/
After=network.target

[Service]
Type=simple
User=es # 这里你的es的用户名是什么就写什么
Group=es # 这个是ES 用户的所属用户组写一样就行

# es的环境变量
Environment=ES_HOME=/opt/elasticsearch-9.2.4 # es安装目录
Environment=ES_PATH_CONF=/opt/elasticsearch-9.2.4/config # es安装目录中的config目录

# es的工作目录
WorkingDirectory=/opt/elasticsearch-9.2.4 # es的安装目录

# es的启停命令
ExecStart=/opt/elasticsearch-9.2.4/bin/elasticsearch # es安装目录下的bin目录里面的elasticsearch 命令,在启动服务的时候会运行这个
ExecStop=/bin/kill -SIGTERM $MAINPID

Restart=always
RestartSec=10
LimitNOFILE=65535
LimitNPROC=4096
LimitMEMLOCK=infinity

TimeoutStopSec=0

[Install]
WantedBy=multi-user.target

保存并退出后刷新服务

bash 复制代码
systemctl daemon-reload

7.5设置ES自启动

bash 复制代码
systemctl start elasticsearch
systemctl enable elasticsearch

至此我们的ES也已经安装好了

8.Kibana环境安装

ES部署完成后,我们安装其配套可视化工具------Kibana。Kibana与ES无缝集成,核心用于ES集群管理、检索请求编写、数据可视化展示、日志分析等,可直观操作ES并呈现数据结果,降低ES的使用门槛。

8.1下载Kibana

💡 温馨提示

因为上面我们ES安装的是9.2.4版本,所以这里的kibana必须装9.2.4版本

Kibana

我们选择好版本后,在页面下载Linux x86_64版本,然后将下载好的压缩包通过xftp上传到CentOS7

8.3解压缩

运行以下命令将kibana解压缩到/opt目录,然后进入到opt目录下的kibana目录

bash 复制代码
tar -zxvf kibana-9.2.4-linux-x86_64.tar.gz -C /opt/
cd /opt/kibana-9.2.4/

8.4修改Kibana配置文件

启动kibana之前,我们需要对kibana的配置文件有个修改

先让主机能够访问我们的kibana服务,运行下面的命令打开配置文件

bash 复制代码
vim config/kibana.yml

将这个打开,并将localhost换成0.0.0.0

继续下滑,找到elasticsearch.hosts这个配置,这个配置是kibana客户端连接 Elasticsearch 集群时使用的配置,告诉kibana怎么访问es,这个打开就可以了,因为es和kibana在同一台CentOS上,所以直接使用localhost就可以

下滑找到i18n.locale配置,这个配置是kibana控制台默认语言的配置,把这个配置打开,然后将en换成zh-CN然后保存并退出

8.5创建用户

同样我们kibana也是不可以使用root用户去启动的,所以我们要给kibana创建一个用户并给权限,这里设置密码一样提示无效密码,但是不用管他,直接设置就行,我给的密码是kibana

bash 复制代码
useradd kibana # 创建用户 名称叫kibana
useradd kibana # 给kibana用户设置密码

给权限

bash 复制代码
chown -R kibana:kibana /opt/kibana-9.2.4/

然后我们切换到kibana用户下启动

bash 复制代码
su kibana
./bin/kibana

第一次进来会显示一个引导,直接点击自行浏览就会出现这个页面

8.6Kibana操作ES

点击左上角的三个横线,打开左侧菜单,然后往下滑到最下面,有一个开发工具,打开就是控制台,在里面写es的crud

8.7创建Kibana启动服务

目前我们kibana是手动启动,且是前台服务,我们需要做一个类似ES的服务来帮我我们后台启动

先回到root用户

bash 复制代码
su
vim /etc/systemd/system/kibana.service
text 复制代码
[Unit]
Description=Kibana 9.2.4
After=network.target elasticsearch.service

[Service]
Type=simple
User=kibana
Group=kibana

WorkingDirectory=/opt/kibana-9.2.4

ExecStart=/opt/kibana-9.2.4/bin/kibana
Restart=always
RestartSec=10

LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

保存并退出后刷新服务

bash 复制代码
systemctl daemon-reload

8.8设置Kibana自启动

bash 复制代码
systemctl start kibana
systemctl enable kibana

9.ik分词器插件安装

Kibana安装完成后,我们为ES安装核心中文分词插件------IK分词器。IK分词器是ES最常用的中文分词工具,可解决ES默认中文分词精度低、无法识别中文词语的问题,适配中文全文检索场景。

9.1下载ik分词器

💡 温馨提示

因为上面我们ES安装的是9.2.4版本,所以这里的ik分词器也必须装9.2.4版本

我们先进入到es的安装目录的bin目录里面,这是在root用户下执行的命令

bash 复制代码
cd /opt/elasticsearch-9.2.4/bin/
ls

ls之后我们会看到一个elasticsearch-plugin的命令

我们下载ik分词器就使用这个命令,你如果不是9.2.4版本的,比如说你是8.12.2版本的,直接把最后面这个9.2.4换成8.12.2版本就行,他会自动下载对应版本的ik分词器

bash 复制代码
./elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/9.2.4

中间有一个确认的步骤,输入y确认即可

然后我们需要重启一下es,这个命令是上面在安装es的时候配置的,没有的话去上面看一下

bash 复制代码
systemctl restart elasticsearch

9.2验证ik分词器

到此ik分词器就已经安装好了,我们接下来去刚刚安装好的kibana控制台去使用测试一下

es 复制代码
POST _analyze
{
  "analyzer":"ik_max_word",
  "text":"微服务架构下,Nacos作为注册中心,Sentinel负责流量控制,通过OpenFeign进行服务间HTTP客户端调用是常见模式。"
}

出现右侧的结果说明ik分词器就已经安装成功了

10.补充CentOS 7静态ip配置

前面写的时候忘了配静态ip,这里补充一下

我们先查看一下ip

bash 复制代码
ip a

可以看到我们的ip 192.168.1.101是ens33这个网卡,用于连接实际网络记住这个ens33

我们直接打开这个网卡的配置文件,刚刚我们网卡是ens33所以这个文件在目录下就是带有ens33那个,不确定的可以先cd到/etc/sysconfig/network-scripts/目录然后ls查看一下,只有一个带ens33的文件

bash 复制代码
cd /etc/sysconfig/network-scripts/

对这个文件进行编辑一下

bash 复制代码
vim ifcfg-ens33 

上面的BOOTPROTO的值改成static

在自启动的后面追加一下这段

text 复制代码
IPADDR=192.168.1.111 # 静态ip
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.2 # 网关
DNS1=8.8.8.8
DNS2=223.5.5.5

然后保存退出,执行重启网卡命令,root用户下

bash 复制代码
systemctl restart network

此时如果我们连接着xshell会立即断开,我们只需要使用刚刚设置的静态ip重新连接即可

我们ping一下百度查看是否有网络连接

有小伙伴可能是下面这样的,不要急,不是你的网络联不通

有个邪修方法,你在输入ping www.baidu.com之后,按shift+回车就能显示中间的信息

至此CentOS 7静态ip就已经配置好了

四、总结

至此,从CentOS7虚拟机创建到全栈环境的核心组件部署已全部梳理完毕。本次搭建覆盖前端(Nginx)、后端(JDK)、数据库(MySQL)、中间件(Redis、RabbitMQ、Canal)及检索体系(ES、Kibana、IK分词器),形成一套完整可落地的开发/测试全栈环境。全程遵循"循序渐进、先基础后组件、先核心后配套"的逻辑,每一步均经过实操验证,可有效避开版本兼容、依赖缺失等常见坑,助力大家快速搭建可用的全栈环境,为后续项目开发、测试奠定坚实基础。

最后给大家罗列一下本文章所有环境的默认端口号,以便访问或开启防火墙指定端口

名称 端口号
Nginx 80
MySQL 3306
Redis 6379
RabbitMQ 15672
Canal 11111
Elasticsearch 9200
Kibana 5601

🤫福利给到能看完的朋友

相关推荐
若风的雨2 小时前
【 ARMv8多核处理器启动方案设计】
linux·arm开发
是火云哦2 小时前
打包你的开发环境:Docker 从入门到上瘾
运维·docker·容器
迷路爸爸1803 小时前
无sudo权限远程连接Ubuntu服务器安装TeX Live实操记录(适配VS Code+LaTeX Workshop,含路径选择与卸载方案)
java·服务器·ubuntu·latex
我送炭你添花3 小时前
树莓派 3B+ 部署 TR-069 ACS(自动配置服务器)GenieACS 实录
运维·服务器·网络协议
皓月盈江3 小时前
MoonBit国产编程语言创建新包和使用新包
linux·moonbit·国产编程语言·moonbit教程·moonbit创建包·moonbit使用包
扫地生大鹏3 小时前
阿里云大模型服务器安装SNMP包启发
运维·服务器
2601_949613023 小时前
flutter_for_openharmony家庭药箱管理app实战+用药提醒列表实现
服务器·前端·flutter
今晚打佬虎3 小时前
精准阻断 Docker 容器映射端口:流量路径诊断与 iptables 配置
运维·docker·容器
honsor3 小时前
机房/档案室专用以太网温湿度传感器:智能监控赋能环境安全
运维·网络·物联网·安全