RabbitMQ指南(一) 安装和基本操作

1.1 准备

  1、一台Linux服务器,作为学习,我在VMWare上安装了带有用户界面的CentOS7系统,下载地址:
  https://www.centos.org/download/
  版本:CentOS-7-x86_64-Everything-1804.iso
  2、Erlang安装包,RabbitMQ依赖于Erlang语言,下载地址:
  http://www.erlang.org/downloads
  版本:otp_src_21.1.tar.gz
  3、RabbitMQ安装包,下载地址:
  http://www.rabbitmq.com/install-generic-unix.html
  版本:rabbitmq-server-generic-unix-3.7.8.tar.xz
  4、OpenSSL安装包,下载地址:
  https://www.openssl.org/source
  版本:openssl-1.1.1.tar.gz
  如果使用其他版本,可能会遇到别的问题。我曾使用otp_src_19.3.tar.gz版本的安装包,erlang ssl总是会有问题。

1.2 安装

1.2.1 配置本地yum源

  按照经验,在安装过程中,总会出现缺少各种包的情况。所以如果处于离线环境,在安装之前,建议先配置一下本地yum源,将CentOS的安装iso文件上传至Linux服务器上,将其挂载,此处挂载至/mnt/centos7路径下:

[root@centos7 mnt]# mount -o loop CentOS-7-x86_64-Everything-1804.iso /mnt/centos7/

  进入路径/etc/yum.repo.d下,删除所有文件,新建centos.repo文件,文件内容为:

[centos7]
name=centos repo
baseurl=file:///mnt/centos7
gpgcheck=0

  即可使用本地yum源进行安装。

1.2.2 安装OpenSSL

  首先需安装OpenSSL,将OpenSSL安装包上传至服务器,解压安装包并安装,其中/usr/local/openssl是安装路径:

[root@centos7 ~]# tar -xvf openssl-1.1.1.tar.gz
[root@centos7 ~]# cd openssl-1.1.1/
[root@centos7 openssl-1.1.1]# ./config --prefix=/usr/local/openssl
[root@centos7 openssl-1.1.1]# make && make install

1.2.3 安装Erlang

  将Erlang安装包上传至Linux服务器,解压安装包:

[root@centos7 ~]# tar -xvf otp_src_21.1.tar.gz

  进入解压出来的otp_src_21.1文件夹:

[root@centos7 ~]# cd otp_src_21.1

  检查配置:

[root@centos7 otp_src_21.1]# ./configure --prefix=/usr/local/erlang --with-ssl=/usr/local/openssl

  其中,–prefix=/usr/local/erlang指Erlang安装的路径;–with-ssl=/usr/lib64/openssl指明OpenSSL的路径,若无OpenSSL,后续RabbitMQ安装时将报错。
  检查时应关注报错信息,从下图可以看到,有一些组件不存在,导致相关功能不启用,不影响后续安装。
Erlang检查配置
  检查过程中可能产生报错:

configure: error: No curses library functions found

  该报错由于缺少ncurses-devel,安装可解决:

[root@centos7 otp_src_21.1]# yum install ncurses-devel

  Erlang检查通过,即可进行编译、安装:

[root@centos7 otp_src_21.1]# make && make install

  安装完成后,进入Erlang安装目录,验证安装正确:

[root@centos7 otp_src_21.1]# cd /usr/local/erlang/bin
[root@centos7 bin]# ./erl

  若出现以下内容,说明Erlang正确安装:

Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V9.2 (abort with ^G)
1> 

  输入“ssl:versions().”,回车,若无报错,说明erlang ssl正确安装,可继续进行后续的安装。输入“halt().”回车退出。

1.2.4 安装RabbitMQ

  将RabbitMQ安装包上传至Linux服务器,解压即可:

[root@centos7 ~]# xz -d rabbitmq-server-generic-unix-3.7.8.tar.xz
[root@centos7 ~]# tar -xvf rabbitmq-server-generic-unix-3.7.8.tar

  解压后得到文件夹rabbitmq_server-3.7.8。进入rabbitmq_server-3.7.8的sbin目录,启动RabbitMQ服务端:

