005 CentOS 7.9 RabbitMQ安装及配置
https://github.com/rabbitmq/rabbitmq-server/releases
https://www.rabbitmq.com/docs/download
https://packagecloud.io/rabbitmq/rabbitmq-server
https://www.erlang-solutions.com/downloads/
https://www.erlang.org/
文章目录
- 卸载erl
- erl版本安装与下载版本不匹配
- 正式安装配置
- 下载延时插件
卸载erl
在 CentOS 7.9 上卸载 Erlang 并清除缓存,您可以按照以下步骤操作:
卸载 Erlang
卸载 Erlang 软件包:
打开终端,并使用以下命令卸载 Erlang:
sudo yum remove erlang
如果有其他与 Erlang 相关的软件包,您也可以使用 yum 将其卸载。
卸载 Erlang Solutions 仓库(如果已安装):
如果您之前添加了 Erlang Solutions 仓库,您也可以将其卸载:
sudo yum remove erlang-solutions-repo
清除缓存
在卸载 Erlang 之后,您可能还想要清除 yum 缓存和其他相关缓存。
清除 YUM 缓存:
使用以下命令来清除 yum 缓存:
sudo yum clean all
这个命令会清除所有已下载的包和旧的 headers。
删除缓存的 RPM 文件:
如果您还想删除 /var/cache/yum 目录下缓存的 RPM 文件,可以使用:
sudo rm -rf /var/cache/yum
注意:这将删除所有 yum 缓存的 RPM 包,不仅仅是与 Erlang 相关的。
删除其他可能的 Erlang 遗留文件:
有时,卸载过程可能不会删除所有的配置文件或数据文件。如果您想彻底删除 Erlang 的所有痕迹,可以手动检查并删除这些文件。例如:
sudo find / -name "*erlang*" -type f -delete
警告:这个 find 命令非常强大,并且如果使用不当可能会删除重要文件。请务必谨慎使用,并确保您知道自己在做什么。通常,只删除 /etc/ 和 /var/ 下的 Erlang 配置文件就足够了。
验证卸载
完成上述步骤后,您可以使用以下命令来验证 Erlang 是否已成功卸载:
erl -version
如果 Erlang 已成功卸载,该命令应该会显示一个错误消息,指示 erl 命令未找到。
which erl
yum list installed | grep erlang
sudo yum remove $(yum list installed | grep erlang | awk '{print $1}')
这个命令的工作原理如下:
yum list installed | grep erlang:列出所有已安装的包,并通过 grep 过滤出包含 “erlang” 的包。
awk ‘{print $1}’:使用 awk 提取每行的第一个字段,即包名。
$(…):命令替换,执行括号内的命令,并将其输出作为外部命令的参数。
sudo yum remove:使用提取出的包名列表作为参数,执行卸载操作。
请注意,在执行此命令之前,请确保理解其将卸载所有与 Erlang 相关的包,并且这可能对依赖 Erlang 的其他软件或服务产生影响。
为了确认 Erlang 是否已经完全卸载,你可以按照以下步骤操作:
检查 Erlang 包是否已安装:
你可以再次运行 yum list installed | grep erlang 来确认是否还有 Erlang 相关的包被安装。
检查 /usr/bin/erl 文件:
既然错误信息提示 /usr/bin/erl 找不到,你可以确认一下这个文件是否真的不存在了,使用 ls /usr/bin/erl 命令查看。
清除 shell 的哈希表:
如果你的 shell 是 bash,运行 hash -r
可以清除已缓存的命令位置,这样当你再次尝试运行 erl 时,shell 会重新搜索 PATH 环境变量中指定的目录来找到该命令。
检查 PATH 环境变量:
确认你的 PATH 环境变量中没有包含指向已卸载 Erlang 的路径。你可以通过 echo $PATH 来查看当前的 PATH 设置。
重启终端或系统:
有时简单地重启你的终端会话或整个系统可以清除任何残留的引用或缓存。
检查其他配置文件:
有时 .bashrc、.bash_profile、.profile 或其他 shell 初始化脚本中可能包含了对 Erlang 的引用。检查这些文件,并删除或注释掉任何与 Erlang 相关的行。
如果你完成了上述步骤,并且确认 Erlang 已经完全从你的系统中移除,但问题仍然存在,那么可能是其他系统配置或第三方软件导致的问题。不过,通常情况下,清除 shell 的哈希表和检查环境变量就可以解决问题。
rpm -ql esl-erlang _25.0.3_1~centos~7_x86_64.rpm | grep erl
ls /usr/lib64/erlang
ls /usr/local/lib/erlang
export ERLANG_HOME=/usr/lib64/erlang
export PATH=$PATH:$ERLANG_HOME/bin
sudo find / -name "*erlang*"
#这里的 -exec 选项允许你对 find 命令找到的每个文件或目录执行指定的命令。在这个例子中,rm -rf {} 是被执行的命令,其中 {} 是一个占位符,代表 find 命令找到的每个文件或目录的路径。\; 表示 -exec 参数的结束。sudo find / -name "*erlang*" -exec rm -rf {} \;
确定Shell类型
echo $SHELL
编辑对应的Shell配置文件:
如果使用的是 bash,可以编辑 bash_completion.sh 或创建一个新的 .sh 脚本(例如 erlang.sh)来设置Erlang相关的环境变量。
如果使用的是 csh 或 tcsh,可以编辑 csh.local 或创建一个新的 .csh 脚本。
设置Erlang环境变量:
在选定的脚本文件中,需要添加Erlang的环境变量。例如,如果Erlang安装在 /usr/lib64/erlang,可以添加如下内容:
对于 bash:
export ERLANG_HOME=/usr/lib64/erlang
export PATH=$PATH:$ERLANG_HOME/bin
对于 csh 或 tcsh:
setenv ERLANG_HOME /usr/lib64/erlang
set path = ($path $ERLANG_HOME/bin)
使配置生效:
对于 bash,可以通过运行 source /etc/profile.d/脚本名.sh 或重新打开一个终端窗口来使更改生效。
对于 csh 或 tcsh,运行 source /etc/profile.d/脚本名.csh 或重新打开终端。
测试Erlang:
输入 erl 来测试Erlang是否能够正确启动。
请注意,如果Erlang安装在非标准路径下,需要确保该路径是正确的,并将其替换到上述环境变量设置中。
如果不确定Erlang的确切安装位置,可以使用之前提到的 find 命令来搜索 erl 可执行文件的位置,或者使用 rpm -ql 命令来列出Erlang软件包的安装文件,从而确定其安装路径。
此外,如果系统是多用户环境,建议在用户的个人Shell配置文件中设置这些环境变量(如 ~/.bashrc、~/.bash_profile、~/.cshrc 等),以避免影响其他用户的环境。如果您是系统管理员,并且希望为所有用户设置这些环境变量,则可以按照上述步骤在 /etc/profile.d/ 目录下进行操作。
erl版本安装与下载版本不匹配
如果您已经下载了Erlang 26的版本,并且确信安装过程中没有出现问题,但erl -version命令仍然显示Erlang版本为14.2.5,那么可能是以下几个原因导致的:
多个Erlang版本冲突:您的系统中可能安装了多个版本的Erlang,而erl命令可能仍然指向旧版本的Erlang。
环境变量未正确设置:尽管您在.bashrc中添加了Erlang 26的bin目录到PATH环境变量,但这个变更可能没有被正确应用,或者您可能在另一个shell环境中,该环境没有加载新的.bashrc设置。
安装问题:Erlang 26可能没有正确安装,或者安装后的可执行文件没有被放置在预期的目录中。
为了解决这个问题,您可以尝试以下步骤:
确认Erlang 26的安装位置:检查Erlang 26是否确实安装在/usr/tools/erlang目录下。您可以通过ls /usr/tools/erlang命令来确认。
检查PATH环境变量:在终端中输入echo $PATH来检查当前的PATH环境变量。确保/usr/tools/erlang/bin在PATH中的位置优先于旧版本Erlang的路径。
重新加载.bashrc:如果您在.bashrc中做了更改,可以尝试重新加载它,方法是运行source ~/.bashrc或者在新的终端会话中检查。
使用绝对路径运行Erlang:尝试使用Erlang 26的绝对路径来运行erl -version,例如/usr/tools/erlang/bin/erl -version,以确认是否是路径问题。
卸载旧版本的Erlang:如果系统中存在多个Erlang版本,并且您确定不再需要旧版本,可以考虑卸载它,以避免任何混淆。
重新登录或重启:有时候,简单地重新登录您的用户账户或重启系统可以确保所有的环境变量更改生效。
# 查找并删除可能存在的Erlang相关的其他文件和目录
sudo find / -name "*erlang*" -type d -exec rm -rf {} +
使用软链接:
如果 RabbitMQ 的安装脚本无法识别非标准路径下的 Erlang,您可以尝试在 /usr/bin 或其他在系统 PATH 中的目录下创建指向 /usr/tools/erlang/bin/erl 的软链接。例如:
bash
sudo ln -s /usr/tools/erlang/bin/erl /usr/bin/erl
正式安装配置
- 安装 Erlang
确保移除旧版本的 Erlang(如果有),然后安装最新的符合 RabbitMQ 版本要求的 Erlang:
sudo yum remove erlang
sudo yum install -y epel-release
sudo yum install -y https://packages.erlang-solutions.com/erlang-solutions-2.0-1.noarch.rpm
sudo yum install -y erlang
- 配置 yum 仓库
创建 yum 仓库配置文件来确保使用官方仓库:
sudo vi /etc/yum.repos.d/rabbitmq_erlang.repo
添加以下内容:
[rabbitmq_erlang]
name=RabbitMQ Erlang Repository
baseurl=https://packages.erlang-solutions.com/rpm/centos/7/x86_64/
gpgcheck=1
gpgkey=https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
enabled=1[rabbitmq_rabbitmq-server]
name=RabbitMQ Server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
gpgcheck=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
enabled=1
- 清理并更新 yum 缓存
sudo yum clean all
sudo yum makecache
- 安装 RabbitMQ
使用 yum 安装 RabbitMQ:
sudo yum install -y rabbitmq-server
- 启动 RabbitMQ 服务并设置开机自启动
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
- 配置防火墙
确保防火墙允许 RabbitMQ 的端口(5672 和 15672):
sudo firewall-cmd --permanent --add-port=5672/tcp
sudo firewall-cmd --permanent --add-port=15672/tcp
sudo firewall-cmd --reload
- 启用 RabbitMQ 管理插件
启用 RabbitMQ 管理插件以便通过浏览器进行管理:
sudo rabbitmq-plugins enable rabbitmq_management
- 创建管理员用户并配置权限
创建新的管理员用户,以允许远程访问:
sudo rabbitmqctl add_user myuser mypassword
sudo rabbitmqctl set_user_tags myuser administrator
sudo rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*"
- 配置环境变量(可选)
如果需要配置环境变量,编辑 ~/.bash_profile 或 ~/.bashrc 文件:
export PATH=$PATH:/usr/lib/rabbitmq/bin
然后应用更改:
source ~/.bash_profile
- 访问 RabbitMQ 管理界面
在浏览器中访问 http://<your_server_ip>:15672/,使用创建的用户 myuser 和 mypassword 登录。
通过这些步骤,你应该能够在 CentOS 7.9 上成功安装并配置 RabbitMQ 最新版本,并且能够远程访问和管理 RabbitMQ 实例。如果在执行上述步骤时遇到问题,请检查每个步骤的执行结果,并确保网络连接正常。
下载延时插件
- 下载 RabbitMQ 延迟消息插件
从 RabbitMQ 的 GitHub 页面下载插件:
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.11.4/rabbitmq_delayed_message_exchange-3.11.4.ez
- 将插件移动到 RabbitMQ 的插件目录
将下载的插件文件移动到 RabbitMQ 的插件目录:
sudo mv rabbitmq_delayed_message_exchange-3.11.4.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.12.13/plugins/
- 启用插件
启用 RabbitMQ 延迟消息插件:
sudo rabbitmq-plugins enable rabbitmq_delayed_message_exchange
- 重启 RabbitMQ 服务
重启 RabbitMQ 服务以应用更改:
sudo systemctl restart rabbitmq-server
- 验证插件是否启用
你可以使用以下命令查看启用的插件列表,确保延迟消息插件已启用:
sudo rabbitmq-plugins list
- 访问 RabbitMQ 管理界面
在浏览器中访问 http://<your_server_ip>:15672/,使用你的管理员用户 myuser 和 mypassword 登录,并验证插件配置。
相关文章:
005 CentOS 7.9 RabbitMQ安装及配置
https://github.com/rabbitmq/rabbitmq-server/releases https://www.rabbitmq.com/docs/download https://packagecloud.io/rabbitmq/rabbitmq-server https://www.erlang-solutions.com/downloads/ https://www.erlang.org/ 文章目录 卸载erlerl版本安装与下载版本不匹配正…...

