一篇搞定!超详细保姆级中间件部署指南

在当今软件开发的世界中,中间件扮演着至关重要的角色。
它们不仅帮助应用程序之间的通信,还提升了系统的扩展性、可靠性和性能。
无论是数据库连接、缓存管理还是消息队列,中间件的使用已经成为现代软件架构的标准。
为了帮助开发者更好地掌握这些关键技术,本博客将提供一系列关于流行中间件的部署教程。
包括利用Linux和Docker构建生产环境,我们都会一步步引导你完成中间件的配置和部署。

通过这个博客,你将学会如何在不同的环境中灵活部署和管理中间件,为你的应用程序提供坚实的技术基础。

让我们一起踏上这趟学习之旅,深入探索那些推动现代软件开发的中间件技术吧!

VMware 安装配置 Ubuntu

下载安装VMware

VMware 官网 | Desktop Hypervisor Solutions |

官网下载速度慢的可以使用我百度网盘分享的链接来下载

百度网盘没有会员? 我在网上找到了123网盘分享的( 登录就可以下载了 )

双击运行文件,一直默认安装即可(建议安装在非C/系统盘),并输入以下许可证密钥

  MC60H-DWHD5-H80U9-6V85M-8280D

image-20240907105333279

检查网络适配器

  • VMware 安装完成后,需要确认自己的电脑是否已安装两个网络适配器:
    VMware Network Adapter VMnet1VMware Network Adapter VMnet8 ,否则会影响联网功能。

方法一 : Windows R 输入 cmd 调出窗口,输入 ipconfig 查看网络配置

方法二 : Windows i 调出设置 ➡️ 网络和 Internet ➡️ 高级网络设置 ➡️ 网络适配器

方法三 : 右键 此电脑 ➡️ 管理 ➡️ 计算机管理 ➡️ 系统工具 ➡️ 设备管理器 ➡️ 网络适配器

如果在 VMware 安装完成后,并没有通过上述三种方式找到 VMnet1VMnet8 网络适配器
请参考 完美解决VMware安装后没有VMnet1和VMnet8的问题

Ubuntu下载

[Download - 官网]:

[Download - 清华镜像站]:

image-20240907105115817

创建虚拟机

[Step 1]: 打开 VMware 软件,点击 创建新的虚拟机

[Step 2]: 新建虚拟机向导如下图

启动虚拟机

[Step 1]: 打开 VMware 软件,即可看到新建的虚拟机 Ubuntu 64位,点击 开启此虚拟机

[Step 2]: 键盘布局 ➡️ 更新和其它软件

[Step 3]: 安装类型 ➡️ 你在哪

[Step 4]: 你是谁 ➡️ 安装完成,重启

[Step 5]: 登录 Ubuntu 系统

安装 VWware Tools

VMware Tools 作用请参考:https://docs.vmware.com/cn/VMware-Tools/index.html


[Step 1]: 如下图, 重新安装 VMware Tools(T)... 是灰色的,则需要关闭虚拟机

[Step 2]: 直接在线安装吧!解决虚拟机安装 VMware Tools 灰色无法点击问题

# 更新软件源列表
sudo apt-get update

# 更新软件
sudo apt-get upgrade

# 下载安装 open-vm-tools-desktop
sudo apt-get install open-vm-tools-desktop -y

安装 SSH 连接工具


将防火墙关闭

sudo ufw disable

判断是否开启SSH

# 判断是否已开启SSH
ps -e | grep ssh

# 没有开启则启动SSH
service ssh start

# 没有安装SSH则开启SSH服务
sudo apt-get install openssh-server

# 安装完之后重启SSH服务
sudo /etc/init.d/ssh restart

如果 SSH 安装失败就直接 包治百病 三部曲

排山倒海第一部:sudo apt-get update  如果没效果进行B计划

葵花点穴第二部:sudo apt-get upgrade 如果 SSH 还是冥顽不灵不得不使出绝招

葵花宝典第三部:sudo apt-get install ssh 

执行了以后执行安装的命令 : sudo apt-get install openssh-server

判断22端口是否启动
如果端口被占用,则需要打开 任务管理器 ,找到占用该端口的程序,把那个程序关掉

netstat -antulp | grep ssh

配置静态IP

**[Step 1]: 设置 ➡️ settings **

[Step 2]: 设置 ➡️ IPV4

[Step 3]: 查看网关相关参数 “WIN R ➡️ 输入control ➡️ 网络和共享中心 ➡️ 以太网 ➡️ 详细信息”

[Step 4]: 配置IPV4 ➡️ Manual ➡️ Address ➡️ Netmask ➡️ Gateway ➡️ DNS

[Step 5]: 使用本机Ping测试 ➡️ WIN R ➡️ 输入cmd ➡️ 输入ping (你设置的静态IP)

到这里VMware 安装配置 Ubuntu 就结束啦

VMware 安装配置 Centos

这里提一下, Centos 相关的操作系统, Linux社区已经不再维护了, 建议装 Ubuntu

下载安装VMware

官网下载速度慢的可以使用我百度网盘分享的链接来下载
百度网盘 | VMware 17.5.2


百度网盘没有会员? 我在网上找到了123网盘分享的( 登录就可以下载了 )
123云盘 | VMware-workstation-full-17.5.1

  • 双击运行 .exe 文件,一直默认安装即可(建议安装在非C/系统盘),并输入以下许可证密钥
MC60H-DWHD5-H80U9-6V85M-8280D



检查网络适配器

  • VMware 安装完成后,需要确认自己的电脑是否已安装两个网络适配器:

  • VMware Network Adapter VMnet1VMware Network Adapter VMnet8 ,否则会影响联网功能。

方法一 : Windows R 输入 cmd 调出窗口,输入 ipconfig 查看网络配置

方法二 : Windows i 调出设置 ➡️ 网络和Internet ➡️ 高级网络设置 ➡️ 网络适配器

方法三 : 右键 此电脑 ➡️ 管理 ➡️ 计算机管理 ➡️ 系统工具 ➡️ 设备管理器 ➡️ 网络适配器

如果在 VMware 安装完成后,并没有通过上述三种方式找到 VMnet1VMnet8 网络适配器
请参考 完美解决VMware安装后没有VMnet1和VMnet8的问题

Centos 下载

[Download - 清华镜像站]:

官方源已经下线了, 所以这里提供清华源镜像站的 Centos
点击 Centos 8.5.2111 | 清华大学开源软件镜像站
页面中的 Cent0S-8.5.2111-X86_64-dvd1.iso

