CentOS7 下安装 erlang19.3 和 rabbitmq 3.7.9

前言

安装过程中最大的坑是不同 Centos 版本对应安装的 rabbitmq 版本不同,而不同的 rabbitmq 版本所依赖的 erlang 版本也不同。而更难受的是 yum 源的 erlang 版本过于“保守”,没有最新的版本,而 erlang 官网的下载速度更让人吐血。做了很多尝试,终于填了这个大坑,仅作此文,写给未来的自己以及那些即将踩坑的童鞋。

一、安装相关

1、首先查看系统的版本
lsb_release -a
2、确认所需的 rabbitmq 版本

打开 RabbitMQ 下载页面,找到下面这个表。根据相应系统版本选择需要的版本
在这里插入图片描述

我用的是 7.x 版本,所以选择了第一个,右键复制下载链接。

3、使用 wget 命令将安装包下载到服务器本地
wget  https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el6.noarch.rpm
4、安装 rabbitmq
yum install rabbitmq-server-3.7.9-1.el6.noarch.rpm
5、安装 erlang

安装完后先别急着打开,因为 rabbitmq 需要 erlang 依赖。

所以先确认所需要的 erlang 版本(点这里)

在这里插入图片描述

我刚才安装的是 3.7.9 版本,所以 erlang 版本最低需要 19.3

查看服务器的 erlang 版本

erl

我的是 19.0.4 版本,显然需要更新,我们再查看 yum 源里的 erlang 版本

yum info erlang

令人绝望的,yum 源里最新的也是 19.0.4。所幸 github 里有

所以接下来我们要更新 erlang 源

#vim /etc/yum.repos.d/rabbitmq-erlang.repo

[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/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

再一次查看 yum 源中的 erlang 版本

[root@vdevops ~]# yum info erlang

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cloud.aliyuncs.com
 * extras: mirrors.cloud.aliyuncs.com
 * updates: mirrors.cloud.aliyuncs.com
Installed Packages
Name        : erlang
Arch        : x86_64
Version     : 19.0.4
Release     : 1.el7.centos
Size        : 33 M
Repo        : installed
Summary     : General-purpose programming language and runtime environment
URL         : http://www.erlang.org
License     : ERPL
Description : This is a minimal packaging of Erlang produced by Pivotal to support
            : running RabbitMQ. Compared to the community Erlang packaging it is
            : monolithic, has fewer dependencies, and has lower disk and memory
            : overhead. Many applications from Erlang Open Telecom Platform (OTP)
            : have been removed. The following applications remain: asn1, compiler,
            : crypto, erl_interface, erts, hipe, inets, kernel, mnesia, os_mon,
            : otp_mibs, public_key, reltool, runtime_tools, sasl, snmp, ssl, stdlib,
            : syntax_tools and xmerl.

Available Packages
Name        : erlang
Arch        : x86_64
Version     : 20.3.8.14
Release     : 1.el7.centos
Size        : 18 M
Repo        : rabbitmq-erlang
Summary     : General-purpose programming language and runtime environment
URL         : http://www.erlang.org
License     : ERPL
Description : This is a minimal packaging of Erlang produced by Pivotal to support
            : running RabbitMQ. Compared to the community Erlang packaging it is
            : monolithic, has fewer dependencies, and has lower disk and memory
            : overhead. Many applications from Erlang Open Telecom Platform (OTP)
            : have been removed. The following applications remain: asn1, compiler,
            : crypto, erl_interface, erts, hipe, inets, kernel, mnesia, os_mon,
            : otp_mibs, public_key, reltool, runtime_tools, sasl, snmp, ssl, stdlib,
            : syntax_tools and xmerl.

可以看到,最新的是 20.4,所以接下来就更新 erlang 吧

yum update erlang

测试 erl

[root@vdevops home]# erl
Erlang/OTP 20 [erts-9.3.3.6] [source] [64-bit]

已经升到了 20.x 版本。

6、测试效果
systemctl start rabbitmq-server

查看服务启动状态

rabbitmqctl status

当然,Linux 的设计哲学就是没有结果就是最好的结果,所以执行上面那条命令没有报错的话,其实就是成功启动了。

二、设置相关

设置为后台守护进程启动并且随系统启动而启动
sudo chkconfig rabbitmq-server on
设置端口

运行 RabbitMQ 需要开放156725672端口。

Centos升级到7之后,发现无法使用iptables控制Linuxs的端口,Centos 7使用firewall-cmd代替了原来的iptables。

1)先启动防火墙 systemctl start firewalld,查看防火墙启动状态 systemctl status firewalld

2)开放给外部访问 15672 端口(5672 端口同理)

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

firewall-cmd --reload
启动插件功能

只有启动了插件管理功能才可以通过 web 管理页面管理 RabbitMQ

sudo /sbin/rabbitmq-plugins enable rabbitmq_management
用户管理

查询安装默认的用户(一般有一个guest 用户和一个administrator管理员用户)。

rabbitmqctl list_users

但是guest用户只可以在本机通过localhost的方式访问,如果要通过别的机器登陆 web 访问就得新加一个用户并且授权。

新加一个用户可以使用命令

# 其中admin 是用户名,StrongPassword是密码
rabbitmqctl add_user admin StrongPassword

# 通过命令给用户增加角色权限 
rabbitmqctl set_user_tags qredb administrator

# 给用户增加所有访问权限 
rabbitmqctl  set_permissions -p "/" qredb '.*' '.*' '.*'

到此就可以通过http://:15672/访问RabbitMQ了。

新增一个用户

rabbitmqctl  add_user  Username  Password

删除一个用户

rabbitmqctl  delete_user  Username

修改用户的密码

rabbitmqctl  change_password  Username  Newpassword

查看当前用户列表

CentOS 7 防火墙配置命令参考

参考资料

[1] https://blog.csdn.net/libafei/article/details/80573655
[2] https://www.jianshu.com/p/f54dc259a9ed

猜你喜欢

转载自blog.csdn.net/weixin_37641832/article/details/85266867