Xcode 15 libarclite 缺失问题
升级到Xcode 15运行项目报错,报错信息如下: SDK does not contain libarclite at the path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a; try increasing the minimum d…...

绘画智能体分享
这是您请求的故宫雪景图,角落有一只可爱的胖猫,采用了水墨画风格,类似于张大千的作品。希望您喜欢这幅画! 🎨 选项 1【转变风格】——将这幅画转变为梵高的后印象派风格,增添一些梵高特有的笔触和色彩。 &…...
7_2、C++程序设计进阶:数据共享
数据与函数 数据与函数局部变量全局变量类的数据成员 类的静态成员静态数据成员静态函数成员 友元友元函数友元类 函数之间实现数据共享有以下几种方式:局部变量、全局变量、类的数据成员、类的静态成员和友元。 如何共享局部变量呢? 在主调函数和被调…...
d2-crud-plus 使用小技巧(五)—— 搜索时间(或下拉列表)后,点击X清除按钮后返回值为null,导致异常
问题 使用vue2elementUId2-crud-plus,时间组件自动清除按钮,点击清除按钮后对应的值被设置为null,原本应该是空数组([]),导致数据传到后端后报错。不仅适用于搜索,表单一样有效果。 解决方法 …...

ChatGPT成知名度最高生成式AI产品,使用频率却不高
5月29日,牛津大学、路透社新闻研究所联合发布了一份生成式AI(AIGC)调查报告。 在今年3月28日—4月30日对美国、英国、法国、日本、丹麦和阿根廷的大约12,217人进行了调查,深度调研他们对生成式AI产品的应用情况。 结果显示&…...