其他的镜像站比如阿里云 / 网易云同样提供 Centos 镜像
这里更推荐下载清华镜像站的, 看网上一些帖子说阿里云的会拉不了镜像( 还没验证过🤣 )
秉承着多一事不如少一事的原则, 能偷懒就偷懒的准则, 还是推荐下清华镜像站的 Centos


[Download - 阿里云镜像站]:

点击 Centos 8.5.2111 | 阿里云开源镜像站
页面中的 Cent0S-8.5.2111-X86_64-dvd1.iso

[Download - 网易云镜像站]:

点击 Centos 8.5.2111 | 网易云开源镜像站
页面中的 Cent0S-8.5.2111-X86_64-dvd1.iso

创建虚拟机

*[Step 1]: 打开 VMware 软件,点击 创建新的虚拟机

*[Step 2]: 新建虚拟机向导如下图

启动虚拟机

[Step 1]: 打开 VMware 软件,即可看到新建的虚拟机 Centos 64位,点击 开启此虚拟机

[Step 2]: 语言选择 ➡️ 安装目的地

[Step 3]: 选择存储配置 ➡️ 设置时区和日期

[Step 4]: 设置时区和日期 ➡️ 设置ROOT账户的密码

[Step 5]: 设置ROOT账户的密码 ➡️ 开始安装

配置静态IP

1.将虚拟机网络适配器修改成桥接模式

2.查看本地网络适配器及默认网关

WIN R 输入 control ->网络和共享中心 -> 以太网 -> 详细信息

3.编辑->虚拟网络编辑器->添加网络->修改网络适配器为本机网络适配器

4.修改虚拟机网络配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

部分参数解释 :

  • BOOTPROTO**: 使用静态 IP 配置 **
  • ONBOOT: 在系统引导时是否激活此设备
  • IPADDR: 指明IP地址( 这是后面局域网内别的电脑访问的IP地址 )
  • GATEWAY: 默认网关( 改成本机的网关 )
  • DNS1: 第一个DNS服务器指向

5.重启网络配置使其生效

systemctl restart network

到这里 Centos 的安装就结束啦~

XTerminal ( 终端工具 )

XTerminal 相关介绍

XTerminal 是一款为 Linux 和 macOS 用户设计的终端仿真器,它提供了一些增强的功能和特性,使得用户在命令行工作时更加高效和便捷。以下是 XTerminal 的一些主要特性和功能:

1.多标签页支持:XTerminal 允许用户在同一个窗口中打开多个标签页,方便在不同的会话之间切换,无需打开多个终端窗口。
2.分屏功能:它支持在同一个标签页内分屏,用户可以同时查看和操作多个终端会话。这对于需要同时监控多个进程或在不同的环境中运行命令的用户非常有用。
3.主题和自定义:XTerminal 提供了多种主题和自定义选项,根据自己的喜好更改终端的外观,背景颜色、文本颜色、字体等。
4.插件支持:XTerminal 支持插件扩展功能,用户可以通过安装不同的插件来扩展终端的功能,例如增加对版本控制系统的支持、增强命令提示等。
5.快捷键支持:XTerminal 提供了丰富的快捷键配置,使用户能够更加高效地操作终端。例如,可以使用快捷键快速切换标签页、分屏,或执行常用命令。
6.兼容性:XTerminal 兼容性良好,能够与大多数 Unix 命令和工具协同工作,并且可以与多种 shell 兼容,如 Bash、Zsh 等。
7.性能优化:相比一些其他的终端仿真器,XTerminal 在性能上进行了优化,使得其能够处理大量输出或复杂的脚本,而不会出现卡顿或延迟。

下载安装 XTerminal

推荐一个颜值在线的连接工具 [XTerminal]
点击下载 : XTerminal | SSH连接工具

添加 SSH 连接

添加服务器连接

填写服务器连接信息

连接成功后界面如下, 这界面挺喜欢的, 哈哈哈!


MobaXterm ( 终端工具 )

MobaXterm 相关介绍

MobaXterm 是一款功能强大的终端仿真器和远程计算工具,专为 Windows 用户设计,提供了一站式解决方案,以便在本地和远程计算环境中工作。它结合了终端仿真、SSH 客户端、远程桌面、文件传输等多种功能,非常适合需要在不同服务器和网络设备上进行管理和操作的开发者、系统管理员以及网络工程师。以下是 MobaXterm 的一些主要特性和功能:


主要特性 :

1.多标签页终端:MobaXterm 支持多标签页,用户能够在同一个窗口中打开多个终端会话,在不同会话之间快速切换和操作。
2.内置 X 服务器:MobaXterm 集成了 X11 服务器,支持在 Windows 上运行远程 Unix/Linux 应用的 GUI 界面,这对于需要远程访问带有图形界面的 Unix/Linux 程序的用户非常有用。
3.远程会话管理:支持多种远程连接协议,如 SSH、RDP(远程桌面)、VNC、X11、FTP、SFTP、Telnet 等,使用户能够轻松连接和管理各种类型的远程服务器和网络设备。
4.SFTP 文件传输:在使用 SSH 连接时,MobaXterm 会自动开启 SFTP 支持,可以通过图形界面方便地上传和下载文件。
5.插件支持:MobaXterm 支持通过插件扩展功能,用户安装不同的插件,添加额外的工具和功能,比如网络工具、开发库等。
6.多协议支持:除了 SSH 和 SFTP 外,MobaXterm 还支持 RDP、VNC、X11 等多种协议,适用于各种不同的远程管理场景。
7.多语言支持:MobaXterm 支持多种编程语言和脚本语言,包括 Bash、Perl、Python、Ruby 等,这使得它在跨平台开发和脚本执行方面也非常方便。
8.网络工具:内置多种实用的网络工具,如端口扫描器、网络监控器、网络嗅探器等,在进行网络配置和故障排查时使用。

下载安装 MobaXterm

[Step 1] : 官网下载 MobaXterm -> 点我下载 | MobaXterm

[Step 2] : 选择免费版下载

[Step 3] : 下载安装版

[Step 4] : 解压 ➡️ 安装 ➡️ 打开 ➡️ Session

添加 SSH 连接

[Step 1] : 填写相关信息

[Step 2] : 输入账号密码

[Step 3] : 连接成功 !


虽然 MobaXterm 的颜值看起来没有 XTerminal 那么高
但是它该有的功能基本都有, 而且是完全免费的 , XTerminal 有些功能收费
萝卜青菜各有所爱, 诸君根据自己的喜好选择相应的终端工具哈哈哈


