RabbitMQ的部署有很多坑,有时候项目要求搭建个MQ测试环境,没有经验的话会浪费很长时间。记录下来,以备不时之需。
目前RabbitMQ最新版本已经迭代到3.10.7,部署过程可能已有区别。本文仅供参考。
版本
RabbitMQ是Erlang语言编写的,所以在安装RabbitMQ之前,需要先安装Erlang.
其中RabbitMQ和Erlang版本必须要匹配,否则不能运行,具体参考RabbitMQ Erlang Version Requirements。
部分对照表如下:
RabbitMQ | min Erlang | max Erlang |
---|---|---|
3.9.0~3.9.7 | 23.2 | 24 |
3.8.16~3.8.23 | 23.2 | 24 |
3.8.9~3.8.15 | 22.3 | 23 |
3.8.4~3.8.8 | 21.3 | 23 |
3.8.0~3.8.3 | 21.3 | 22 |
3.7 | 19.3 | 20.3 |
3.6.15 | 19.3 | 20.3 |
3.6.11~3.6.14 | R16B03 | 20.1 |
3.6.4~3.6.10 | R16B03 | 19.3 |
3.6.0~3.6.3 | R16B03 | 18.3 |
本文选择的版本是RabbitMQ 3.6.9, 对应Erlang 19.1,Linux版本是CentOS 7.7
安装Erlang
下载
手动下载
进入官网erlang.org,先点击右侧选择对应的Erlang版本,再点击下载源码
wget下载
一样的链接
1 | wget https://erlang.org/download/otp_src_19.1.tar.gz |
总之官网下载很慢,建议找其它来源。
安装
解压
创建/usr/local/software
目录,将otp_src_19.1.tar.gz
解压到这个目录下
1 | tar zxvf otp_src_19.1.tar.gz |
准备环境
安装Erlang编译所依赖的环境
1 | yum install make gcc gcc-c++ build-essential openssl openssl-devel unixODBC unixODBC-devel kernel-devel m4 ncurses-devel |
编译
创建/usr/local/erlang
目录,作为Erlang编译目录。否则默认编译到/usr/local
目录下,不方便
1 | mkdir -p /usr/local/erlang |
编译Erlang,--prefix
参数表示编译到/usr/local/erlang
目录下,--without-javac
表示不需要java编译器编译
1 | cd otp_src_19.1/ |
安装
1 | make && make install |
配置
配置Erlang环境变量,vim /etc/profile
,加入
1 | export ERLANG_HOME=/usr/local/erlang |
source /etc/profile
使配置生效
创建软链
在/usr/local/bin/
目录下创建软链,方便在任何地方调用
1 | ln -s /usr/local/erlang/bin/erl /usr/local/bin/erl |
任意位置测试,Erlang安装成功
1 | erl |
退出(halt,中断)
1 | halt(). |
安装RabbitMQ
下载
手动下载
1.进入官网rabbitmq,点击右下角More update
2.往下翻到3.6.9(或者自己需要的版本),点击GitHub,现在安装包都是交给GitHub托管
3.进入GitHub,往下翻,找到适配自己的系统的安装包。这里是rabbitmq-server-generic-unix-3.6.9.tar.xz
,点击下载即可
wget下载
一样的链接
1 | wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_9/rabbitmq-server-generic-unix-3.6.9.tar.xz |
安装
解压
同样解压到/usr/local/software
目录
1 | tar xvf rabbitmq-server-generic-unix-3.6.9.tar.xz |
配置
vim /etc/profile
,配置环境变量
1 | export RABBITMQ_HOME=/usr/local/software/rabbitmq_server-3.6.9 |
source /etc/profile
使配置生效
开启界面管理
开启管理界面插件,便于web页面访问RabbitMQ
1 | ./sbin/rabbitmq-plugins enable rabbitmq_management |
允许默认用户访问
此时启动后浏览器访问http://localhost:15672,guest/guest不能直接登录。
因为从3.3.0开始禁止guest用户从非localhost登录
vim ebin/rabbit.app
,删除<<"guest">>
,重启即可
启动/停止
后台启动
1 | ./sbin/rabbitmq-server -detached |
停止
1 | 停止 |
问题
服务无法启动
服务器重启后,用了数字主机名,mq就起不来。
原因
host解析失败。
解决
vi etc/rabbitmq/rabbitmq-env.conf
加上
1 | NODENAME=rabbit@localhost |
页面无法访问
mq启动后,端口正常,页面http://ip:15672无法访问
解决
vi etc/rabbitmq/rabbitmq.config.example
加上一下配置,重启服务即可
1 | % -*- mode: erlang -*- |