在CentOS7下安装配置rabbitMQ

安装Erlang

由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。从EPEL源安装(这种方式安装的Erlang版本可能不是最新的,有时候不能满足RabbitMQ需要的最低版本)。

# 启动EPEL源
$ yum install epel-release
# 安装erlang
$ yum install erlang

完成后安装RabbitMQ

先下载rpm:

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

下载完成后安装:

yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

安装时如果遇到下面的依赖错误

Error: Package: socat-1.7.2.3-1.el6.x86_64 (epel)
Requires: libreadline.so.5()(64bit)
可以尝试先执行

$ yum install socat

RabbitMQ一些基本操作

$ systemctl enable rabbitmq-server.service # 添加开机启动RabbitMQ服务
$ systemctl start rabbitmq-server.service # 启动服务
$ systemctl status rabbitmq-server.service # 查看服务状态
$ systemctl stop rabbitmq-server.service # 停止服务

# 查看当前所有用户
$ rabbitmqctl list_users

# 查看默认guest用户的权限
$ rabbitmqctl list_user_permissions guest

# 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
$ rabbitmqctl delete_user guest

# 添加新用户
$ rabbitmqctl add_user rabbitadmin password

# 设置用户tag
$ rabbitmqctl set_user_tags rabbitadmin administrator

# 赋予用户默认vhost的全部操作权限
$ rabbitmqctl set_permissions -p / rabbitadmin “.*” “.*” “.*”

# 查看用户的权限
$ rabbitmqctl list_user_permissions rabbitadmin

更多关于rabbitmqctl的使用,可以参考帮助手册

开启web管理接口

如果只从命令行操作RabbitMQ,多少有点不方便。幸好RabbitMQ自带了web管理界面,只需要启动插件便可以使用。

$ rabbitmq-plugins enable rabbitmq_management
然后通过浏览器访问

http://localhost:15672

输入用户名和密码访问web管理界面了。

配置RabbitMQ

关于RabbitMQ的配置,可以下载RabbitMQ的配置文件模板到/etc/rabbitmq/rabbitmq.config,然后按照需求更改即可。
关于每个配置项的具体作用,可以参考官方文档
更新配置后,重启服务。

开启用户远程访问

默认情况下,RabbitMQ的默认的guest用户只允许本机访问, 如果想让guest用户能够远程访问的话,只需要将配置文件中的loopback_users列表置为空即可,如下:

{loopback_users, []}
另外关于新添加的用户,直接就可以从远程访问的,如果想让新添加的用户只能本地访问,可以将用户名添加到上面的列表, 如只允许admin用户本机访问。

{loopback_users, [“admin”]}
更新配置后,重启服务。

# 查看服务状态
# systemctl status rabbitmq-server.service

[root@ds-163 opt]# systemctl status rabbitmq-server.service
鈼[0m rabbitmq-server.service – RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2018-01-31 21:22:26 CST; 1h 5min ago
Main PID: 973 (beam.smp)
Status: “Initialized”
Memory: 82.3M
CGroup: /system.slice/rabbitmq-server.service
鈹溾攢 973 /usr/lib64/erlang/erts-5.10.4/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K true …
鈹溾攢1328 /usr/lib64/erlang/erts-5.10.4/bin/epmd -daemon
鈹溾攢1681 inet_gethost 4
鈹斺攢1682 inet_gethost 4

Jan 31 21:22:19 ds-163.uenta.cn rabbitmq-server[973]: RabbitMQ 3.6.6. Copyright (C) 2007-2016 Pivotal Software, Inc.
Jan 31 21:22:19 ds-163.uenta.cn rabbitmq-server[973]: ## ## Licensed under the MPL. See http://www.rabbitmq.com/
Jan 31 21:22:19 ds-163.uenta.cn rabbitmq-server[973]: ## ##
Jan 31 21:22:19 ds-163.uenta.cn rabbitmq-server[973]: ########## Logs: /var/log/rabbitmq/rabbit@ds-163.log
Jan 31 21:22:19 ds-163.uenta.cn rabbitmq-server[973]: ###### ## /var/log/rabbitmq/rabbit@ds-163-sasl.log
Jan 31 21:22:19 ds-163.uenta.cn rabbitmq-server[973]: ##########
Jan 31 21:22:19 ds-163.uenta.cn rabbitmq-server[973]: Starting broker…
Jan 31 21:22:26 ds-163.uenta.cn rabbitmq-server[973]: systemd unit for activation check: “rabbitmq-server.service”
Jan 31 21:22:26 ds-163.uenta.cn systemd[1]: Started RabbitMQ broker.
Jan 31 21:22:26 ds-163.uenta.cn rabbitmq-server[973]: completed with 0 plugins.

查看log文件位置,打开log文件:

[root@ds-163 opt]# cat /var/log/rabbitmq/rabbit@ds-163.log

=INFO REPORT==== 31-Jan-2018::21:20:08 ===
Starting RabbitMQ 3.6.6 on Erlang R16B03-1
Copyright (C) 2007-2016 Pivotal Software, Inc.
Licensed under the MPL. See http://www.rabbitmq.com/

=INFO REPORT==== 31-Jan-2018::21:20:08 ===
node : rabbit@ds-163
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config (not found)
cookie hash : uHeLj/kKUTo0sO5/2NDkRw==
log : /var/log/rabbitmq/rabbit@ds-163.log
sasl log : /var/log/rabbitmq/rabbit@ds-163-sasl.log
database dir : /var/lib/rabbitmq/mnesia/rabbit@ds-163

显示没有找到配置文件,可以自己创建这个文件:

cd /etc/rabbitmq/
vi rabbitmq.config

编辑内容如下:

[{rabbit, [{loopback_users, []}]}].

开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。

保存配置后重启服务:

systemctl stop rabbitmq-server.service
systemctl start rabbitmq-server.service

此时就可以从外部访问了,但此时再看log文件,发现内容还是原来的,还是显示没有找到配置文件,可以手动删除这个文件再重启服务,不过这不影响使用

rm /var/log/rabbitmq/rabbit@ds-163.log
systemctl stop rabbitmq-server.service
systemctl start rabbitmq-server.service

注意:开放5672和15672端口

firewall-cmd –zone=public –add-port=5672/tcp –permanent
firewall-cmd –zone=public –add-port=15672/tcp –permanent

firewall-cmd –reload