Ubuntu 安装 Docker

准备条件

# 安装前先卸载操作系统默认安装的docker,
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装必要支持
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

准备安装

#添加 Docker 官方 GPG key(可能国内现在访问会存在问题, 推荐用下面的阿里源)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 阿里源(推荐使用阿里的gpg KEY)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg


#添加 apt 源(同样推荐使用阿里源):
#Docker官方源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#阿里apt源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#更新源
sudo apt update
sudo apt-get update

安装Docker

#安装最新版本的Docker
sudo apt install docker-ce docker-ce-cli containerd.io
#等待安装完成

#查看Docker版本
sudo docker version

#查看Docker运行状态
sudo systemctl status docker

安装Docker命令补全工具

# 安装 bash-completion 包
sudo apt-get install bash-completion

# 下载 Docker 自动补全脚本
sudo curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh

# 加载自动补全脚本
source /etc/bash_completion.d/docker.sh

配置加速地址

# 创建docker目录
sudo mkdir -p /etc/docker

# 配置 Docker 使用多个镜像加速器来提高从 Docker Hub 拉取镜像的速度
######################## 命令开始 #########################
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
  ]
}
EOF
######################## 命令结束 #########################

# 重新加载守护进程配置文件
sudo systemctl daemon-reload

# 重新启动 Docker 服务
sudo systemctl restart docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou"
  ]
}
EOF

将当前用户添加到 docker

# 将 ubuntu 用户添加到 docker 组
sudo usermod -aG docker ubuntu

# 注销并重新登录
exit

# 验证是否更改成功
docker ps

出现以下结果为添加成功

Centos 安装 Docker

卸载旧版Docker( 如果之前装过Docker的话 )

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

配置Docker的yum库和源sudu

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

配置镜像加速

# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
######################## 命令开始 #########################
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
  ]
}
EOF
######################## 命令结束 #########################

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker

Centos 安装 Docker 就结束啦~




下面介绍两款目前市面上比较热门的部署面板工具
一款是宝塔linux面板, 一款是1panel


宝塔Linux面板(一键部署工具)

相关介绍

宝塔面板 是一款广受欢迎的Linux服务器管理软件,它提供了一键安装LNMP、LAMP、集群、监控、网站、FTP、数据库、Java等多种服务器管理功能,它直观的用户界面和简化的操作流程使得新手也能快速上手,轻松管理服务器。此外,宝塔面板还支持多种常见的Linux发行版,具有庞大的用户群体和活跃的社区,用户可以在社区中寻求帮助,分享经验,获取最新的使用技巧和教程。


安装宝塔

[Step 1] : 选择对应的操作系统的命令来安装

[Step 2] : 输入 y 继续 等待下载完成…

[Step 3] : 出现如下画面即 宝塔面板 安装成功 !


下面的信息 只会出现一次, 一定要保存好 !!!

启动宝塔

[Step 1] : 复制前面的内 网面板地址 到浏览器进行访问


第一次访问会提示不安全, 选择 高级 再 继续访问 即可

[Step 2] : 输入账号密码进行登录

[Step 3] : 绑定宝塔官网账号, 去宝塔官网进行注册然后绑定就行了

绑定成功后进入首页如下

安装中间件

[Step 1] : 软件商店 ➡️ 愉快安装中间件 !


[Step 2] : 安装 Mysql

[Step 3] : 耐心等待 Mysql 安装…

等待安装完成就可以使用中间件啦, 其他的中间件安装也是同理
使用服务器面板安装中间件非常简单, 基本不需要过多的学习, 基本开箱即用

到这里宝塔面板安装中间件就结束啦, 剩下的内容等待小伙伴自己再体验哦~

1Panel面板(一键部署工具)

相关介绍

1Panel 是一款现代化、开源的Linux服务器运维管理面板,它采用最新的前端技术和容器技术,使得服务器的运维管理更加简单、更安全,通过Web端轻松管理Linux服务器,包括应用管理、主机监控、文件管理、数据库管理、容器管理等。1Panel还提供了快速建站、安全可靠、一键备份等功能,支持一键备份和恢复,备份数据可在云端存储。

下载安装 1Panel

[Step 1] : 安装 Ubuntu 对应的版本 : 1Panel | Ubuntu | 运维面板

[Step 2] : 输入 1Panel 的安装目录


这边建议固定一个部署中间件的文件夹
后面使用Docker部署中间件的时候配置文件都可以放在一块
想要修改配置文件相关的参数都很方便, 不用找来找去的
这也是我出这篇教程的目的吧, 网上的部署教程纷杂, 挂载文件的目录都不同
我这里就将 1Panel /usr/local/etc 目录下

[Step 3] : 配置 1Panel 相关信息

启动 1Panel

[Step 1] : 访问 1Panel ➡️ 输入账号密码

[Step 2] : 进入 1Panel 首页


不得不说 1Panel 的页面做的真的很舒服呀 我非常喜欢这种简约的

安装中间件

[Step 1] : 应用商店 ➡️ 愉快安装中间件!

[Step 2] : 安装 Redis ( 前面已经用宝塔安装过Mysql, 这次安装Redis )

[Step 3] : 耐心等待安装…

[Step 4] : 安装成功 !

[Step 5] : 尝试本地连接工具是否成功连接


填写 Redis 连接信息

连接成功 !

[Step 6] : 查看 Redis 日志 | 容器 ➡️ 日志

是不是非常方便呢? 真 · 开箱即用 !
综合下来的体验感觉 1Panel 比 宝塔 好一些
而且 1Panel 的页面做的更深得我心 哈哈哈
当然各有各的看法爱好, 根据自己喜欢的来选择


1Panel 面板安装中间件就结束啦, 剩下的内容等待小伙伴自己再体验哦~

宝塔 与 1Panel 对比

对比维度宝塔面板1Panel
开发语言PythonGo
容器依赖非核心功能核心功能
安装速度较慢较快
系统侵入性较高较低
社区支持庞大且活跃较小但增长迅速
安全性基本安全设置更注重安全性
开源性部分开源完全开源
现代化程度较为传统现代且采用最新技术
功能丰富度丰富正在发展中
易用性
资源占用较高较低
兼容性支持多种Linux发行版支持多种Linux发行版
特色功能网站管理、数据库管理、FTP管理等快速建站、高效管理、安全可靠等
价格免费版和付费版完全免费

