在本篇,我们将在ubuntu上安装RabbitMQ,其他操作系统类似。
我们知道,RabbitMQ使用Erlang语言开发,所以需要先安装Erlang语言,在实践过程中,linux安装RabbitMQ还比较麻烦,涉及到很多依赖包的安装,官方的安装文档见 这里。
1. 正确的安装步骤
简单而言,正确的安装步骤如下:
1、安装erlang依赖包
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb sudo dpkg -i erlang-solutions_1.0_all.deb
编辑/etc/apt/sources.list
,添加以下地址的任意一个
deb https://packages.erlang-solutions.com/ubuntu trusty contrib deb https://packages.erlang-solutions.com/ubuntu saucy contrib deb https://packages.erlang-solutions.com/ubuntu precise contrib
然后执行:
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb sudo dpkg -i erlang-solutions_1.0_all.deb
2、安装erlang
sudo apt-get update sudo apt-get install esl-erlang(或erlang)
3、下载RabbitMQ
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.12/rabbitmq-server_3.7.12-1_all.deb
4、安装RabbitMQ依赖包
apt-get install socat get-get install init-system-helpers get-get install adduser get-get install logrotate
5、安装RabbitMQ
dpkg -i rabbitmq-server_3.7.12-1_all.deb
具体我的安装流程以及遇到的问题记录如下:
2. 安装过程
2.1. 下载安装包
ubuntu系统基于debian,所以我们要下载官方给的deb安装包:
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.4/rabbitmq-server_3.7.4-1_all.deb
等待下载完成。
2.2. 尝试安装
下载安装后,尝试直接安装:
dpkg -i rabbitmq-server_3.7.4-1_all.deb
出现错误信息:
很明显,erlang还没有安装。
2.3. 安装Erlang
RabbitMQ的版本与Erlang版本存在依赖关系,这里安装的是3.7.4的MQ,官方的说明是:erlang的最低版本需要19.3,最高要20.3.x,具体官方说明可以看 这里。
对于ubuntu,安装Erlang可以从源码编译安装,也可以从ubuntu库中安装,erlang也提供下载安装包。
如果试图直接从ubuntu库安装erlang,会出现一堆依赖问题:
apt-get install erlang
结果如下:
参看erlang官方文档,我们采用下载安装包来安装,详细信息可以看 这里。
2.3.1. 下载安装包
使用如下命令下载erlang安装包,这里下载的是64位版本:
wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_20.2.2-1~ubuntu~trusty_amd64.deb
下载完成后安装:
dpkg -i esl-erlang_20.2.2-1~ubuntu~trusty_amd64.deb
结果发现,仍有一些依赖找不到:
2.3.2. 安装依赖
试图安装libwxbase:
apt-get install libwxbase
结果报错:
apt-get找不到libwxbase这个包,仔细查看官方文档,需要的依赖包已经在erlang-solutions准备好了,具体详情见: https://www.erlang-solutions.com/resources/download.html的Installation using repository章节。
编辑/etc/apt/sources.list,从几个地址中选择一个加入即可:
deb https://packages.erlang-solutions.com/ubuntu trusty contrib deb https://packages.erlang-solutions.com/ubuntu saucy contrib deb https://packages.erlang-solutions.com/ubuntu precise contrib
我这里选择的:deb http://packages.erlang-solutions.com/ubuntu precise contrib。
然后执行如下命令,使地址生效:
wget http://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc apt-key add erlang_solutions.asc apt-get update
等待更新完成,再次安装,还是缺少依赖,提示执行apt-get -f install安装,执行该命令:
apt-get -f install
2.3.3. 完成安装
安装完成后,再次安装erlang下载包:
dpkg -i esl-erlang_20.2.2-1~ubuntu~trusty_amd64.deb
说明安装成功。
其实到这一步,依赖都安装完成,可以直接使用从ubuntu库安装了,执行apt-get install erlang或者apt-get install esl-erlang即可。
2.4. 安装MQ
Erlang安装完成,可以继续安装RabbitMQ了,执行如下命令:
dpkg -i rabbitmq-server_3.7.4-1_all.deb
安装成功。
3. 目录结构
3.1. 主目录
安装主目录位于:/usr/lib/rabbitmq
bin:可执行文件,其实是软连接到安装目录的sbin目录;
lib:rabbitmq安装目录。
3.2. 日志目录
日志目录:/var/log/rabbitmq/
rabbit@ubuntu.log是mq的服务日志文件,从rabbit@ubuntu.log启动日志就可以看出目录结构:
上边的目录信息中:
database dir为数据库目录
mnesia: 用于存储RabbitMQ的每个队列、交换器和绑定的元数据的数据库,内建在erlang的非SQL型数据库。
配置文件为none,说明没有创建配置文件。
3.3. 配置文件目录
配置文件目录:/etc/rabbitmq/
默认情况下,该目录没有配置文件,如果RabbitMQ Server作为非生产环境用(例如开发环境),那么其实全部使用默认配置就够了,如果要用于生产环境,那么我们需要更精确的控制各项配置,最好自己建立配置文件做精确控制。关于配置文件,可以看 这里,这里不做详细介绍了。
4. 启停
安装完成后默认是已经启动的,
4.1. 启动
service rabbitmq-server start
上边的命令是以服务方式启动的,我们也可以直接启动mq安装主目录的脚本来启动:
./sbin/rabbitmq-server
以守护进程启动:
./sbin/rabbitmq-server -detached
4.2. 查询状态
service rabbitmq-server status
结果如下:
通过按目录的执行脚本:
./sbin/rabbitmqctl status
4.3. 停止
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb sudo dpkg -i erlang-solutions_1.0_all.deb
结果如下:
按目录脚本停止:
./sbin/rabbitmqctl stop {-n rabbit@[hostname]}
-n
命令用于指定需要停止的节点位置,该命令会等到mq执行剩余工作再关闭,会同时停止mq和erlang节点。如果仅需要停止mq,而保持erlang节点继续运行,可以使用stop_app。
5. 远端连接
安装好后,本地客户端可以使用guest用户连接,但是远端客户端无法连接上,默认的guest用户只能用于本地连接,连接会抛出如下异常:
Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
官方建议删除该guest用户,或者修改密码,所以要连接远端mq服务器,还需要创建一个用户,并授予权限,也可以取消guest本地访问的限制,具体将在下一篇:权限管理来介绍。
至此,我们已经成功安装了RabbitMQ服务器,并且可以通过命令来启动、停止服务器和查看服务器状态,接下来,我们需要对MQ server进行权限设置。