RabbitMQ安装
RabbitMQ是由Erlang语言编写的,因此在使用RabbitMQ之前需要安装Erlang,本次安装Erlang_19.3
版本
1、安装Erlang
下载
Erlang
的19.3
版本,官网下载为otp_src_19.3.tar.gz
[hayson@localhost ~]$ ls otp_src_19.3.tar.gz
解压
otp_src_19.3.tar.gz
到当前目录[hayson@localhost ~]$ tar -xvf otp_src_19.3.tar.gz
进入解压目录,配置安装目录为
/usr/local/erlang
,如果不需要java编译器编译,可以添加--without-javac
选项。[zeng@localhost ~]$ cd otp_src_19.3 [zeng@localhost otp_src_19.3]$ sudo ./configure --prefix=/usr/local/erlang
在这一步中如果出现类似
No curses library functions found
的错误,此时就需要安装
ncurses
(出现提示输入y
后回车安装)[zeng@localhost otp_src_19.3]$ sudo yum install ncurses-devel
上面安装完后,再执行第3步配置目录,如果还出现如下错误
crypto : No usable OpenSSL found odbc : ODBC library - link check failed ssh : No usable OpenSSL found ssl : No usable OpenSSL found
可以执行安装相应缺失的包
安装
OpenSSL
包查询yum源中含有的
ssl
包[hayson@localhost otp_src_19.3]$ yum list | grep ssl openssl-devel.i686 1:1.0.2k-12.el7 base openssl-devel.x86_64 1:1.0.2k-12.el7 base
执行安装
openssl-devel
包[hayson@localhost otp_src_19.3]$ sudo yum install openssl-devel
安装
ODBC
包查询yum源中含有的
ODBC
包[hayson@localhost otp_src_19.3]$ yum list | grep ODBC unixODBC-devel.i686 2.3.1-11.el7 base unixODBC-devel.x86_64 2.3.1-11.el7 base
执行安装
unixODBC-devel
包[hayson@localhost otp_src_19.3]$ sudo yum install unixODBC-devel
安装完后,重新执行配置目录
[hayson@localhost otp_src_19.3]$ sudo ./configure --prefix=/opt/erlang
安装
Erlang
执行如下命令编译安装
[hayson@localhost otp_src_19.3]$ sudo make [hayson@localhost otp_src_19.3]$ sudo make install
配置环境变量
[hayson@localhost otp_src_19.3]$ sudo vim /etc/profile
在
/etc/profile
中写入如下内容# Erlang ERLANG_HOME=/usr/local/erlang export PATH=$PATH:${ERLANG_HOME}/bin export ERLANG_HOME
启动
Erlang shell
[hayson@localhost otp_src_19.3]$ erl Erlang/OTP 19 [erts-8.3] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] Eshell V8.3 (abort with ^G) 1>
启动成功,退出
Erlang shell
1> halt().
2、安装RabbitMQ
下载
RabbitMQ
的3.6.14
版本,官网下载为rabbitmq-server-generic-unix-3.6.14.tar.xz
[hayson@localhost ~]$ ls rabbitmq-server-generic-unix-3.6.14.tar.xz
解压
rabbitmq-server-generic-unix-3.6.14.tar.xz
到/opt
目录[hayson@localhost ~]$ sudo tar -xvf rabbitmq-server-generic-unix-3.6.14.tar.xz -C /usr/local
修改解压的目录
rabbitmq_server-3.6.14
为rabbitmq
[hayson@localhost ~]$ cd /usr/local [hayson@localhost local]$ sudo mv rabbitmq_server-3.6.14 rabbitmq
修改
rabbitmq
目录及目录用户组和用户为hayson
[hayson@localhost local]$ sudo chgrp -R hayson rabbitmq [hayson@localhost local]$ sudo chown -R hayson rabbitmq
配置环境变量
[hayson@localhost local]$ sudo vim /etc/profile
写入如下内容
RABBITMQ_HOME=/usr/local/rabbitmq export PATH=$PATH:${RABBITMQ_HOME}/sbin export RABBITMQ_HOME
启动
rabbitmq
[hayson@localhost local]$ cd rabbitmq [hayson@localhost rabbitmq]$ rabbitmq-server RabbitMQ 3.6.14. Copyright (C) 2007-2017 Pivotal Software, Inc. ## ## Licensed under the MPL. See http://www.rabbitmq.com/ ## ## ########## Logs: /opt/rabbitmq/var/log/rabbitmq/[email protected] ###### ## /opt/rabbitmq/var/log/rabbitmq/[email protected] ########## Starting broker... completed with 0 plugins.
输出如上信息,
RabbitMQ
启动成功。上面是以当前
Shell
窗口运行并打印信息,一旦关闭终端后便停止运行,不推荐使用该命令运行。所以在rabbitmq-server
命令后面添加一个参数-detached
[hayson@localhost rabbitmq]$ rabbitmq-server -detached
可以让
RabbitMQ
以守护进程方式在后台运行,不会因为当前Shell
窗口的关闭而停止运行。查看
RabbitMQ
启动状态通过
rabbitmqctl status
[hayson@localhost rabbitmq]$ rabbitmqctl status
如果
RabbitMQ
正常启动,无输出红色错误信息。通过
rabbitmqctl cluster_status
[hayson@localhost rabbitmq]$ rabbitmqctl cluster_status Cluster status of node rabbit@localhost [{nodes,[{disc,[rabbit@localhost]}]}, {running_nodes,[rabbit@localhost]}, {cluster_name,<<"rabbit@localhost">>}, {partitions,[]}, {alarms,[{rabbit@localhost,[]}]}]
以上通过查看集群信息来查看
RabbitMQ
是否启动成功。以上目前只有一个RabbitMQ
服务节点,可以看作单节点的集群通过端口查看
[hayson@localhost rabbitmq]$ lsof -i:5672 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME beam 89238 hayson 51u IPv6 197613 0t0 TCP *:amqp (LISTEN)
RabbitMQ
默认端口为5672
,通过查看该端口可以查看到*:amqp(LISTEN)
在监听状态通过
ps
命令[hayson@localhost rabbitmq]$ ps -ef | grep rabbitmq hayson 102312 1 0 11月13 ? 00:03:37 /usr/local/erlang/lib/erlang/erts-8.3/bin/beam -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/local/erlang/lib/erlang -progname erl -- -home /home/hayson -- -pa /usr/local/rabbitmq/ebin -noshell -noinput -s rabbit boot -sname rabbit@localhost -boot start_sasl -config /usr/local/rabbitmq/etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/usr/local/rabbitmq/var/log/rabbitmq/[email protected]"} -rabbit sasl_error_logger {file,"/usr/local/rabbitmq/var/log/rabbitmq/[email protected]"} -rabbit enabled_plugins_file "/usr/local/rabbitmq/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/local/rabbitmq/plugins" -rabbit plugins_expand_dir "/usr/local/rabbitmq/var/lib/rabbitmq/mnesia/rabbit@localhost-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/usr/local/rabbitm /var/lib/rabbitmq/mnesia/rabbit@localhost" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 -noshell -noinput
启动成功,输出
rabbitmq
相关信息,未启动无信息。
开启
webui
界面管理默认情况下,安装
RabbitMQ
并启动成功,并不会开启任何插件[hayson@localhost rabbitmq]$ rabbitmq-server RabbitMQ 3.6.14. Copyright (C) 2007-2017 Pivotal Software, Inc. ## ## Licensed under the MPL. See http://www.rabbitmq.com/ ## ## ########## Logs: /opt/rabbitmq/var/log/rabbitmq/[email protected] ###### ## /opt/rabbitmq/var/log/rabbitmq/[email protected] ########## Starting broker... completed with 0 plugins.
如果需要通过浏览器访问
RabbitMQ
管理界面,要开启rabbitmq_management
插件查看
RabbitMQ
所有插件[hayson@localhost ~]$ rabbitmq-plugins list -v Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on rabbit@localhost |/ [ ] rabbitmq_management Version: 3.6.14 Dependencies: [amqp_client,cowboy,cowlib,rabbitmq_web_dispatch, rabbitmq_management_agent] Description: RabbitMQ Management Console
可以看到
rabbitmq_management
就是RabbitMQ
的web管理插件,还需要同时开启其他的5
个插件。开启
rabbitmq_management
插件[hayson@localhost ~]$ rabbitmq-plugins enable rabbitmq_management The following plugins have been enabled: amqp_client cowlib cowboy rabbitmq_web_dispatch rabbitmq_management_agent rabbitmq_management Applying plugin configuration to rabbit@localhost... started 6 plugins.
共开启了
6
个插件。查看插件列表,前面出现e*
标记表示开启[hayson@localhost ~]$ rabbitmq-plugins list Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on rabbit@localhost |/ [e*] amqp_client 3.6.14 [e*] cowboy 1.0.4 [e*] cowlib 1.0.2 [ ] rabbitmq_consistent_hash_exchange 3.6.14 [ ] rabbitmq_event_exchange 3.6.14 [ ] rabbitmq_federation 3.6.14 [E*] rabbitmq_management 3.6.14 [e*] rabbitmq_management_agent 3.6.14 [e*] rabbitmq_web_dispatch 3.6.14
重启
rabbitmq
,通过rabbitmqctl status
可以看到http
服务开启,占用端口15672
,并且通过查看启动状态和端口15672
看到监听状态。[hayson@localhost ~]$ rabbitmqctl shutdown [hayson@localhost ~]$ rabbitmq-server -detached [hayson@localhost ~]$ rabbitmqctl status | grep listeners {listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{http,15672,"::"}]}, [hayson@localhost sbin]$ lsof -i:15672 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME beam 89238 hayson 52u IPv4 197670 0t0 TCP *:15672 (LISTEN)
配置防火墙端口以便外网浏览器访问
[hayson@localhost ~]$ sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent success [hayson@localhost ~]$ sudo firewall-cmd --reload success
用户登录
webui
管理界面默认用户
guest
登录默认情况下,访问
RabbitMQ
服务的用户名和密码都是guest
,这个账户有限制,默认只能通过本地网络(如localhost
)访问,远程网络访问受限,可以通过配置文件rabbitmq.config
进行配置外网访问[hayson@localhost ~]$ cd /usr/local/rabbitmq/etc/rabbitmq [hayson@localhost rabbitmq]$ vim rabbitmq.config
写入如下内容
[ {rabbit, [{loopback_users,[]}]} ].
保存后,重启
RabbitMQ
,可以在外网浏览器通过默认用户guest
登录。创建用户登录
默认情况下,访问
RabbitMQ
服务的用户名和密码都是guest
,这个账户有限制,默认只能通过本地网络(如localhost
)访问,远程网络访问受限,通过配置可以设置外网访问,但不推荐。所以需要另外创建一个用户创建用户
[hayson@localhost rabbitmq]$ rabbitmqctl add_user admin admin Creating user "admin"
为用户设置权限
设置用户
admin
访问名为“/(所有)”的虚拟主机,并对所有.*(正则)
的资源具有配置权限,并对所有资源执行写入.*(正则)
和读取.*(正则)
权限资源:[hayson@localhost rabbitmq]$ rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" Setting permissions for user "admin" in vhost "/"
设置用户为管理员角色
[hayson@localhost rabbitmq]$ rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator]
查看
RabbitMQ
用户[hayson@localhost rabbitmq]$ rabbitmqctl list_users Listing users admin [administrator] guest [administrator]
可以看到用户
admin
为管理员权限
外网浏览器打开并输入用户名和密码登录,进入管理页面
3、本节RabbitMQ相关命令
# 启动rabbitmq,在当前Shell窗口打开并打印信息,关闭窗口后停止运行,不推荐使用
rabbitmq-server
# 启动rabbitmq,以守护进程方式在后台运行,不会因为当前Shell窗口的关闭而停止运行。
rabbitmq-server -detached
# 关闭rabbitmq
rabbitmqctl shutdown
# 查看所有插件,后面加 -v 显示详细信息
rabbitmq-plugins list
# 开启插件,后面加插件名
rabbitmq-plugins enable pluginName
# 关闭插件
rabbitmq-plugins disable pluginName
# 查看rabbitmqctl所有命令
rabbitmqctl
# rabbitmq启动状态
rabbitmqctl status
# 创建rabbitmq用户名和密码
rabbitmqctl add_user username password
# 设置用户admin访问名为“/(所有)”的虚拟主机,并对所有.*(正则)的资源具有配置权限,并对所有资源执行写入.*(正则)和读取.*(正则)权限资源:
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 设置用户为管理员角色
rabbitmqctl set_user_tags admin administrator
# 查看rabbitmq所有用户
rabbitmqctl list_users