综合以上信息,宝塔面板在社区支持和功能丰富度方面表现较好,适合需要广泛支持和丰富功能的用户。而1Panel则在安装速度、系统侵入性和安全性方面有所优势,尤其适合对资源消耗敏感和追求现代化管理的用户。如果是初学者或者对开源项目感兴趣,1Panel 可能是一个更好的选择。更多的功能和更广泛的社区支持,宝塔面板可能更适合。

Docker部署中间件


下面就开始中间件的部署教程啦~
这里的中间件的顺序并不代表部署顺序哦~
想部署哪个中间件就根据目录跳转就可以啦😺

部署 MYSQL ( Docker )

[Step 1] : 拉取 MYSQL 镜像

docker pull mysql:8.0.33

[Step 2] : 创建 MYSQL 相关目录 ➡️ 启动 MYSQL 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器

# 创建 MYSQL 相关目录
mkdir -p /data/mysql/{conf,log,data}

# 启动 MYSQL 容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=ovoAdmin123 -d mysql:8.0.33

# 拷贝文件 
docker cp mysql:/var/log /data/mysql
docker cp mysql:/etc/my.cnf /data/mysql/conf

# 授权文件夹
chmod 777 /data/mysql/{log,data}
chmod 644 /data/mysql/conf/my.cnf

# 删除容器
docker rm -f mysql

对应的目录下会创建有相应的文件夹

[Step 3] : 创建 MYSQL 容器

docker run -p 3306:3306 --name mysql \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e TZ=Asia/Shanghai --restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.33

相关参数解释 :

  1. docker run: 创建并运行一个容器, -d是让容器在后台运行
  2. -- name mysql: 给容器起一个名字, 名字必须唯一
  3. -v /data/mysql/log:/var/log/mysql : 挂载配置文件
  4. -p 3306:3306: 设置端口映射
  5. -e KEY = VALUE: 设置环境变量 -e就是environment的意思
  6. TZ=Asia/Shanghai : 设置数据库时区为东八区
  7. --restart=always : 自启动 ( 服务器重启后会自启动 )
  8. MYSQL_ROOT_PASSWORD : 数据库密码
  9. mysql:指定运行的镜像的名字, 后面可以跟版本号, 如果不跟默认最新版

[Step 4] : 查看 MYSQL 日志

docker logs -f mysql

没有 Error 就是启动成功了

[Step 5] : 使用工具连接 MYSQL


填写连接信息

测试连接成功 !

部署 Redis ( Docker )

[Step 1] : 拉取 Redis 镜像, 推荐使用 7 的 Redis 版本

docker pull redis:7.0.12

[Step 2] : 创建 Redis 相关目录 ➡️ 启动 Redis 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器

# 创建 Redis 相关目录
mkdir -p /data/redis/{conf,data,log}
touch /data/redis/log/redis.log
touch /data/redis/conf/redis.conf

# 启动 Redis 容器
docker run -p 6379:6379 --name redis -d redis:7.0.12

# 拷贝文件
docker cp redis:/data /data/redis
docker cp redis:/etc/redis.log /data/redis/log
docker cp redis:/etc/redis/redis.conf /data/redis/conf

# 授权文件夹
chmod -R 777 /data/redis/conf/redis.conf /data/redis/log/redis.log /data/redis/data

# 删除容器
docker rm -f redis

[Step 3] : 创建 Redis 容器

docker run --name redis \
-p 6379:6379 --restart=always \
-v /data/redis/data:/data \
-v /data/redis/log/redis.log:/etc/redis.log \
-v /data/redis/conf:/etc/redis/redis.conf \
-d redis:7.0.12 redis-server /etc/redis/redis.conf

相关参数解释 :


  1. docker run:这是 Docker 的命令,用于创建并运行一个新的容器。
  2. --name redis:这个参数设置了容器的名称为 redis,这样可以更容易地管理和访问该容器。
  3. -p 6379:6379:这表示端口映射,将宿主机的 6379 端口映射到容器的 6379 端口。
  4. --restart=always: 表示如果容器退出或 Docker 服务重启,Docker 都会自动重启该容器。
  5. -v /data/redis/data:/data:这是一个卷映射,将宿主机的 /data/redis/data 目录映射到容器内的 /data 目录。这用于持久化数据,即使容器被删除,数据仍然保存在宿主机上。
  6. -d:这个标志表示以守护进程模式运行容器,即容器将在后台运行。
  7. redis:7.0.12:这是要运行的 Docker 镜像的名称和版本号。
  8. redis-server /etc/redis/redis.conf:这是容器内运行的命令,redis-server 是启动 Redis 服务的命令,/etc/redis/redis.conf 指定了 Redis 服务使用的配置文件路径。

[Step 4] : 查看 Redis 日志

docker logs -f redis

[Step 4] : 用Redis连接工具查看是否成功部署 Redis


填写 Redis 连接信息

连接成功 !

部署 RabbitMQ ( Docker )

[Step 1] : 拉取 RabbitMQ 镜像

docker pull rabbitmq:3.8-management

[Step 2] : 创建目录 ➡️ 授权文件夹

# 创建目录
mkdir -p /data/rabbitmq/{conf,data,log}
# 授权文件夹
chmod -R 777 /data/rabbitmq/{conf,data,log}

[Step 3] : 创建 RabbitMQ 容器

docker run --restart=always --name rabbitmq \
-p 15672:15672 -p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=rabbit \
-e RABBITMQ_DEFAULT_PASS=rabbit \
-v /data/rabbitmq/data:/var/lib/rabbitmq \
-v /data/rabbitmq/conf:/etc/rabbitmq \
-v /data/rabbitmq/log:/var/log/rabbitmq \
-d rabbitmq:3.8-management

相关参数解释 :

  1. docker run: 启动一个新的 Docker 容器。
  2. --restart=always: 容器意外退出或 Docker 服务重启,Docker 将始终自动重新启动该容器。
  3. --name rabbitmq: 给容器命名为 rabbitmq,以便于管理和引用该容器。
  4. -p 15672:15672 -p 5672:5672: 端口映射。将主机的 5672 端口映射到容器的 5672 端口。
  5. -e RABBITMQ_DEFAULT_USER=rabbit: 指定默认的 RabbitMQ 用户名为 rabbit
  6. -e RABBITMQ_DEFAULT_PASS=rabbit: 指定默认的 RabbitMQ 密码为 rabbit
  7. -v /data/rabbitmq/data:/var/lib/rabbitmq: 数据持久化
  8. -v /data/rabbitmq/conf:/etc/rabbitmq: 配置文件持久化
  9. -v /data/rabbitmq/log:/var/log/rabbitmq: 日志文件持久化
  10. -d: 容器将在后台运行,而不是占用当前的终端会话。

