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都能正常使用,但后期的扩展性及新功能添加出现瓶颈。 因此给了一部分钱,让我接手来开发——重构架构。 背景说明 朋友公司的技术人员是我帮忙招聘的,相关技…...

k8s之PV、PVC
文章目录 k8s之PV、PVC一、存储卷1、存储卷定义2、存储卷的作用2.1 数据持久化2.2 数据共享2.3 解耦2.4 灵活性 3、存储卷的分类3.1 emptyDir存储卷3.1.1 定义3.1.2 特点3.1.3 用途3.1.4 示例 3.2 hostPath存储卷3.2.1 定义3.2.2 特点3.2.3 用途3.2.4 示例 3.3 NFS存储卷3.3.1 …...

新人学习笔记之(JavaScript作用域)
一、作用域 1.通常来说,一段程序代码中所用的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突 二、变量的作用域 1.变…...

图论第一天
在单位摸鱼,地铁上看了个开始,图论开了个头,后面也希望能往这个方向上转,努努力吧。 一周没做题啦,后面坚持继续做题+二刷,接着记录每一天!!!加油࿰…...

革新风暴来袭:报事报修系统小程序如何重塑报事报修体验?
随着数字化、智能化的发展,已经应用在我们日常生活和工作的方方面面。那么,你还在为物业报修而头疼吗?想象一下,家里的水管突然爆裂,你急忙联系物业,时常面临物业电话忙音、接听后才进行登记繁琐的报修单、…...

linux各个日志的含义 以及使用方法
在Linux系统上,系统日志文件通常存储在/var/log/目录下。可以通过查看这些日志文件来了解系统的操作记录、错误信息和其他相关信息。以下是一些常见的系统日志文件以及它们包含的信息: /var/log/messages:这是一个常见的系统日志文件…...

详解 Spark 核心编程之 RDD 持久化
一、问题引出 /** 案例:对同一份数据文件分别做 WordCount 聚合操作和 Word 分组操作 期望:针对数据文件只进行一次分词、转换操作得到 RDD 对象,然后再对该对象分别进行聚合和分组,实现数据重用 */ object TestRDDPersist {def …...

创新融合,5G+工业操作系统引领未来工厂
为加速企业完成生产制造自动化和经营管理自动化,从而走向未来工厂,蓝卓不断探索supOS工业操作系统与前沿技术的的创新融合,而5G技术为工业操作系统提供了更多元化的赋能手段和想象空间。目前,supOS围绕生产、安全、质检、监控等领…...

自监督表示学习和神经音频合成实现语音修复
关键词:语音修复、自监督模型、语音合成、语音增强、神经声码器 语音和/或音频修复的目标是增强局部受损的语音和/或音频信号。早期的工作基于信号处理技术,例如线性预测编码、正弦波建模或图模型。最近,语音/音频修复开始使用深度神经网络&a…...

【论文复现|智能算法改进】融合黑寡妇思想的蜣螂优化算法
目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】蜣螂优化算法(DBO)原理及实现 2.改进点 ICMIC混沌映射 z n 1 sin ( α z n ) , α ∈ ( 0 , ∞ ) (1) z_{n1}\sin(\frac{\alpha}{z_n}),\alpha\in(0,\infty)\ta…...

Unity + 雷达 粒子互动(待更新)
效果预览: 花海(带移动方向) VFX 实例 脚本示例 使用TouchScript,计算玩家是否移动,且计算移动方向 using System.Collections; using System.Collections.Generic; using TouchScript; using TouchScript.Pointers; using UnityEngine; using UnityEngine.VFX;public …...