不灭的火

革命尚未成功,同志仍须努力下载JDK17

作者:AlbertWen  添加时间:2025-04-06 01:11:16  修改时间:2025-04-28 18:00:06  分类:04.RabbitMQ  编辑

1、RabbitMQ简介

RabbitMQ是一个开源的消息代理软件,实现了高级消息队列协议(AMQP),用于在不同的应用程序之间进行异步通信。RabbitMQ是一个由Erlang语言编写的消息中间件,它遵循AMQP协议,提供了稳定可靠的消息传输服务。

2、RabbitMQ 版本确认和安装包下载

RabbitMQ依赖于Erlang语言,所以我们安装RabbitMQ必须要先安装Erlang,RabbitMQ和Erlang有版本对应关系,我们必须选择合适的版本才能安装成功,访问链接: 官网版本对照,查看版本对应关系。

选定版本后访问链接下载安装包:官方RabbitMQ安装包下载 、官方Erlang-RPM安装包下载

本文选择 RabbitMQ 3.13.7 版本 和 Erlang 26.2.x

2.1 编译安装 Erlang 26.2.x

注意:RabbitMQ团队也维护了一套自己的Erlang版本,算是针对Erlang官方版的一个精简版本,只保留了RabbitMQ可能会使用到的功能模块。

附:Erlang 官方的 OTP 与 RabbitMQ 团队维护的 Erlang-RPM 的区别

本来打算下载Erlang-RPM安装包来搭建Erlang语言环境,结果报错,提示:OpenSSL 依赖的版本不对。无赖之下改用 Erlang源码编译安装:

(1) 安装依赖库

Erlang 需要一些依赖库才能成功编译和运行,安装这些依赖库,执行命令:

yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget

(2) 下载 Erlang 安装包

从官方网站下载 Erlang 26.2.5.10 的源代码包,执行命令:

wget https://github.com/erlang/otp/releases/download/OTP-26.2.5.10/otp_src_26.2.5.10.tar.gz

(3) 解压并编译安装

# 解压下载的源代码包
tar -xzvf ./otp_src_26.2.5.10.tar.gz

# 进入解压后的目录
cd ./otp_src_26.2.5.10

# 配置安装选项
./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac

# 编译并安装
make && make install

(4) 配置环境变量

vim /etc/profile

在文件末尾添加以下内容:

PATH=$PATH:/usr/local/erlang/bin

使配置生效:

source /etc/profile

(5) 验证安装

[root@CentOS7-A  tmp]# erl
Erlang/OTP 26 [erts-14.2.5.9] [source] [64-bit] [smp:3:3] [ds:3:3:10] [async-threads:1]

Eshell V14.2.5.9 (press Ctrl+G to abort, type help(). for help)
1>

(6) 配置命令行快捷方式(注意:开机启动systemctl脚本中会用到)

ln -sf /usr/local/erlang/bin/ct_run  /usr/local/bin/
ln -sf /usr/local/erlang/bin/dialyzer /usr/local/bin/
ln -sf /usr/local/erlang/bin/epmd /usr/local/bin/
ln -sf /usr/local/erlang/bin/erl /usr/local/bin/
ln -sf /usr/local/erlang/bin/erlc /usr/local/bin/
ln -sf /usr/local/erlang/bin/escript /usr/local/bin/
ln -sf /usr/local/erlang/bin/run_erl /usr/local/bin/
ln -sf /usr/local/erlang/bin/to_erl /usr/local/bin/
ln -sf /usr/local/erlang/bin/typer /usr/local/bin/

2.2 二进制安装 RabbitMQ 3.13.7

(1) 下载安装包

二进制包无需再安装依赖库,解压后可直接使用,非常方便。这里选择下载:rabbitmq-server-generic-unix-3.13.7.tar.xz

 

(2) 解压安装包

# 解压
tar -xvJf ./rabbitmq-server-generic-unix-3.13.7.tar.xz

(3) 移动到指定目录

mv ./rabbitmq_server-3.13.7/  /data/rabbitmq_server

(4) 添加环境变量

vim /etc/profile

追加如下内容:

PATH=$PATH:/data/rabbitmq_server/sbin

环境变量生效:

source /etc/profile

(5) 安装RabbitMQ管理界面

# 进入软件根目录
cd /data/rabbitmq_server

# 安装RabbitMQ管理界面
rabbitmq-plugins enable rabbitmq_management

(6) 开启RabbitMQ服务

# 使用后台守护进程开启
rabbitmq-server -detached  

(7) 通过访问 http://IP地址:15672 进入到RabbitMQ管理后台

# 防火墙开放Web端口:15672
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --reload
firewall-cmd --list-all

RabbitMQ 的默认端口如下:

1. AMQP 协议端口:5672(主要用于客户端连接)
2. 管理控制台端口:15672(用于访问 RabbitMQ 的 Web 管理界面)
3. STOMP 协议端口:61613
4. MQTT 协议端口:1883
5. HTTP API 端口:15672(与管理控制台端口一致)

(8) 登录管理后台

RabbitMQ 安装完后默认会guest这个用户,但是这个用户只允许在本地登录,所以用 IP地址:15672访问登录时时出现"User can only log in via localhost"提示。

解决方案:

可以新增一个新的用户并授予管理员角色去登录,这里我们创建一个 admin 123456

rabbitmqctl add_user admin 123456
rabbitmqctl set_user_tags admin administrator

这样就可以用admin 登录了,还有一种方式就是去修改RabbitMQ配置文件,可以去参考官网配置项资料,这里就不赘述了。

3、配置开机启动服务