[Step 4] : 查看 RabbitMQ 启动日志

docker logs -f rabbitmq

[Step 5] : 访问 RabbitMQ 控制台

服务器IP / 虚拟机静态IP : 15672
例如我的控制台地址为 : http://172.29.32.233:15672/

访问发现无法访问, 查看日志发现并没有开启控制台管理

开启控制台管理 : 进入 RabbitMQ 容器 ➡️ 开启控制台管理

# 进入 RabbitMQ 容器
docker exec -it rabbitmq bash
# 开启控制台管理
rabbitmq-plugins enable rabbitmq_management

[Step 6] : 登录 RabbitMQ 控制台

如果浏览器出现身份验证

进入 RabbitMQ 容器 ➡️ 添加管理员账号 ➡️ 授权账号管理员权限 ➡️ 查看账号列表

# 进入 RabbitMQ 容器
docker exec -it rabbitmq bash
# 添加管理员账号
rabbitmqctl add_user 用户名 密码
# 授权账号管理员权限
rabbitmqctl set_user_tags 用户名 administrator
# 查看账号列表
rabbitmqctl list_users

重启 RabbitMQ 容器 ➡️ 再次访问 ➡️ 成功访问 !

# 重启容器
docker restart rabbitmq

部署 ElasticSearch ( Docker )

[Step 1] : 拉取 ElasticSearch 镜像

docker pull elasticsearch:7.14.0

[Step 2] : 创建网络 ➡️ 创建目录 ➡️ 启动容器 ➡️ 拷贝文件 ➡️ 授权文件 ➡️ 删除容器

# 创建网络
docker network create elastic

# 创建目录
mkdir -p /data/elasticsearch/{config,data,logs,plugins}

# 启动容器
docker run --name elasticsearch --restart=always \
-p 9200:9200 -p 9300:9300 \
--privileged --network elastic \
-e "discovery.type=single-node" \
-d elasticsearch:7.14.0

# 拷贝文件
docker cp -a elasticsearch:/usr/share/elasticsearch/config/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/data/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/logs/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/plugins/ /data/elasticsearch

# 授权文件
chmod -R 777 /data/elasticsearch/{config,data,logs,plugins}

# 删除容器
docker rm -f elasticsearch

[Step 3] : 启动 ElasticSearch 容器

docker run --name elasticsearch --restart=always \
-p 9200:9200 -p 9300:9300 \
--privileged=true --network elastic \
-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-e "discovery.type=single-node" \
-e KEYSTORE_USERNAME=elastic \
-e KEYSTORE_PASSWORD=elastic \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /data/elasticsearch/config:/usr/share/elasticsearch/config \
-d elasticsearch:7.14.0

相关参数解释 :

  1. --name elasticsearch: 给这个容器起名为 elasticsearch,方便管理和识别。
  2. --restart=always: 设置容器的重启策略。当容器意外停止时,它将自动重启。
  3. -p 9200:9200 -p 9300:9300: 端口映射, 9200 端口用于 HTTP 访问, 9300 端口用于节点间的内部通信
  4. --privileged=true: 以特权模式运行容器,这赋予容器更多的系统权限,类似于主机上的 root 权限。
  5. --network elastic: 将容器加入名为 elastic 的 Docker 网络中,这可以方便容器之间的通信。
  6. -e ES_JAVA_OPTS="-Xms256m -Xmx512m": 用于配置 JVM 的最大最小堆内存。
  7. -e "discovery.type=single-node": 设置 Elasticsearch 为单节点模式
  8. -e KEYSTORE_USERNAME=elastic-e KEYSTORE_PASSWORD=elastic: 设置 Elasticsearch 的认证用户名和密码为 elastic,这些变量将用于存储在密钥库中的凭据。
  9. -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins: 插件持久化
  10. -v /data/elasticsearch/data:/usr/share/elasticsearch/data: 数据持久化
  11. -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs: 日志持久化
  12. -v /data/elasticsearch/config:/usr/share/elasticsearch/config: 配置持久化
  13. -d: 以后台模式(守护进程模式)运行容器。
  14. elasticsearch:7.14.0: 指定使用 elasticsearch:7.14.0 镜像启动容器。

[Step 4] : 访问 ElasticSearch 服务

# IP地址改成自己的
http://172.29.32.233:9200/

部署 Kibana ( Docker )

[Step 1] : 拉取 Kibana 镜像

docker pull kibana:7.14.0

[Step 2] : 创建目录 ➡️ 启动容器 ➡️ 拷贝文件 ➡️ 授权文件 ➡️ 删除容器

# 创建目录
mkdir -p /data/kibana/{conf,plugins}

# 启动容器
docker run --name kibana --restart=always \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
-e "I18N_LOCALE=zh-CN" \
-p 5601:5601 --network=elastic \
-d kibana:7.14.0

# 拷贝文件
docker cp kibana:/usr/share/kibana/config/kibana.yml /data/kibana/conf/

# 授权文件
chmod -R 777 /data/kibana/conf/kibana.yml /data/kibana/plugins

# 删除容器
docker rm -f kibana

[Step 3] : 启动 Kibana 容器

docker run --name kibana --restart=always \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
-e "I18N_LOCALE=zh-CN" \
-p 5601:5601 --network=elastic \
-v /data/kibana/plugins:/usr/share/kibana/plugins \
-v /data/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml \
-d kibana:7.14.0

相关参数解释 :

  1. docker run : 这是用来启动一个新的 Docker 容器的命令。
  2. --name kibana : 通过给容器指定一个名称,可以更方便地管理和操作容器。
  3. --restart=always : 无论容器因为什么原因停止,Docker 守护进程都会自动尝试重新启动它
  4. -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 : 告诉 Kibana 连接到名为 elasticsearch 的 Elasticsearch 服务,地址为 http://elasticsearch:9200
  5. -e "I18N_LOCALE=zh-CN" : 将 Kibana 的界面语言设置为简体中文(zh-CN)。
  6. -p 5601:5601 : 将宿主机的 5601 端口映射到容器的 5601 端口。
  7. --network=elastic : 将容器连接到名为 elastic 的 Docker 网络。这使得 Kibana 可以通过 Docker 网络与 elasticsearch 容器通信,而不需要通过宿主机网络。
  8. -v /data/kibana/plugins:/usr/share/kibana/plugins : 插件持久化
  9. -v /data/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml : 配置持久化
  10. -d kibana:7.14.0以守护进程模式运行容器(后台运行),并指定使用 kibana:7.14.0 镜像

