这一节我们将会在Linux上安装配置单机版的RabbitMQ,并且会介绍一下如何启动关闭服务、查看服务状态等命令,另外还会简单介绍一下web管理页面的配置使用方式。
前言
这里所介绍的是在Linux上安装的,在Linux上安装配置RabbitMQ还是遇到了不少坑的,其实主要是erlang的安装及配置,一般如果erlang安装配置正确了,后面RabbitMQ的安装还是比较简单的,网上关于RabbitMQ的安装方式大概三种,其实主要区别就在于erlang的安装方式不同。
所用服务器为centos6,因为RabbitMQ是基于erlang语言的,所以在安装RabbitMQ之前要先安装配置erlang,本次安装使用版本为erlang19.3、RabbitMQ3.6.10。erlang下载地址为http://www.erlang.org/downloads,RabbitMQ下载地址为http://www.rabbitmq.com/releases/rabbitmq-server/,关于RabbitMQ各个版本要求的erlang版本的介绍在https://www.rabbitmq.com/which-erlang.html ,你可以根据自己安装的版本选择合适的erlang版本,RabbitMQ官方的安装配置文档地址为https://www.rabbitmq.com/download.html。
一、安装编译工具
在安装erlang之前,先执行如下命令安装编译工具,省的安装erlang过程中因缺少东西出现的错误。
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
二、安装配置erlang
下载erlang19.3地址为http://erlang.org/download/otp_src_19.3.tar.gz,上传到Linux服务器上,然后执行如下命令安装
#解压
tar xvf otp_src_19.3.tar.gz
cd otp_src_19.3
#配置 '--prefix'指定的安装目录,--without-javac 表示不用安装javac
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
#编译安装
make && make install
erlang安装比较耗时间,可能我的电脑配置不好,整个过程花了将近20分钟,看到如下结果表示erlang安装成功。
如果安装过程中出现类似关键报错信息: No curses library functions found 。那么此时需要安装ncurses ,安装步骤(遇到提示输入y 后直接回车即可)如下: yum install ncurses-devel,然后再安装erlang,只要执行了第一步,就不会出现这种情况。
安装完成后,需要将其配置到环境变量当中。
vim /etc/profile
#在文件末尾添加下面代码 'ERLANG_HOME'等于上一步'--prefix'指定的目录
ERLANG_HOME=/usr/local/erlang
PATH=$ERLANG_HOME/bin:$PATH
export ERLANG_HOME
export PATH
#使环境变量生效
source /etc/profile
#输入命令检验是否安装成功
erl
看到如下图所示,即表示安装配置完成。
三、安装RabbitMQ
从http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-generic-unix-3.6.10.tar.xz中下载rabbitmq-server-generic-unix-3.6.10.tar.xz,上传到Linux服务器上。该安装包不用执行make & make install,解压即可使用。
#直接解压缩
tar xvf rabbitmq-server-generic-unix-3.6.10.tar.xz
#复制解压得到的文件到rabbitmq
cp -r rabbitmq_server-3.6.10/ rabbitmq
#移动上一步复制的rabbitmq到 /usr/local下
mv rabbitmq /usr/local/
然后配置一下环境变量
vim /etc/profile
#在文件末尾添加下面代码,配置rabbitmq的sbin目录
export PATH=$PATH:/usr/local/rabbitmq/sbin
#使环境变量生效
source /etc/profile
四、RabbitMQ启动及配置
做完上面的配置,然后执行 rabbitmq-server (该命令ctrl+c后会关闭服务)前台启动
#启动命令,该命令ctrl+c后会关闭服务
[root@wkp4 local]# rabbitmq-server
RabbitMQ 3.6.10. Copyright (C) 2007-2017 Pivotal Software, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wkp4.log
###### ## /usr/local/rabbitmq/var/log/rabbitmq/rabbit@wkp4-sasl.log
##########
Starting broker...
completed with 0 plugins.
查看进程信息:ps -ef|grep rabbitmq
执行rabbitmq-server -detached 可以后台启动。(后台启动时报 Warning: PID file not written; -detached was passed 暂时没有找到原因,但是不影响使用,如果大家有解决办法,还请不吝赐教)
执行 rabbitmqctl stop 可以关闭服务。也可以执行 kill 进程号 (ps -ef|grep rabbitmq查到的进程号)的方式关闭(不推荐这种)
执行 rabbitmqctl status 查看服务状态
[root@wkp4 ~]# rabbitmqctl status
Status of node rabbit@wkp4
[{pid,35788},
{running_applications,
[{rabbitmq_management,"RabbitMQ Management Console","3.6.10"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.10"},
{rabbitmq_management_agent,"RabbitMQ Management Agent","3.6.10"},
{rabbit,"RabbitMQ","3.6.10"},
{os_mon,"CPO CXC 138 46","2.4.2"},
{cowboy,"Small, fast, modular HTTP server.","1.0.4"},
{ranch,"Socket acceptor pool for TCP protocols.","1.3.0"},
{ssl,"Erlang/OTP SSL application","8.1.1"},
{public_key,"Public key infrastructure","1.4"},
{asn1,"The Erlang ASN1 compiler version 4.0.4","4.0.4"},
{amqp_client,"RabbitMQ AMQP Client","3.6.10"},
{rabbit_common,
"Modules shared by rabbitmq-server and rabbitmq-erlang-client",
"3.6.10"},
{xmerl,"XML parser","1.3.13"},
{cowlib,"Support library for manipulating Web protocols.","1.0.2"},
{compiler,"ERTS CXC 138 10","7.0.4"},
{inets,"INETS CXC 138 49","6.3.6"},
{mnesia,"MNESIA CXC 138 12","4.14.3"},
{crypto,"CRYPTO","3.7.3"},
{syntax_tools,"Syntax tools","2.1.1"},
{sasl,"SASL CXC 138 11","3.0.3"},
{stdlib,"ERTS CXC 138 10","3.3"},
{kernel,"ERTS CXC 138 10","5.2"}]},
{os,{unix,linux}},
{erlang_version,
"Erlang/OTP 19 [erts-8.3] [source] [64-bit] [async-threads:64] [hipe] [kernel-poll:true]\n"},
{memory,
[{total,55793912},
{connection_readers,0},
{connection_writers,0},
{connection_channels,0},
{connection_other,2688},
{queue_procs,2688},
{queue_slave_procs,0},
{plugins,888224},
{other_proc,18894904},
{mnesia,58752},
{metrics,51760},
{mgmt_db,163448},
{msg_index,41664},
{other_ets,2399664},
{binary,63000},
{code,24726014},
{atom,1033401},
{other_system,7516777}]},
{alarms,[]},
{listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{http,15672,"::"}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,611031449},
{disk_free_limit,50000000},
{disk_free,12368211968},
{file_descriptors,
[{total_limit,65436},
{total_used,2},
{sockets_limit,58890},
{sockets_used,0}]},
{processes,[{limit,1048576},{used,325}]},
{run_queue,0},
{uptime,6246},
{kernel,{net_ticktime,60}}]
添加管理员:默认情况下,访问RabbitMQ 服务的用户名和密码都是"guest " , 这个账户有限制,默认只能通过本地网络(如localhost) 访问,远程网络访问受限,所以在实现生产和消费消息之前,需要另外添加一个用户,并设置相应的访问权限。
#添加用户: 用户名:wkp,密码:123456
rabbitmqctl add_user wkp 123456
#为wkp用户设置所有权限
rabbitmqctl set_permissions -p / wkp ".*" ".*" ".*"
#设置wkp用户为管理员角色
rabbitmqctl set_user_tags wkp administrator
#开启web管理器
rabbitmq-plugins enable rabbitmq_management
#关闭web管理器
rabbitmq-plugins disable rabbitmq_management
添加完管理员用户并开启web管理器之后,通过访问 http://ip:15672 ,然后输入上面添加的管理员账号密码即可访问web管理页面。