消息队列有多种,今天演示下 RabbitMq 的搭建流程。由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。 

今天演示的环境是 linux centos 7 

一、准备工作--安装Erlang

 配置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的结束符

 

二、安装 RabbitMq 及过程错误解决

 

先建立一个工作目录,并下载安装包,

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 <vhostpath>] <user> <conf> <write> <read>

执行: 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

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