[Step 4] : 访问 Kibana 控制台

# 换成自己的IP地址
http://172.29.32.233:5601/

部署 Minio ( Docker )

[Step 1] : 拉取 Minio 镜像

docker pull minio/minio

[Step 2] : 启动 Minio 容器

docker run --name minio --restart=always \
-p 9000:9000 -p 9090:9090 \
-e "MINIO_ROOT_USER=minio" \
-e "MINIO_ROOT_PASSWORD=admin123456" \
-v /data/minio/data:/data \
-v /data/minio/conf:/root/.minio \
-d minio/minio server \
/data --console-address ":9090" -address ":9000"

[Step 3] : 访问 Minio 控制台

# 换成自己的IP地址
http://172.29.32.233:9090/login

[Step 4] : 创建 Bucket 容器

[Step 4] : 修改访问权限为 public

部署 MongoDb ( Docker )

[Step 1] : 拉取 MongoDb 镜像

docker pull mongo

[Step 2] : 创建目录 ➡️ 创建容器 ➡️ 拷贝文件 ➡️ 授权文件 ➡️ 删除容器

# 创建目录
mkdir -p /data/mongo/{db,log}

# 创建容器
docker run --restart=always --name mongo \
-p 27017:27017 \
-e TZ=Asia/Shanghai \
--privileged=true \
-e MONGO_INITDB_ROOT_USERNAME=mongo \
-e MONGO_INITDB_ROOT_PASSWORD=mongo \
-d mongo

# 拷贝文件
docker cp mongo:/data/db /data/mongo/

# 授权文件
chmod -R 777 /data/mongo/{db,log}

# 删除容器
docker rm -f mongo

[Step 3] : 启动 MongoDb 容器

docker run --restart=always --name mongo \
-p 27017:27017 \
-e TZ=Asia/Shanghai \
-v /data/mongo/data:/data/db \
-v /data/mongo/log:/data/log \
--privileged=true \
-e MONGO_INITDB_ROOT_USERNAME=mongo \
-e MONGO_INITDB_ROOT_PASSWORD=mongo \
-d mongo

[Step 4] : 测试连接 MongoDb


填写连接信息

测试连接成功



部署 Nacos ( Docker )

[Step 1] : 拉取 Nacos 镜像

docker pull nacos/nacos-server:v2.1.1

[Step 2] : 创建目录 ➡️ 创建容器 ➡️ 拷贝文件 ➡️ 授权文件 ➡️ 删除容器

# 创建目录
mkdir -p /data/nacos/{conf,logs,data}

# 创建容器
docker run -p 8848:8848 --name nacos -d nacos/nacos-server:v2.1.1

# 拷贝文件
docker cp nacos:/home/nacos/conf /data/nacos
docker cp nacos:/home/nacos/data /data/nacos
docker cp nacos:/home/nacos/logs /data/nacos

# 授权文件
chmod 777 /data/nacos/{conf,logs,data}

# 删除容器
docker rm -f nacos

[Step 3] : 创建 Nacos 数据持久化数据库

nacos.sql

[Step 4] : 启动 Nacos 容器

MYSQL_SERVICE_HOST=192.168.100.233 : 修改为自己的MYSQL的IP
MYSQL_SERVICE_PASSWORD=123456 : 修改为自己的MYSQL密码
MYSQL_SERVICE_DB_NAME: 换成自己Nacos对应数据库名称

docker run -d \
-e MODE=standalone \
--privileged=true \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.100.233 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e TIME_ZONE='Asia/Shanghai' \
-v /data/nacos/logs:/home/nacos/logs \
-v /data/nacos/data:/home/nacos/data \
-v /data/nacos/conf:/home/nacos/conf \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--name nacos --restart=always nacos/nacos-server:v2.1.1

[Step 5] : 查看 Nacos 启动日志

docker logs -f nacos

[Step 6] : 访问 Nacos 控制台

# 换成自己的IP
http://192.168.100.233:8848/nacos/#/login

[Step 7] : 登录进入 Nacos 控制台

默认账号密码均为 nacos

部署 Kafka ( Docker )

Kafka对于zookeeper是强依赖,保存kafka相关的节点数据,所以安装Kafka之前必须先安装zookeeper

[Step 1] : 部署 Zookeeper ➡️ 拉取 Zookeeper 镜像 ➡️ 启动 Zookeeper 容器

docker pull zookeeper:3.4.14
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14

[Step 2] : 部署 Kafka 服务 ➡️ 拉取镜像 ➡️ 启动Kafka容器

# 拉取 Kafka 镜像
docker pull wurstmeister/kafka:2.12-2.3.1

# 启动Kafka容器 - 记得修改成自己的IP地址还有Kafka的端口
docker run -d --name kafka \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.100.233 \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.100.233:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.233:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
-p 9092:9092 wurstmeister/kafka:2.12-2.3.1

[Step 3] : 查看 Kafka 启动日志

docker logs -f kafka

部署 RocketMQ ( Docker )

[Step 1] : 拉取 RocketMQ 镜像

docker pull apache/rocketmq:5.1.0

[Step 2] : 创建容器共享网络 rocketmq

docker network create rocketmq

为什么要创建 docker 共享网络?

容器间通信 :创建一个 Docker 网络可以确保同一个网络中的容器可以通过容器名称进行通信,而不需要知道对方的 IP 地址。这对于需要相互通信的服务非常重要,比如 RocketMQ 的多个组件(如 NameServer 和 Broker)。
隔离性和安全性 :Docker 网络提供了一个隔离的网络环境,不同网络中的容器彼此隔离。这增加了安全性,防止外部或其他不相关的容器访问敏感服务。
简化配置 :使用 Docker 网络,配置变得更加简单。容器可以通过名称互相访问,无需担心容器重启后 IP 地址发生变化。

[Step 3] : 部署 NameServer 前提条件

创建目录 ➡️ 授予文件 ➡️ 创建容器 ➡️ 拷贝启动脚本 ➡️ 删除容器

# 创建目录
mkdir -p /data/rocketmq/nameserver/{bin,logs}

