该文章主要记录在 Ubuntu 16.04.1 LTS
系统下安装及配置 RabbitMQ 的方法。
更新软件源
1 | sudo echo "deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse" > /etc/apt/sources.list |
安装Erlang依赖
1 | cd /tmp |
安装RabbitMQ
1 | sudo echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list |
管理RabbitMQ服务
管理服务
可以使用 rabbitmqctl
或系统服务 service
或者 systemctl
来管理.
rabbitmqctl :
1 | $ sudo rabbitmqctl [status|start|stop|reset] |
systemctl :
1 | $ sudo systemctl [status|start|stop|restart] rabbitmq-server |
service :
1 | $ sudo service rabbitmq-server [status|start|stop|restart] |
如果 status
状态显示无法连接rabbitmq服务,需要先启动该服务。
1 | $ sudo rabbitmqctl status |
在Docker下管理
注意:在Ubuntu系统的 Docker
下 ,使用 systemctl
命令会报错,所以在docker下还是推荐使用 service
来管理。
1 | root@6b16517eab27:/tmp# systemctl |
So the systemctl can not run inside docker, right? thanks!
- Running systemctl in container fails with "Failed to get D-Bus connection" · Issue #2296 · docker/docker · GitHub
- systemd and systemctl within Ubuntu Docker images - Stack Overflow
RabbitMQ Web管理接口
启用rabbitmq-management
启用rabbitmq-management插件:
1 | $ sudo rabbitmq-plugins enable rabbitmq_management |
1 | $ sudo rabbitmq-plugins enable rabbitmq_management |
重启RabbitMQ:
1 | $ sudo systemctl restart rabbitmq-server |
使用浏览器访问 http://localhost:15672
,使用默认的 guest/guest
用户登录。
使用guest账户远程访问
注意:使用远程访问或在Ubuntu系统的Docker下使用所在服务器的地址访问时会报权限错误:
1 | {error: "not_authorised", reason: "User can only log in via localhost"} |
这是因为 rabbitmq从3.3.0开始禁止使用 guest/guest
权限通过除 localhost
外的访问。
如果想使用 guest/guest
通过远程机器访问,需要在rabbitmq配置文件 (/etc/rabbitmq/rabbitmq.config)
中设置 loopback_users为[]
。
/etc/rabbitmq/rabbitmq.config
(不存在先创建) 文件完整内容如下(注意后面的半角句号):
1 | [{rabbit, [{loopback_users, []}]}]. |
操作步骤如下:
1 | # ls /etc/rabbitmq/ |
创建新账户
如果不想使用默认的 guest
账户,可以创建一个新的具有管理员权限的账户,如创建一个 test/test
账户操作如下:
1 | rabbitmqctl add_user test test |
- RabbitMQ - Access Control (Authentication, Authorisation) in RabbitMQ
- Can't access RabbitMQ web management interface after fresh install - Stack Overflow
- RabbitMQ 3.3.1 can not login with guest/guest - Stack Overflow
- rabbitmq问题之HTTP access denied: user 'guest' - User can only log in via localhost - 布雷泽 - 博客园