[root@centos7 sbin]# ./rabbitmq-server

  如果出现了下面这只兔子,就说明RabbitMQ启动成功了。
RabbitMQ启动
  以这样的方式启动,退出当前的会话,RabbitMQ也将随之关闭,如果想后台运行,使用下面的指令:

[root@centos7 sbin]# ./rabbitmq-server -detached

  查看RabbitMQ状态:

[root@centos7 sbin]# ./rabbitmqctl status

  可将sbin路径添加至环境变量,这样在任何位置都可以直接输入rabbitmq-server命令启动RabbitMQ,vi .bash_profile,加入以下内容:

#set rabbitmq environment
export PATH=$PATH:/usr/local/rabbitmq/rabbitmq_server-3.7.8/sbin

1.3 基本操作

1.3.1 虚拟主机和用户管理

  RabbitMQ服务端可建立多个虚拟主机(vhost),不同虚拟主机之间是隔离的,拥有自己独立的交换机、队列、绑定关系、用户权限等。如此不同的系统或业务可使用不同的虚拟主机,方便解决用户权限管理、交换机和队列命名冲突等问题。
  在RabbitMQ服务端安装完毕后,已默认配有名为“/”的虚拟主机。虚拟主机相关的操作可使用rabbitmqctl工具进行。常用命令如下。
  添加虚拟主机:

[root@centos7 sbin]# ./rabbitmqctl add_vhost vhostname

  删除虚拟主机:

[root@centos7 sbin]# ./rabbitmqctl delete_vhost vhostname

  查看当前已建立的虚拟主机列表:

[root@centos7 sbin]# ./rabbitmqctl list_vhosts

  用户管理相关的常用命令如下。
  创建用户:

[root@centos7 sbin]# ./rabbitmqctl add_user username password

  为用户分配角色:

[root@centos7 sbin]# ./rabbitmqctl set_user_tags username administrator

  RabbitMQ用户的角色包括none、management、policymaker、monitoring、administrator,各角色权限如下。
  none:
  不能访问management-plugins
  management:
  (1)可通过AMQP做的任何事;
  (2)列出自己可以通过AMQP登入的虚拟主机;
  (3)查看自己的虚拟主机中的队列(Queue)、交换机(Exchange)、绑定规则(Binding);
  (4)查看和关闭自己的信道(Channel)和连接(Connection);
  (5)查看有关自己的虚拟主机的“全局”的统计信息,包括其他用户在这些虚拟主机中的活动。
  policymaker:
  management的所有权限,以及:
  查看、创建和删除自己的虚拟主机下的策略(Policy)和参数(Parameter)
  monitoring:
  management的所有权限,以及:
  (1)列出所有虚拟主机(包括自身无权限的);
  (2)查看其他用户的信道和连接;
  (3)查看节点级别的数据,如集群节点和内存使用情况
  (4)查看所有虚拟主机的全局的统计信息;
  administrator:
  policymaker和monitoring的所有权限,以及:
  (1)创建和删除虚拟主机;
  (2)查看、创建和删除用户;
  (3)查看创建和删除权限;
  (4)关闭其他用户的连接;
  设置访问权限,命令末尾的三个“.*”分别代表配置权限、写权限、读权限:

[root@centos7 sbin]# ./rabbitmqctl set_permissions -p vhostname username ".*" ".*" ".*"

  删除用户:

[root@centos7 sbin]# ./rabbitmqctl delete_user username

  更改密码:

[root@centos7 sbin]# ./rabbimqctl change_password username newpassword

1.3.2 RabbitMQ网页管理工具

  RabbitMQ提供的管理和监控工具,分rabbitmq-plugins和rabbitmqctl两种类型的工具。rabbitmq-plugins提供HTTP API监控和管理RabbitMQ;rabbitmqctl是命令行工具,适合通过SSH登陆的管理。
  进入RabbitMQ的sbin目录,通过以下命令启用rabbitmq-plugins:

