之所以写下这篇文章,是因为在用 CentOS 7.4
安装 RabbitMQ
时遇到坑了,特此记录以便查阅。
RabbitMQ
是实现了高级消息队列协议(AMQP)
的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ
服务器是用Erlang
语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
废话不多说,直接奔实践去:
RabbitMQ
现在已经更新到了 3.8 版本,但是我们在这安装的是 3.7.9,其实都是一样的。安装前有件事需要告知大家,就是安装 RabbitMQ
之前需要安装 erlang
, 而且一个很关键的点就是 RabbitMQ
的安装版本必须匹配 erlang
版本。如下截图是版本对应表,大家可以到 RabbitMQ
官方(地址) [查看版本对应关系]。
官方的提示很明显, RabbitMQ 3.7.9
版本需要安装 >20.3.x
<21.3.x
版本的 erlang
。
首先查看下 yum
的 erlang
版本
yum info erlang
如果显示的Version
不是我们想要的版本,则
vim /etc/yum.repos.d/rabbitmq-erlang.repo
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
然后执行
yum clean all
yum makecache
再一次查看erlang
版本
yum info erlang
OK!
遇到的坑来了,就是安装erlang
时候。在执行 yum install erlang
时报错。大概意思是说 /usr/lib64/erlang
冲突, 于是我怀疑系统已经有安装好的 erlang
, 执行
yum list installed |grep erlang
发现出来一大堆的 erlang
及扩展依赖,还是 22.x 版本的。
所以我们需要一个个卸载 ,执行命令
yum remove 包名
卸载到主依赖时会自动卸载其他依赖,在这里主依赖是yum remove erlang-erts-22.0.1-1.el7.x86_64
各位也可以试试。
我们再次执行
yum install erlang
安装成功!完成解坑!!!
接下来我们安装 RabbitMQ
, 个人喜好, 我的 RabbitMQ rpm
放在 /var/opt/rabbitmq
目录,你们随意。
mkdir /var/opt/rabbitmq
cd /var/opt/rabbitmq
下载 RabbitMQ
源
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el6.noarch.rpm
安装命令
yum install rabbitmq-server-3.7.9-1.el6.noarch.rpm
安装完成!
接下来我们需要做的事:
启动 RabbitMQ
服务
rabbitmq-server start
设置后台启动命令
rabbitmq-server -detached
查看 RabbitMQ
服务状态
rabbitmqctl status
关闭 RabbitMQ
服务
rabbitmqctl stop
设置为后台守护进程启动并且随系统启动而启动
sudo chkconfig rabbitmq-server on
查看 RabbitMQ
已安装的插件命令
rabbitmq-plugins list
MQ
不单止一个进程哦,多执行 ps aux|grep rabbitmq
看看,特别是kill
的时候。
接下来,如果直接访问是访问不到 Web
页面的,需要我们安装一个 web
管理端插件
rabbitmq-plugins enable rabbitmq_management
防火墙开放 RabbitMQ
的 15672
和 5672
端口
我这里使用的是 iptables
,步骤如下:
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 15672 -j ACCEPT // 增加一行配置
// 重启
systemctl restart iptables.service
先别急着登录 RabbitMQ
管理面板哦。因为 RabbitMQ
一般默认有一个guest
用户和一个 administrator
管理员用户,但是 guest
用户只可以在本机通过 localhost
的方式访问,如果要通过别的机器登陆 Web
访问就得新加一个用户并且授权。
1.查询用户列表
rabbitmqctl list_users
2.新增一个用户
rabbitmqctl add_user 用户名 用户密码
3.赋予其administrator角色
rabbitmqctl set_user_tags 用户名 administrator
4.设置其用户权限
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
5.修改用户密码
rabbitmqctl change_password 用户名 用户密码
6.删除一个用户
rabbitmqctl delete_user 用户名
然后访问 http://ip:15672
就可以访问 RabbitMQ Web
管理界面 (这个是登录后的界面)
文章的最后,推荐安装个 RabbitMQ
延迟队列插件 rabbitmq_delayed_meaage_exchange
。
如果rabbitmq-plugins list
命令发现插件没安装
cd /var/opt/rabbitmq
// 下载插件
wget https://dl.bintray.com/rabbitmq/community-plugins/3.7.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171201-3.7.x.zip
// 解压插件
unzip rabbitmq_delayed_message_exchange-20171201-3.7.x.zip
// 放置插件文件夹(我这边的是安装在 /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.9/plugins, 这个路径得看各位安装 rabbitmq 位置了)
mv rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.9/plugins
// 启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
搞定!!!
可以让你的消息队列飞起来啦~
评论一下?