R19 NR移动性增强概况
随着5G/5G-A技术不断发展和业务需求的持续增强,未来网络的部署将不断向高频演进。高频小区的覆盖范围小,用户将面临更为频繁的小区选择、重选、切换等移动性过程。 为了提升网络移动性能和保障用户体验,移动性增强一直是3GPP的热点课题。从NR…...

C语言:如何写文档注释、内嵌注释、行块注释?
技术答疑流程 扫描二维码,添加个人微信;支付一半费用,获取答案;如果满意,则支付另一半费用; 知识点费用:10元 项目费用:如果有项目任务外包需求,可以微信私聊...
Turtle中circle用法详解
在Python的Turtle图形库中,circle方法是一个非常灵活的工具,它允许我们以简单的方式绘制圆或圆的一部分。本文将深入探讨circle方法,特别关注radius和extent参数的用途及其正负值的意义。 一、circle方法概览 首先,让我们了解一…...

stack和queue(1)
一、stack的简单介绍和使用 1.1 stack的介绍 1.stack是一种容器适配器,专门用在具有先进后出,后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入和弹出操作。 2.stack是作为容器适配器被实现的,容器适配器即是…...

前端3剑客(第1篇)-初识HTML
100编程书屋_孔夫子旧书网 当今主流的技术中,可以分为前端和后端两个门类。 前端:简单的理解就是和用户打交道 后端:主要用于组织数据 而前端就Web开发方向来说, 分为三门语言, HTML、CSS、JavaScript 语言作用HT…...

