消息队列有多种,今天演示下 RabbitMq 的搭建流程。由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。
今天演示的环境是 linux centos 7
配置Erlang环境
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses ncurses-devel openssl-devel perl
从Erlang Solution安装(推荐)到官网 http://erlang.org/download/ 下载最新包,这里使用otp_src_21.1.tar.gz (差不多216M)
mkdir /data/erlang
cd /data/erlang/
wget http://erlang.org/download/otp_src_21.1.tar.gz
下载速度比较慢.,建议先下载到本地,再上传到服务器
下载完后解压
tar -vxf otp_src_21.1.tar.gz
安装编译,过程有点长(我这里指定编译安装后放在/usr/local/erlang目录里面,这个你们可以改成其他的)
cd otp_src_21.1
./configure --prefix=/data/erlang/erlang; make; make install
安装好后
修改/etc/profile文件,
vi /etc/profile
增加环境变量
#set erlang environment
ERLANG_HOME=/data/erlang/erlang
PATH=$ERLANG_HOME/bin:$PATH
export ERLANG_HOME
export PATH
刷新配置
source /etc/profile
测试:执行erl,看是否能打开eshell,用“halt().”退出,注意后面的“.”点号,那是erlang的结束符
先建立一个工作目录,并下载安装包,
mkdir /data/rabbitMq
cd /data/rabbitMq/
官网最新安装包下载链接: http://www.rabbitmq.com/releases/rabbitmq-server/
github 下载链接:https://github.com/rabbitmq/rabbitmq-server/releases
网速好的可通过如下命令行下载
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.8/rabbitmq-server-generic-unix-3.7.8.tar.xz
我这边直接从网站下载镜像上传到服务器(网速不好,命令下载慢)。
下载完成后,开始解压
xz -d rabbitmq-server-generic-unix-3.7.8.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.7.8.tar
解压完成后如以下目录结构
接下来配置 rabbitmq 的环境变量(这个跟上面的erlang配置以及java的环境变量差不多)
vi /etc/profile
设置环境变量,一般新增的,直接放在文档最后面就行,方便查找修改
RABBITMQ_BIN=/data/rabbitMq/rabbitmq_server-3.7.8/sbin
PATH=$PATH:$RABBITMQ_BIN
export PATH
/etc/profile 效果如下图:
执行以下命令,使得PATH路径更新,rabbitMQ安装成功。
source /etc/profile
启动服务
rabbitmq-plugins enable rabbitmq_management #启动后台管理
rabbitmq-server -detached #后台运行rabbitmq
abbitmq 基本操作命令,更多命令可参考 RabbitMQ基础操作命令
rabbitmq-server on # 添加开机启动RabbitMQ服务
rabbitmq-server start # 启动服务
rabbitmq-server status # 查看服务状态
rabbitmq-server stop # 停止服务
访问链接: http://127.0.0.1:15672/ 说明启动成功。
(临时性插曲)此时,如果通过外部访问,需要考虑防火墙设置。
本篇是Centos 7.X 所以要设置 firewalld , 如果是Centos 6.X 要设置 iptables
两种操作,第一种:开放端口供外界访问(推荐,因接近实际搭建涉及的问题)
# firewall-cmd --zone=public --add-port=4369/tcp --permanent #erlang发现端口4369
# firewall-cmd --zone=public --add-port=5672/tcp --permanent #默认client端通信端口5672
# firewall-cmd --zone=public --add-port=15672/tcp --permanent #默认server管理端口15672
# firewall-cmd --zone=public --add-port=25672/tcp --permanent #默认server间内部通信口25672
端口配置好后,重启防火墙,使其生效
systemctl restart firewalld
方法二:直接关闭防火墙。
systemctl stop firewalld
更多防火墙问题可浏览另一篇文章 linux-Centos-7-64位:3、 firewalld 配置
由于guest用户被限制,只能通过localhost访问,因此我们需要新建一个用户,并授予管理员权限。
新建一个用户名为admin,密码为admin的用户,并授予管理员(administrator)权限。
方法一:命令行创建
rabbitmqctl add_user admin admin123
rabbitmqctl set_user_tags admin administrator
方法二:登录控制台创建 http://127.0.0.1:15672/
搭建完成。
记得,此时创建的 admin用户只有登录管理界面权限,没有操作权限:“No access”,如需开启权限有两种方式:
1,界面操作
设置权限
保存即可。
2、命令行形式
通过命令授权
语法: set_permissions [-p
执行: rabbitmqctl set permissions -p / admin .* .* .* 完成对admin的授权,然后启动项目就正常了
正常权限界面如下:
过程错误修复:
大多错误在网上都找的到,今天说个新手较难察觉的错误,如下
启动服务 ,报如下错误
Error description:
noproc
是不是 发觉报错详情内容没有,配置又没错误。注:这个时候需要查看下你的 erlang 和 rabbitmq 版本是否匹配。上面的错误请注意第一行,我下载的 erlang版本是 21.1, 而rabbitmq 版本为 3.6.15 ,导致错误。
官网给出的版本匹配链接如下:https://www.rabbitmq.com/which-erlang.html
只要你的安装版本对得上,就可以解决。
参考文章:
Centos 安装RabbitMq3.7.7
RabbitMq Erlang Version Requirements
rabbitmq 连接报错 An unexpected connection driver error occured