(1) 添加专属用户

groupadd rabbitmq
useradd -g rabbitmq rabbitmq # 注意:RabbitMQ软件需要这个家园目录/home/rabbitmq,且它会自动生成该家园目录

(2) 修改目录权限

chown -R rabbitmq:rabbitmq  /data/rabbitmq_server
chmod -R 755 /data/rabbitmq_server

(3) 创建systemd服务配置文件

vim /usr/lib/systemd/system/rabbitmq-server.service

输入以下内容:

[Unit]
Description=RabbitMQ broker
After=syslog.target network.target

[Service]
Type=notify
User=rabbitmq
Group=rabbitmq
UMask=0027
NotifyAccess=all
TimeoutStartSec=600

# To override LimitNOFILE, create the following file:
#
# /etc/systemd/system/rabbitmq-server.service.d/limits.conf
#
# with the following content:
#
# [Service]
# LimitNOFILE=65536

LimitNOFILE=32768

# Note: systemd on CentOS 7 complains about in-line comments,
# so only append them here
#
# Restart:
# The following setting will automatically restart RabbitMQ
# in the event of a failure. systemd service restarts are not a
# replacement for service monitoring. Please see
# https://www.rabbitmq.com/monitoring.html
Restart=on-failure
RestartSec=10

# WorkingDirectory=/var/lib/rabbitmq
# ExecStart=/usr/sbin/rabbitmq-server
# ExecStop=/usr/sbin/rabbitmqctl shutdown

WorkingDirectory=/data/rabbitmq_server/var/lib/rabbitmq
ExecStart=/data/rabbitmq_server/sbin/rabbitmq-server
ExecStop=/data/rabbitmq_server/sbin/rabbitmqctl shutdown

# See rabbitmq/rabbitmq-server-release#51
SuccessExitStatus=69

[Install]
WantedBy=multi-user.target

(4) 使配置生效

# 设置开机自启动
systemctl enable rabbitmq-server

# 重新加载systemd程序的配置文件
systemctl daemon-reload

(5) 常用命令:启动/关闭/重启

在测试新命令行之前,先关闭上面已经启动的RabbitMQ进程:

ps -ef | grep rabbitmq
kill -9 进程ID

 

# 启动
systemctl start rabbitmq-server

# 关闭
systemctl stop rabbitmq-server

# 重启
systemctl restart rabbitmq-server

特别注意

由于启动脚本中,使用的用户为 rabbitmq,所以在运行跟RabbitMQ相关的命令行时,一定要先切换至用户rabbitmq,否则会报错

# 修正目录权限
chown -R rabbitmq:rabbitmq  /data/rabbitmq_server
chmod -R 755 /data/rabbitmq_server

# 修正Cookie权限 
chmod 600 /root/.erlang.cookie

# 切换用户至rabbitmq
su rabbitmq

例如,我想查看一下当前有多少个RabbitMQ用户:

[root@ip-172-31-1-242 rabbitmq]# rabbitmqctl list_users
Error: unable to perform an operation on node 'rabbit@ip-172-31-1-242'. Please see diagnostics information and suggestions below.

Most common reasons for this are:

 * Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
 * CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server)
 * Target node is not running

In addition to the diagnostics info below:

 * See the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more
 * Consult server logs on node rabbit@ip-172-31-1-242
 * If target node is configured to use long node names, don't forget to use --longnames with CLI tools

DIAGNOSTICS
===========

attempted to contact: ['rabbit@ip-172-31-1-242']

rabbit@ip-172-31-1-242:
  * connected to epmd (port 4369) on ip-172-31-1-242
  * epmd reports node 'rabbit' uses port 25672 for inter-node and CLI tool traffic 
  * TCP connection succeeded but Erlang distribution failed 
  * suggestion: check if the Erlang cookie is identical for all server nodes and CLI tools
  * suggestion: check if all server nodes and CLI tools use consistent hostnames when addressing each other
  * suggestion: check if inter-node connections may be configured to use TLS. If so, all nodes and CLI tools must do that
   * suggestion: see the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more


Current node details:
 * node name: 'rabbitmqcli-711-rabbit@ip-172-31-1-242'
 * effective user's home directory: /root
 * Erlang cookie hash: M+FZAofDvSrUo8MZNKPlJA==

直接报上述错误 Error: unable to perform an operation on node 'rabbit@ip-172-31-1-242'. Please see diagnostics information and suggestions below.

解决方案为,先切换至rabbitmq用户:

[root@ip-172-31-1-242 rabbitmq]# su rabbitmq
[rabbitmq@ip-172-31-1-242 ~]$ rabbitmqctl list_users
Listing users ...
user    tags
admin   [administrator]
guest   [administrator]

(6) 日志目录

/data/rabbitmq_server/var/log/rabbitmq/rabbit@CentOS7-A.log

 

4、设置织信低代码平台所需的 账号及权限

参考:https://next.informat.cn/doc/guide/faq/rabbitmq/

# 切换用户
su rabbitmq

# 添加用户 
rabbitmqctl add_user root  mq_Informat_20221101

# 设置角色
rabbitmqctl set_user_tags root administrator

# 设置权限
rabbitmqctl set_permissions -p "/" root ".*" ".*" ".*"

# ------------------------------
# 检查执行结果
# ------------------------------

# 用户列表
rabbitmqctl list_users

# 查看用户权限
rabbitmqctl list_user_permissions root

 

 

参考:

  1. 【RabbitMQ】Linux上安装RabbitMQ详细步骤 — 先卸载,再安装
  2. Linux安装RabbitMQ、Erlang