本文记录了在vmware虚拟机里centos7.4安装rabbitmq3.6.6的过程。
一、下载erlang和rabbitmq-server的rpm:
wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
二、安装erlang并检测是否成功
rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm
测试是否安装成功:
[[email protected] ~]# erl
安装erlang
三、安装rabbitmq
rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm
安装时发现缺少依赖包:socat is needed by rabbitmq-server-3.6.6-1.el7.noarch
yum install socat
安装依赖包,缺什么yum install 安装什么。
缺少依赖包
补充依赖包后,安装成功:
rabbitmq安装成功
四、创建服务:
[[email protected] ~]# systemctl enable rabbitmq-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
五、启动服务报错:
[[email protected] ~]# systemctl start rabbitmq-server.service
rabbitmq启动服务报错
查看状态:
rabbitmq启动服务错误状态
经排查,是安装时改过默认主机名,在hosts文件中添加IP和改过的主机名的映射:
[[email protected] ~]# vim /etc/hosts
[[email protected] ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 cmp4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.211 cmp4
六、rabbitmq的一些基本操作:
# 添加开机启动RabbitMQ服务
systemctl enable rabbitmq-server.service
# 查看服务状态
systemctl status rabbitmq-server.service
# 启动服务
systemctl start 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 username password
# 设置用户tag
rabbitmqctl set_user_tags username administrator
# 赋予用户默认vhost的全部操作权限
rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
# 查看用户的权限
rabbitmqctl list_user_permissions username
七、开启web管理服务:
如果只从命令行操作RabbitMQ,多少有点不方便。幸好RabbitMQ自带了web管理界面,只需要启动插件便可以使用。
rabbitmq-plugins enable rabbitmq_management
开启web管理服务
本地访问: http://localhost:15672,默认guest/guest
rabbitmq服务web管理界面
但是宿主机访问不到,查看下防火墙状态:
[[email protected] ~]# systemctl status firewalld.service
防火墙状态
绿的running表示防火墙开启。
因为我的是虚拟机里运行,直接关闭防火墙:
[[email protected] ~]# systemctl stop firewalld.service
再次执行查看防火墙命令:
[[email protected] ~]# systemctl status firewalld.service
如下图所示表示防火墙已经关闭
执行开机禁用防火墙自启命令 :
[[email protected] ~]# systemctl disable firewalld.service
此时,远程能够访问rabbitmq服务。
=====================================================
PS:防火墙其他命令,用于恢复:
启动:systemctl start firewalld.service
防火墙随系统开启启动 : systemctl enable firewalld.service
PS:如果在防火墙打开时放行,可以开放5672和15672端口 (iptables版本)
/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
八、开启远程访问:
- 配置RabbitMQ
关于RabbitMQ的配置,可以下载RabbitMQ的配置文件模板到/etc/rabbitmq/rabbitmq.config, 然后按照需求更改即可。
关于每个配置项的具体作用,可以参考官方文档。
- 开启guest用户远程访问
默认情况下,RabbitMQ的默认的guest用户只允许本机访问, 如果想让guest用户能够远程访问的话,只需要将配置文件中的loopback_users列表置为空即可,如下:
{loopback_users, []}
PS:如果没有找到配置文件,请参考下面“查看日志和配置文件”章节。
另外关于新添加的用户,直接就可以从远程访问的,如果想让新添加的用户只能本地访问,可以将用户名添加到上面的列表, 如只允许admin用户本机访问。
{loopback_users, ["admin"]}
restart …
- 新建其他用户(admin)
[[email protected] ~]# rabbitmqctl add_user admin 123456
[[email protected] ~]# rabbitmqctl set_user_tags admin administrator
[roo[email protected] ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
新建admin用户
远程使用admin用户访问:
远程访问admin用户
九、查看日志和配置文件:
[[email protected] ~]# systemctl status rabbitmq-server.service
打开日志文件:
[[email protected] ~]# cat /var/log/rabbitmq/[email protected]
这里显示的是没有找到配置文件,我们可以自己创建这个文件:
cd /etc/rabbitmq/
vim rabbitmq.config
编辑内容如下:
[{rabbit, [{loopback_users, []}]}].
这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。
保存配置后重启服务:
systemctl stop rabbitmq-server.service
systemctl start rabbitmq-server.service
此时就可以从外部访问了,此时再看日志文件,发现已经找到config文件
如果再看log文件发现还是显示没有找到配置文件,可以手动删除这个文件再重启服务,不过这不影响使用:
rm /var/log/rabbitmq/[email protected]
service rabbitmq-server stop
service rabbitmq-server start
十:其他问题或FAQ
服务启动不起来
关于集群的配置
端口占用
erlang.cookie
...