植被变化趋势线性回归以及可视化
目录 植被变化线性回归ee.Reducer.linearFit().reduce()案例:天水市2004-2023年EVI线性回归趋势在该图中,使用了从红色到蓝色的渐变来表示负趋势到正趋势。红色代表在某段时间中,植被覆盖减少,绿色表示持平,蓝色表示植被覆盖增加。 植被变化线性回归 该部分参考Google…...

大话设计模式学习笔记
目录 工厂模式策略模式备忘录模式(快照模式)代理模式单例模式迭代器模式访问者模式观察者模式解释器模式命令模式模板方法模式桥接模式适配器模式外观模式享元模式原型模式责任链模式中介者模式装饰模式状态模式 工厂模式 策略模式 核心:封装…...
MiniMax公司介绍
MiniMax是一家专注于通用人工智能技术的科技公司,成立于2021年12月。公司致力于成为通用人工智能时代基础设施建设者和内容应用创造者,积极投身于中国人工智能技术高速发展的时代大潮。MiniMax的团队由多位在人工智能领域有着丰富经验的专家组成…...
lucene 9.10向量检索基本用法
Lucene 9.10 中的 KnnFloatVectorQuery 是用来执行最近邻(k-Nearest Neighbors,kNN)搜索的查询类,它可以在一个字段中搜索与目标向量最相似的k个向量。以下是 KnnFloatVectorQuery 的基本用法和代码示例。 1. 索引向量字段 首先…...

【2023百度之星初赛】跑步,夏日漫步,糖果促销,第五维度,公园,新材料,星际航行,蛋糕划分
目录 题目:跑步 思路: 题目:夏日漫步 思路: 题目:糖果促销 思路: 题目:第五维度 思路: 题目:公园 思路: 新材料 思路: 星际航行 思路…...

vs2019 QT UI 添加新成员或者控件代码不提示问题解决方法
右键点击头文件,添加ui的头文件 添加现有项 找到uic目录的头文件 打开ui,QtWidgetsApplication2.ui,进行测试 修改一个名字: 重点: 设置一个布局: 点击生成解决方案: 以后每次添加控件后,记得点击保存 这样…...

【面试八股总结】MySQL事务:事务特性、事务并行、事务的隔离级别
参考资料:小林coding 一、事务的特性ACID 原子性(Atomicity) 一个事务是一个不可分割的工作单位,事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。原子性是通过 undo …...
STL用法总结
文章目录 vector构造常用函数遍历适用情形注意事项使用迭代器删除可能会出现的错误 Set & MultiSet(不能用sort,会自动排序)构造常用函数删除,查找遍历 unordered_set(不排序集合),unordered_multiset Map & M…...

他人项目二次开发——慎接
接了一个朋友的项目——开发及运营迭代差不多2年多了,整体样子移动端和PC都能正常使用,但后期的扩展性及新功能添加出现瓶颈。 因此给了一部分钱,让我接手来开发——重构架构。 背景说明 朋友公司的技术人员是我帮忙招聘的,相关技…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...