封尘网

让学习成为一种习惯!

Centos7系统RabbitMq安装记录

由于朋友的工作环境的需要使用到rabbitmq来处理消息队列,为了方便布署程序所以做了以下操作笔记,同时把遇到的问题也一并记录下来。

安装方法有多种这里仅以yum的方式来实现,方便一次处理依赖关系。

系统环境: Centos7.2

以下的包如果安装时没有提示可以不用安装。

yum install ncurses-devel openssl-devel -y

安装 erlang

配置一下erlang的yum源:

cat >/etc/yum.repos.d/rabbitmq_erlang.repo<<-EOF 
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOF

配置rabbitmq的yum源:

cat >/etc/yum.repos.d/bintray-rabbitmq-server<<-EOF 
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
EOF

安装erlang和rabbitmq-server:

yum install erlang rabbitmq-server -y

安装插件:

由于要用到rabbitmq_delayed_message_exchange插件,所以就要下载并安装。

下载地址:https://www.rabbitmq.com/community-plugins.html

下载到服务器上解压出来后,复制插件到rabbitmq安装目录下的plugins目录:

[root@localhost soft]# cp rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.17/plugins/

安装插件

[root@localhost soft]#  rabbitmq-plugins enable rabbitmq_delayed_message_exchange
Enabling plugins on node rabbit@localhost:
rabbitmq_delayed_message_exchange
The following plugins have been configured:rabbitmq_delayed_message_exchange
Applying plugin configuration to rabbit@localhost...
Plugin configuration unchanged.

上面表示插件启动成功。

启动管理功能

为了管理方便,启动web管理功能,默认端口为15672。

[root@localhost soft]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_delayed_message_exchange
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

添加用户

默认情况下系统中只有一个guest用户,而它只能是本机localhost登陆的,而我们要通过远程登陆就需要添加一个用户。

常用几个命令:

  • rabbitmqctl add_user admin 123456 #添加一个用户admin,密码为123456
  • rabbitmqctl setusertags admin administrator #把用户加入到管理员组
  • rabbitmqctl list_users #查看用户列表
  • rabbitmqctl delete_user admin #删除用户
  • rabbitmqctl change_password admin abcdefg #修改用户

完成用户添加并授权后,就可以通过IP地址:15672访问到web管理界面了。

问题1

直接yum install erlang rabbitmq-server -y安装时报以下错误:

failure: repodata/repomd.xml from rabbitmq_erlang: [Errno 256] No more mirrors to try.
https://packagecloud.io/rabbitmq/erlang/el/7/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found

问题2

同样如果yum install erlang rabbitmq-server -y安装时遇到这样的警告信息:

Transaction check error:
  file /usr/lib64/erlang/bin/epmd conflicts between attempted installs of erlang-22.1-1.el7.x86_64 and erlang-erts-R16B-03.18.el7.x86_64

  file /usr/lib64/erlang/bin/erl conflicts between attempted installs of erlang-22.1-1.el7.x86_64 and erlang-erts-R16B-03.18.el7.x86_64

  file /usr/lib64/erlang/bin/erlc conflicts between attempted installs of erlang-22.1-1.el7.x86_64 and erlang-erts-R16B-03.18.el7.x86_64

个人总结:

原因两个: - 因为当你执行yum时系统走了缓存,而缓存里的部分包过旧 - 走了epel源,而epel源里的erlang-erts-R16B-03.18.el7.x86_64跟官方最新的包有冲突。

解决方法:

  • 检查/etc/yum.repos.d目录下是否有使用epel源,如果有可以指定不走epel源

    yum install erlang  --enablerepo=rabbitmq_erlang
    
    yum install rabbitmq-server --enablerepo=bintray-rabbitmq-server
    
  • 清除本地的yum缓存yum clean all

一般情况下我们会定期更新一下或者定期做yum的缓存yum makecache,使用缓存是为了加快yum安装时的速度,不用在安装时再去检查远程服务器,但是这样就会存过缓存中的数据过旧问题。

rabbitmqerlang版本的问题详细参考:https://www.rabbitmq.com/which-erlang.html

提醒:本文最后更新于 1464 天前,文中所描述的信息可能已发生改变,请谨慎使用。