# 授权文件
chmod 777 -R /data/rocketmq/nameserver/*

# 创建容器
docker run -d \
--privileged=true --name rmqnamesrv \
apache/rocketmq:5.1.0 sh mqnamesrv

# 拷贝启动脚本
docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /data/rocketmq/nameserver/bin/

# 删除容器 NameServer
docker rm -f rmqnamesrv

[Step 4] : 启动容器NameServer

# 启动容器 NameServer
docker run -d --network rocketmq \
--privileged=true --restart=always \
--name rmqnamesrv -p 9876:9876 \
-v /data/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /data/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh \
apache/rocketmq:5.1.0 sh mqnamesrv

# 部分命令解释 : 
1. -e "MAX_HEAP_SIZE=256M" 设置最大堆内存和堆内存初始大小
2. -e "HEAP_NEWSIZE=128M"  设置新生代内存大小

# 查看启动日志
docker logs -f rmqnamesrv

[Step 5] : 查看 NameServer 启动日志

看到 ‘The Name Server boot success…’, 表示NameServer 已成功启动。

[Step 6] : 部署 Broker Proxy

创建挂载文件夹并授权

mkdir -p /data/rocketmq/broker/{store,logs,conf,bin}
chmod 777 -R /data/rocketmq/broker/*

[Step 7] : 创建**broker.cnf文件

vim /data/rocketmq/broker/conf/broker.conf

# nameServer 地址多个用;隔开 默认值null
# 例:127.0.0.1:6666;127.0.0.1:8888 
namesrvAddr = 192.168.100.100:9876
# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# Broker服务地址	String	内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1 = 192.168.100.100
# Broker角色
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 72
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# 禁用 tsl
tlsTestModeEnable = false

# 下面是没有注释的版本, 记得修改"namesrvAddr", "brokerIP1"的地址
namesrvAddr = 192.168.100.233:9876
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
brokerIP1 = 192.168.100.233
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
deleteWhen = 04
fileReservedTime = 72
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
tlsTestModeEnable = false

[Step 8] : 拷贝启动脚本

# 启动 Broker 容器
docker run -d \
--name rmqbroker --privileged=true \
apache/rocketmq:5.1.0 sh mqbroker

# 拷贝脚本文件
docker cp rmqbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /data/rocketmq/broker/bin

[Step 9] : 启动容器 Broker

# 删除容器 Broker
docker rm -f rmqbroker

# 启动容器 Broker
docker run -d --network rocketmq \
--restart=always --name rmqbroker --privileged=true \
-p 10911:10911 -p 10909:10909 \
-v /data/rocketmq/broker/logs:/root/logs \
-v /data/rocketmq/broker/store:/root/store \
-v /data/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /data/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
apache/rocketmq:5.1.0 sh mqbroker --enable-proxy -c /home/rocketmq/broker.conf

# 查看启动日志
docker logs -f rmqbroker

启动成功日志如下

[Step 10] : 部署RocketMQ控制台(rocketmq-dashboard)

拉取镜像

docker pull apacherocketmq/rocketmq-dashboard:latest

**[Step 11] : 启动容器 Rocketmq-dashboard **

docker run -d \
--restart=always --name rmq-dashboard \
-p 8080:8080 --network rocketmq \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
apacherocketmq/rocketmq-dashboard

[Step 12] : 查看启动日志

docker logs -f rmq-dashboard

[Step 13] : 访问RMQ控制台


http://192.168.100.233:8080/ ( IP地址改成自己的 )

[Step 14] : 查看创建的 RocketMQ

部署 Seata ( Docker )

[Step 1] : 创建对应的seata数据库, 也就是下面的的seata.sql文件

seata.sql

[Step 2] : 拉取 Seata 镜像

docker pull seataio/seata-server:1.5.2

[Step 3] : 创建目录 ➡️ 创建容器 ➡️ 拷贝文件 ➡️ 授权文件 ➡️ 删除容器

# 创建目录
mkdir -p /data/seata/conf

# 创建容器
docker run -d -p 8091:8091 -p 7091:7091 --name seata seataio/seata-server:1.5.2

# 拷贝文件
docker cp seata:/seata-server/resources/. /data/seata/conf

# 授权文件
chmod 777 /data/seata/conf

# 删除容器
docker rm -f seata

[Step 4] : 修改配置文件application.yml

这里配置Nacos和mysql的配置, 所以要保证这两个服务正常启动
application.yml中需要修改的地方, 换成自己的Nacos地址
Mysql数据库密码换成自己的, 其他保持跟我的一样就可以啦~

server:
  port: 7091

spring:
  application:
    name: seata-server

logging:
  config: classpath:logback-spring.xml
  file:
    path: ${log.home:${user.home}/logs/seata}
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash

console:
  user:
    username: seata
    password: seata

seata:
  config:
    type: nacos
    nacos:
      server-addr: 192.168.100.233:8848
      namespace:
      group: DEFAULT_GROUP
      username: nacos
      password: nacos
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: 192.168.100.233:8848
      group: DEFAULT_GROUP
      namespace:
      cluster: default
      username: nacos
      password: nacos
  store:
    mode: db
    db:
      datasource: druid
      db-type: mysql
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://192.168.100.233:3306/pmhub-seata?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
      user: root
      password: 123456
      min-conn: 10
      max-conn: 100
      global-table: global_table
      branch-table: branch_table
      lock-table: lock_table
      distributed-lock-table: distributed_lock
      query-limit: 1000
      max-wait: 5000
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/metadata/v1/**

在Nacos中新建 pmhub-seata-dev.properties 配置

#For details about configuration items, see https://seata.io/zh-cn/docs/user/configurations.html
#Transport configuration, for client and server
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableTmClientBatchSendRequest=false
transport.enableRmClientBatchSendRequest=true
transport.enableTcServerBatchSendResponse=false
transport.rpcRmRequestTimeout=30000
transport.rpcTmRequestTimeout=30000
transport.rpcTcRequestTimeout=30000
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3
transport.serialization=seata
transport.compressor=none

#Transaction routing rules configuration, only for the client
service.vgroupMapping.default_tx_group=default
#If you use a registry, you can ignore it
service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false
service.disableGlobalTransaction=false

#Transaction rule configuration, only for the client
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=true
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.rm.sagaJsonParser=fastjson
client.rm.tccActionInterceptorOrder=-2147482648
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
client.tm.interceptorOrder=-2147482648
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k
#For TCC transaction mode
tcc.fence.logTableName=tcc_fence_log
tcc.fence.cleanPeriod=1h

#Log rule configuration, for client and server
log.exceptionRate=100

#Transaction storage configuration, only for the server. The file, db, and redis configuration values are optional.
store.mode=db
store.lock.mode=db
store.session.mode=db
#Used for password encryption
store.publicKey=

#If `store.mode,store.lock.mode,store.session.mode` are not equal to `file`, you can remove the configuration block.
store.file.dir=file_store/data
store.file.maxBranchSessionSize=16384
store.file.maxGlobalSessionSize=512
store.file.fileWriteBufferCacheSize=16384
store.file.flushDiskMode=async
store.file.sessionReloadReadSize=100

#These configurations are required if the `store mode` is `db`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `db`, you can remove the configuration block.
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://192.168.100.100:3306/pmhub-seata?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
store.db.user=root
store.db.password=xxxxxx
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000

#These configurations are required if the `store mode` is `redis`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `redis`, you can remove the configuration block.
store.redis.mode=single
store.redis.single.host=127.0.0.1
store.redis.single.port=6379
store.redis.sentinel.masterName=
store.redis.sentinel.sentinelHosts=
store.redis.maxConn=10
store.redis.minConn=1
store.redis.maxTotal=100
store.redis.database=0
store.redis.password=
store.redis.queryLimit=100

#Transaction rule configuration, only for the server
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.distributedLockExpireTime=10000
server.xaerNotaRetryTimeout=60000
server.session.branchAsyncQueueSize=5000
server.session.enableBranchAsyncRemove=false
server.enableParallelRequestHandle=false

#Metrics configuration, only for the server
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

这里的数据库IP地址和密码记得换成自己的哦~

启动Seata容器 -SEATA_IP=192.168.100.100改成自己服务器的地址

docker run --name seata \
-p 8091:8091 \
-p 7091:7091 \
-e SEATA_IP=192.168.100.100 \
-v /data/seata/conf:/seata-server/resources \
--privileged=true \
-d \
seataio/seata-server:1.5.2

启动成功如图

部署 Sentinel ( Docker )

一行命令搞定
账号密码可自己定制, AUTH_USERNAME / AUTH_PASSWORD

docker run -d \
-p 8090:8858 \
--name sentinel \
--restart=always \
-e AUTH_USERNAME=sentinel \
-e AUTH_PASSWORD=sentinel \
bladex/sentinel-dashboard:1.8.5

查看启动 Sentinel 日志

访问 http://192.168.100.233:8090 部署在服务器换成服务器IP即可

部署 SkyWalking ( Docker )

  • 安装ElasticSearch7
  • 安装Skywalking-OAP
  • 安装Skywalking UI

[Step 1] : ElasticSearch 安装

docker pull elasticsearch:7.14.0
docker run --restart=always -d \
--name elasticsearch --privileged=true \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-e KEYSTORE_USERNAME=elastic \
-e KEYSTORE_PASSWORD=elastic \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-p 9200:9200 -p 9300:9300 \
elasticsearch:7.14.0

[Step 2] : Skywalking OAP安装

docker pull apache/skywalking-oap-server:8.6.0-es7
docker run -d \
--name skywalking-oap --restart always \
-p 11800:11800 -p 12800:12800 \
--privileged=true \
-e TZ=Asia/Shanghai \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=192.168.100.233:9200 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-oap-server:8.6.0-es7

说明 :
-e SW_STORAGE=elasticsearch7: 存储服务采用ElasticSearch7
-e SW_STORAGE_ES_CLUSTER_NODES=192.168.100.233:9200:存储服务路径(IP Port)

Skywalking UI安装


docker pull apache/skywalking-ui:8.6.0
docker run -d \
--name skywalking-ui --restart always \
-p 8097:8080 --privileged=true \
--link skywalking-oap:skywalking-oap \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=192.168.100.233:12800 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:8.6.0

说明 :
-p 8097:8080 : Skywalking UI映射端口为8091
-e SW_OAP_ADDRESS=192.168.100.233:12800: 指定Skywalking OAP服务地址

访问http://192.168.100.233:8097改成自己的IP

到这里SkyWalking就部署完毕了.


部署 JDK11 ( Docker )

[Step 1] : 下载JDK11 - JDK 11 | Oracle 甲骨文官网

[Step 2] : jdk11上传服务器 /root/jdk11 可自行创建文件夹


进入目录 /root/jdk11解压文件

tar -zxvf jdk-11.0.22_linux-x64_bin.tar.gz
  • **解压后 进入/root/jdk11/jdk-11.0.22 **
    创建 jre 文件
./bin/jlink --module-path jmods --add-modules java.desktop --output jre

[Step 3] : 设置环境变量

cd ~
vim ~/.bashrc     #ubuntu #分开两条命名执行 按i进入INSERT模式
vim /etc/profile	#centos

添加如下配置

export JAVA_HOME=/root/jdk11/jdk-11.0.22
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

按Esc键,输入 :wq! 保存并退出。

[Step 4] : 让配置生效

source ~/.bashrc     #ubuntu
source /etc/profile  #centos

[Step 5] : 查看jdk是否生效

java -version

部署 EMQX ( Docker )

[Step 1] : 拉取 EMQX 镜像

docker pull emqx/emqx:latest

[Step 2] : 创建目录 ➡️ 创建容器 ➡️ 拷贝文件 ➡️ 授权文件 ➡️ 删除容器

# 创建目录
mkdir -p /data/emqx/{etc,data,log}

# 创建容器
docker run -d --name emqx -p 1883:1883 -p 18083:18083 emqx/emqx:latest

# 拷贝文件
docker cp emqx:/opt/emqx/etc /data/emqx/
docker cp emqx:/opt/emqx/data /data/emqx/

# 授权文件
chmod -R 777 /data/emqx/{data,etc,log}

# 删除容器
docker rm -f emqx

[Step 3] : 启动 EMQX 容器

docker run -d --name emqx \
-p 1883:1883 -p 8883:8883 -p 28083:8083 -p 8084:8084 -p 18081:8081 -p 18083:18083 \
-e TZ=Asia/Shanghai \
-v /data/emqx/etc:/opt/emqx/etc \
-v /data/emqx/data:/opt/emqx/data \
-v /data/emqx/log:/opt/emqx/log emqx/emqx:latest

[Step 4] : 查看启动日志

[Step 5] : 访问 EMQX 控制台 - 默认账号密码 admin / public

[Step 6] : 修改 EMQX 登录密码

[Step 7] : 成功访问 EMQX 控制台

Windows本地部署中间件

敬请期待 …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值