CentOS 安装 RabbitMQ
安装:
1、环境
查看系统版本
# lsb_release -a
# cat /etc/centos-release
操作系统:CentOS 7.9 64位;
注意:如果操作系统是最小化安装,需要额外安装环境依赖:
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
2、安装包下载
下载后的文件:
-
erlang-23.3.4.11-1.el7.x86_64.rpm
-
socat-1.7.3.2-2.el7.x86_64.rpm
-
rabbitmq-server-3.9.9-1.el7.noarch.rpm
2.1 RabbitMQ
下载地址:https://packagecloud.io/rabbitmq/
根据自己的操作系统选择版本,我的操作系统是 CentOS 7 ,所以版本为 el/7。
2.2 Erlang
下载地址:https://packagecloud.io/rabbitmq
版本号选择el/7
2.3 socat
下载地址:http://www.rpmfind.net/linux/rpm2html/search.php?query=socat&submit=Search+...&system=centos&arch=
注意:下载后缀带有 X86_64 的文件
3、软件安装
3.1、上传文件
SSH 登录服务器上传下载到的文件。连接工具我用的是 MobaXterm,下载地址:https://mobaxterm.mobatek.net/
3.2、安装文件
rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
rpm -ivh rabbitmq-server-3.9.9-1.el7.noarch.rpm
特别注意:由于 RabbitMQ 是基于 Erlang 语言开发的,所以必须先安装Erlang。请按照顺序依次安装。
3.2、Rabbitmq 配置
注意:rabbitmq配置文件的后置是conf rabbitmq.conf
创建文件 /etc/rabbitmq/rabbitmq.con,下载官方模板进行配置。
官网地址:https://github.com/rabbitmq/rabbitmq-server/blob/v3.8.x/deps/rabbit/docs/rabbitmq.conf.example
4、常用命令
### 启动相关[ enable开机启动 | disable禁止开机启动 | start启动 | restart重启 | stop停止 | status状态 ]
# 开机启动RabbitMQ服务
systemctl enable rabbitmq-server
# 禁止开机启动RabbitMQ服务
systemctl disable rabbitmq-server
# 服务启动
systemctl start rabbitmq-server
# 服务重启
systemctl restart rabbitmq-server
# 服务关闭
systemctl stop rabbitmq-server
# 服务状态
systemctl status rabbitmq-server
### 管理命令行 用来在不使用web管理界面情况下命令操作RabbitMQ
# 查看帮助
rabbitmqctl help
### 插件管理命令行[ enable开启 | list列表 | disable禁用 ]
# 开启
rabbitmqplugins enable
# 列表
rabbitmqplugins list
# 禁用
rabbitmqplugins disable
### 添加管理用户角色命令:
# 查看当前用户列表
rabbitmqctl list_users
# 修改密码
rabbitmqctl change_password Username Newpassword
# 删除用户
rabbitmqctl delete_user Username
### 新增用户授权访问
# 1、新增一个用户 语法:rabbitmqctl add_user {useame} {password}
rabbitmqctl add_user root root
# 2、设置用户角色 语法:rabbitmqctl set_user_tags {useame} {tag...}
设置root为超级管理员rabbitmqctl set_user_tags root administrator
# 3、设置用户权限 语法是 rabbitmqctl set_permissions [-p vhost] {user}{conf}{write}{read}
# rabbitmq默认的虚拟主机host为"/"
rabbitmqctl set_permissions -p "/" root ".*" ".*" ".*"
### 角色有四种:
administrator:可以登录控制台、查看所有信息、并对rabbitmq进行管理
monToring:监控者;登录控制台,查看所有信息
policymaker:策略制定者;登录控制台指定策略
managment:普通管理员;登录控制
5、Web管理插件
5.1、开启插件
rabbitmq-plugins enable rabbitmq_management
注意:先开启 rabbitmq-server,再执行。
访问地址:[ip]:15672
注意:rabbitmq的默认账号[guest]仅限于本机localhost进行访问,所以需要添加一个远程登录的用户
RabbitMQ端口的意义
- 5672:rabbitmq的同学端口
- 25672:rabbitmq的节点间的CLI通讯端口
- 15672:rabbitmq HTTP_API的端口,管理员才能访问,用于管理RabbitMQ,需要启动Management插件。
- 1883、8883:MQTT插件启动时的端口
- 61613、61614:STOMP客户端插件启用的时候的端口
- 15674/15675:基于websocket的STOMP端口和MOTT端口
端口号修改
rabbitmq默认端口和activemq同时启用冲突问题
1.默认5672端口号修改
https://www.rabbitmq.com/configure.html
第一种方法:
在/etc/rabbitmq/rabbitmq.conf配置文件中加上如下配置:
listeners.tcp.default = 5673
或者
[
{
rabbit, [
{tcp_listeners, [5673]}
]
}
]
上面的示例将更改RabbitMQ监听AMQP0-9-1和AMQP 1.0协议客户端的连接端口从5672到5673
第二种方法:
在/etc/rabbitmq/rabbitmq-env.conf配置文件中添加如下配置:
NODE_PORT=5673
rabbitmq-env.conf配置文件中的配置优先级高于rabbitmq.conf配置文件中的配置
2.默认15672端口号更改
在/etc/rabbitmq/rabbitmq.conf配置文件中加上如下配置:
management.tcp.port = 15673
3.默认25672端口号更改
25672端口用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下仅限于单个端口,计算方式为AMQP 0-9-1和AMQP 1.0端口+20000),默认情况下通过 RABBITMQ_NODE_PORT 计算是25672,也可以通过RABBITMQ_DIST_PORT环境变量配置
在/etc/rabbitmq/rabbitmq-env.conf配置文件中添加如下配置:
DIST_PORT=25674
也可以通过设置 RABBITMQ_NODE_PORT计算 RABBITMQ_DIST_PORT 端口:
NODE_PORT=5674
上面两种方案一种是直接设置节点和CLI工具通信的分发端口,另外一种是通过设置RabbitMQ服务器和客户端之间通信端口并计算得到25674端口号。
4.默认4369端口号更改
EPMD默认端口号是4369,但是可以使用ERL_EPMD_PORT环境变量更改。
列出在当前运行的epmd中绑定注册的端口号及监听的分发端口:
[root@rabbit1 rabbitmq]# epmd -names
epmd: up and running on port 4369 with data:
name rabbit at port 25672
修改epmd守护进程绑定的端口号:
export ERL_EPMD_PORT=4365
杀死epmd守护进程指令:
epmd -kill
当然直接在系统中使用export命令设置环境变量是可以生效的,但是只要系统重启环境变量就失效;可以在/etc/profile或/root/.bashrc文件配置系统环境变量,然后source 文件名就可以永久生效了。
报错:
启动报错查看日志:
1、使用命令 journalctl -xe ,定位到详细的报错日志信息。
2、执行 rabbitmq-server -detached,重新编译并运行rabbitmq服务,会打印出更标准的日志信息。出现Starting broker... completed with 3 plugins 说明执行成功了。
报错信息:
1、ERROR: could not bind to distribution port 25672, it is in use by another node: rabbit@centos7
分析:
检查一下端口25672被谁占用了 lsof -i:25672
这个不是杀死进程就可以解决的。
解决:
执行命令 rabbitmqctl stop
,表示正在停止和停止节点rabbit@xx
再重新启动服务就不会报这个错误了。