[root@centos7 sbin]# ./rabbitmq-plugins enable rabbitmq_management

  出现以下提示,启动成功:
RabbitMQ插件启动
  使用浏览器,登入“http://[rabbitmq-server]:15672”,即可进入管理工具的登录页面:
RabbitMQ网页管理工具登录
  RabbitMQ默认初始配有用户guest(密码guest),出于安全考虑,guest用户只能在localhost:15672登录。进入RabbitMQ的sbin目录,使用以下命令添加用户:

添加用户,指定用户名、密码
[root@centos7 sbin]# ./rabbitmqctl add_user mqtester mqtester
将用户设置为管理员(administrator)才可远程访问
[root@centos7 sbin]# ./rabbitmqctl set_user_tags mqtester administrator
设置用户的权限,指定允许访问的vhost以及write/read
[root@centos7 sbin]# ./rabbitmqctl set_permissions -p "/" mqtester ".*" ".*" ".*"
查看可访问vhost(/)的用户
[root@centos7 sbin]# ./rabbitmqctl list_permissions -p /

  创建完成后,即可使用mqtester用户进行远程登录。生产一般会删除guest用户。
  如果使用远程登录,注意关闭Linux服务器的防火墙,CentOS中使用以下指令关闭防火墙并禁止开机自动启动:

[root@centos7 ~]# systemctl stop firewalld.service
[root@centos7 ~]# systemctl disable firewalld.service 

1.4 配置文件

  RabbitMQ有三种方式更改系统运行的参数:
  (1)环境变量,包括Shell中和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的环境变量;
  (2)配置文件rabbitmq.config(旧格式)或rabbitmq.conf(新格式);
  (3)以rabbitmqctl修改运行时参数和策略。

1.4.1 环境变量

  可通过在Shell中设置环境变量的方式,将配置文件、日志文件和各类生成文件等路径指定在所需的目录下。
  常用的环境变量为配置文件路径和日志文件路径,其变量名和默认路径如下表。可在官网中查询到所有可配置的环境变量。其中“${install_prefix}”表示RabbitMQ解压后的路径,对于本文即为/usr/local/rabbitmq/rabbitmq_server-3.7.8。

变量 含义 默认路径
RABBITMQ_CONFIG_FILE 配置文件路径,其中文件名不包含其扩展名“.config” ${install_prefix}/etc/rabbitmq/rabbitmq
RABBITMQ_LOG_BASE RabbitMQ服务端生成的日志文件根路径 ${install_prefix}/var/log/rabbitmq
  进入路径/usr/local/rabbitmq/rabbitmq_server-3.7.8/var/log/rabbitmq,可以看到RabbitMQ的日志文件按默认生成在该路径下。

1.4.2 配置文件

  RabbitMQ默认并未带有配置文件,若需以配置文件进行相关设置,需自行创建并放置于默认路径下或以RABBITMQ_CONFIG_FILE环境变量指定的路径。
  在RabbitMQ 3.7.0版本前,配置文件是以Erlang Term的形式书写的,其扩展名须为“.config”,通常命名为rabbit.config,阅读与编写较为不便;在3.7.0版本开始支持新格式配置文件,新格式配置文件以“键=值”的形式书写,其扩展名须为“.conf”,通常命名为rabbit.conf,阅读与编辑较为简便。
  在RabbitMQ github中有新旧版本配置文件的示例文件:
  https://github.com/rabbitmq/rabbitmq-server/blob/v3.7.x/docs/rabbitmq.config.example
  https://github.com/rabbitmq/rabbitmq-server/blob/v3.7.x/docs/rabbitmq.conf.example
  可以该文件为基础,放开注释、修改设置值,变更所需的配置。

猜你喜欢

转载自blog.csdn.net/weixin_43533358/article/details/83448357
今日推荐