RabbitMQ的安装
RabbitMQ是由LShift提供的一个Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能,健壮以及可伸缩性出名的Erlang写成,因此也继承了这些优点。
二进制的安装方式,
我本地选择131这台服务器进行安装,修改hostname
[root@localhost ~]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:50:56:2F:74:85
inet addr:192.168.1.131 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe2f:7485/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22129 errors:0 dropped:0 overruns:0 frame:0
TX packets:8960 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:29664818 (28.2 MiB) TX bytes:581671 (568.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:240 (240.0 b) TX bytes:240 (240.0 b)
修改hostname
[root@localhost ~]# cd /etc/sysconfig/
[root@localhost sysconfig]# vim network
配置如下:
NETWORKING=yes
HOSTNAME=mqserver
修改hosts
[root@localhost sysconfig]# vim /etc/hosts
配置如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.131 mqserver
关闭防火墙:
[root@localhost sysconfig]# chkconfig iptables off
重启一下机器:
[root@localhost sysconfig]# reboot
将下载好的rabbitmq-server-3.6.10-1.el6.noarch.rpm
放到指定的目录下/usr/local/software
安装rabbitmq-server
[root@mqserver software]# rpm -ivh rabbitmq-server-3.6.10-1.el6.noarch.rpm
warning: rabbitmq-server-3.6.10-1.el6.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 6026dfca: NOKEY
error: Failed dependencies:
erlang >= R16B-03 is needed by rabbitmq-server-3.6.10-1.el6.noarch
socat is needed by rabbitmq-server-3.6.10-1.el6.noarch
缺少erlang-18.3-1.el6.x86_64.rpm
的依赖,到RabbitMQ的指定目录下去下载将erlang-18.3-1.el6.x86_64.rpm
也上传至指定目录,
erlang-18.2-1.el6.x86_64.rpm
针对centos6.*
版本的,erlang-18.2-1.el7.centos.x86_64.rpm
针对的centos7.*
版本
安装erlang
[root@mqserver software]# rpm -ivh erlang-18.3-1.el6.x86_64.rpm
注意安装erlang的时候有时候会报缺少包之类的错误,可以先执行下面的命令先下载好整个linux系统的一些依赖:
[root@mqserver software]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
验证Erlang是否安装成功
[root@mqserver software]# erl
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V7.3 (abort with ^G)
1>
再次去安装RabbitMQ服务
[root@mqserver software]# rpm -ivh rabbitmq-server-3.6.10-1.el6.noarch.rpm
warning: rabbitmq-server-3.6.10-1.el6.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 6026dfca: NOKEY
error: Failed dependencies:
socat is needed by rabbitmq-server-3.6.10-1.el6.noarch
再次提醒我们有一些依赖没有安装,将socat-1.7.3.2-1.el6.lux.x86_64.rpm
上传至当前目录
安装socat
[root@mqserver software]# rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm
再去安装rabbitmq
[root@mqserver software]# rpm -ivh rabbitmq-server-3.6.10-1.el6.noarch.rpm
启动rabbitmq服务:
[root@mqserver software]# cd /etc/init.d
[root@mqserver init.d]# ./rabbitmq-server restart
Restarting rabbitmq-server: RabbitMQ is not running
SUCCESS
rabbitmq-server.
查看默认端口5672(默认端口)是否启动,
[root@mqserver init.d]# lsof -i:5672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam 2793 rabbitmq 49u IPv6 35431 0t0 TCP *:amqp (LISTEN)
二进制方式安装方式总结:
- 安装erlang
- 安装socat
- 安装rabbitmq
使用tar包安装
本地使用133服务器进行安装
查看网卡
[root@mqserver software]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:50:56:2F:EC:B5
inet addr:192.168.1.133 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe2f:ecb5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:72432 errors:0 dropped:0 overruns:0 frame:0
TX packets:38885 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:95728391 (91.2 MiB) TX bytes:2941953 (2.8 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:744 (744.0 b) TX bytes:744 (744.0 b)
修改hostname
[root@localhost ~]# cd /etc/sysconfig/
[root@localhost sysconfig]# vim network
配置如下:
NETWORKING=yes
HOSTNAME=mqserver
修改hosts
[root@localhost sysconfig]# vim /etc/hosts
配置如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.133 mqserver
关闭防火墙:
[root@localhost sysconfig]# chkconfig iptables off
重启一下机器:
[root@localhost sysconfig]# reboot
将rabbitmq-server-generic-unix-3.6.10.tar.xz
和erlang-18.3-1.el6.x86_64.rpm
文件上传到指定目录下(/usr/local/software)
安装erlang,跟上面一样先安装一些依赖
[root@mqserver software]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
再去安装erlang
[root@mqserver software]# rpm -ivh erlang-18.3-1.el6.x86_64.rpm
解压tar包(关于tar的下载地址也在博客最上面的链接上)
[root@mqserver software]# tar -xvf rabbitmq-server-generic-unix-3.6.10.tar.xz
进入解压后的sbin目录下:
[root@mqserver software]# cd rabbitmq_server-3.6.10/sbin
[root@mqserver sbin]# ll
total 44
-rwxr-xr-x. 1 1023 1023 1480 May 25 06:55 rabbitmqctl
-rwxr-xr-x. 1 1023 1023 1885 May 25 06:55 rabbitmq-defaults
-rwxr-xr-x. 1 1023 1023 12095 May 25 06:55 rabbitmq-env
-rwxr-xr-x. 1 1023 1023 1362 May 25 06:55 rabbitmq-plugins
-rwxr-xr-x. 1 1023 1023 10971 May 25 06:55 rabbitmq-server
[root@mqserver sbin]# ./rabbitmq-server &
[1] 2127
[root@mqserver sbin]#
RabbitMQ 3.6.10. Copyright (C) 2007-2017 Pivotal Software, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /usr/local/software/rabbitmq_server-3.6.10/var/log/rabbitmq/rabbit@mqserver.log
###### ## /usr/local/software/rabbitmq_server-3.6.10/var/log/rabbitmq/rabbit@mqserver-sasl.log
##########
Starting broker...
completed with 0 plugins.
检查rabbitmq是否启动
[root@mqserver sbin]# lsof -i:5672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam 2216 root 48u IPv6 17882 0t0 TCP *:amqp (LISTEN)
停止服务:
[root@mqserver sbin]# ./rabbitmqctl stop
使用./rabbitmq-server -detached 也是后台启动
[root@mqserver sbin]# ./rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
[root@mqserver sbin]# lsof -i:5672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam 2601 root 48u IPv6 19438 0t0 TCP *:amqp (LISTEN)
编写二个脚本:start.sh
,stop.sh
[root@mqserver sbin]# vim start.sh
内容是
./rabbitmq-server -detached
[root@mqserver sbin]# vim stop.sh
内容是
./rabbitmqctl stop
授权,可以使用这二个脚本进行mq的启动和停止
[root@mqserver sbin]# chmod 777 start.sh stop.sh
[root@mqserver sbin]# ./stop.sh
Stopping and halting node rabbit@mqserver
[root@mqserver sbin]# lsof -i:5672
[root@mqserver sbin]# ./start.sh
Warning: PID file not written; -detached was passed.
[root@mqserver sbin]# lsof -i:5672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam 3017 root 48u IPv6 20001 0t0 TCP *:amqp (LISTEN)
RabbitMQ命令的基本操作
查看rabbitmq-server的所在位置,以下三个命令仅在二进制安装方式下有效
[root@mqserver ~]# type rabbitmq-server
rabbitmq-server is /usr/sbin/rabbitmq-server
管理插件的命令:
[root@mqserver sbin]# type rabbitmq-plugins
rabbitmq-plugins is hashed (/usr/sbin/rabbitmq-plugins)
rabbitmqctl指令的位置,rabbitmqctl指令很强大,下面我们会讲到
[root@mqserver ~]# type rabbitmqctl
rabbitmqctl is /usr/sbin/rabbitmqctl
了解一下强大的命令:rabbitmqctl
rabbitmqctl status:查看rabbitmq的运行状态。
[root@iZbp1jcwx7sfb1nwzrehy6Z sbin]# rabbitmqctl status
查看rabbitmqctl所有的命令
[root@mqserver ~]# rabbitmqctl
比如下面这些,查看当前mq的队列,exchanges,connections,channels,consumers等等
list_queues [-p <vhost>] [--offline|--online|--local] [<queueinfoitem> ...]
list_exchanges [-p <vhost>] [<exchangeinfoitem> ...]
list_bindings [-p <vhost>] [<bindinginfoitem> ...]
list_connections [<connectioninfoitem> ...]
list_channels [<channelinfoitem> ...]
list_consumers [-p <vhost>]
status
查看queues,刚开始安装rabbitmq的时候没有队列:
[root@mqserver init.d]# rabbitmqctl list_queues
Listing queues
查看exchanges
[root@mqserver init.d]# rabbitmqctl list_exchanges
Listing exchanges
amq.direct direct
direct
amq.match headers
amq.rabbitmq.log topic
amq.topic topic
amq.headers headers
amq.rabbitmq.trace topic
amq.fanout fanout
查看bingding,刚安装服务的时候也没有binding
[root@mqserver init.d]# rabbitmqctl list_bindings
Listing bindings
查看一些用户:
[root@mqserver init.d]# rabbitmqctl list_users
Listing users
guest [administrator]
查看vhosts
[root@mqserver init.d]# rabbitmqctl list_vhosts
Listing vhosts
/
添加一个用户:
[root@mqserver init.d]# rabbitmqctl add_user zhihao.miao 123456
Creating user "zhihao.miao"
[root@mqserver init.d]# rabbitmqctl list_users
Listing users
zhihao.miao []
guest [administrator]
此时发现zhihao.miao这个用户还没有权限。
设置权限,设置完成之后发现设置成功:
[root@mqserver init.d]# rabbitmqctl set_user_tags zhihao.miao administrator
Setting tags for user "zhihao.miao" to [administrator]
[root@mqserver init.d]# rabbitmqctl list_users
Listing users
zhihao.miao [administrator]
guest [administrator]
删除用户:
[root@iZbp1jcwx7sfb1nwzrehy6Z sbin]# rabbitmqctl delete_user zhihao.miao
Deleting user "admin"
[root@iZbp1jcwx7sfb1nwzrehy6Z sbin]# rabbitmqctl list_users
Listing users
guest [administrator]
停止rabbitmq
./rabbitmqctl stop
rabbitmq的参数设置
RabbitMQ配有默认内置设置。 在某些环境(例如开发和质量保证)中,这些可以是完全足够的。 如果运行正常,则可能根本不需要任何配置。 但是在一些情况下,我们需要配置一些参数区分于默认的配置。
比如rabbitmq的默认端口是5672,如何去改变它呢?
三种配置参数的方法
- 环境变量 Environment Variables
- 配置文件 Configuration File的方式(最常用的方式)
- 运行期更改参数和策略 Runtime Parameters and Policies
比如我想想rabbitmq默认的使用端口5672改为5673,那么怎么操作,使用配置文件 Configuration File的方式。
RabbitMQ核心应用, Erlang 服务and RabbitMQ 插件都会使用rabbitmq.config
进行相关参数配置。
如果是Generic UNIX
安装方式在$RABBITMQ_HOME/etc/rabbitmq/
的目录下放置rabbitmq.config
RPM的安装方式那么就在/etc/rabbitmq/
目录下放置rabbitmq.config
我的192.168.1.131
服务器上就是使用的RPM的安装方式,
vim rabbitmq.config
配置方式:
[
{rabbit, [{tcp_listeners, [5673]}]}
].
官网提供了一份rabbitmq.config示列,此示例文件包含您可能想要设置的大多数配置项(省略一些非常模糊的配置)以及这些设置的文档的示例。 所有配置项都在示例中注释掉,因此您可以取消注册所需的内容。请注意,不要将其当作一般的推荐配置。
其他的配置:
其他配置项插件的安装
查看当前可以安装的插件(使用tar安装的进入相关的解压包下的sbin目录):
[root@mqserver sbin]# cd /usr/sbin/
[root@mqserver sbin]# ./rabbitmq-plugins list
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@mqserver
|/
[ ] amqp_client 3.6.10
[ ] cowboy 1.0.4
[ ] cowlib 1.0.2
[ ] rabbitmq_amqp1_0 3.6.10
[ ] rabbitmq_auth_backend_ldap 3.6.10
[ ] rabbitmq_auth_mechanism_ssl 3.6.10
[ ] rabbitmq_consistent_hash_exchange 3.6.10
[ ] rabbitmq_event_exchange 3.6.10
[ ] rabbitmq_federation 3.6.10
[ ] rabbitmq_federation_management 3.6.10
[ ] rabbitmq_jms_topic_exchange 3.6.10
[ ] rabbitmq_management 3.6.10
[ ] rabbitmq_management_agent 3.6.10
[ ] rabbitmq_management_visualiser 3.6.10
[ ] rabbitmq_mqtt 3.6.10
[ ] rabbitmq_recent_history_exchange 3.6.10
[ ] rabbitmq_sharding 3.6.10
[ ] rabbitmq_shovel 3.6.10
[ ] rabbitmq_shovel_management 3.6.10
[ ] rabbitmq_stomp 3.6.10
[ ] rabbitmq_top 3.6.10
[ ] rabbitmq_tracing 3.6.10
[ ] rabbitmq_trust_store 3.6.10
[ ] rabbitmq_web_dispatch 3.6.10
[ ] rabbitmq_web_mqtt 3.6.10
[ ] rabbitmq_web_mqtt_examples 3.6.10
[ ] rabbitmq_web_stomp 3.6.10
[ ] rabbitmq_web_stomp_examples 3.6.10
[ ] sockjs 0.3.4```
安装管控页面:
[root@mqserver sbin]# ./rabbitmq-plugins enable rabbitmq_management
卸载插件:
[root@mqserver sbin]# ./rabbitmq-plugins enable rabbitmq_management
安装管控台之后,rabbitmq的web管控台默认占用的端口是15672
[root@mqserver sbin]# lsof -i:15672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam 3432 rabbitmq 50r IPv4 25122 0t0 TCP *:15672 (LISTEN)
默认的用户名密码是guest,guest,但是只能在localhost:15672或者127.0.0.1:15672上登录。
如何让guest来进行ip登录呢?
loopback用户,只能用localhost,127.0.0.1地址登录。如果将自己设置的用户加入到loopback_users,那么此时该用户也只能通过localhost,127.0.0.1地址进行登录了。
[root@mqserver sbin]# cd /etc/rabbitmq/
[root@mqserver rabbitmq]# vim rabbitmq.config
rabbitmq.config的内容如下,
[
{rabbit, [{tcp_listeners, [5672]},{loopback_users,[]}]}
].
重启rabbitmq服务,
[root@mqserver software]# cd /etc/init.d
[root@mqserver init.d]# ./rabbitmq-server restart
配置之后就可以使用guest用户访问http://192.168.1.131:15672/#
就可以了。
网友评论