目录

  • Erlang安装
  • RabbitMQ安装
  • 启动/关闭/状态查看
  • 访问端口
    • 参考
  • 用户权限管理
    • 用户管理
    • 权限管理
    • 参考
  • System Limits
    • 参考
  • 日志

本文只讨论linux下的Rabbitmq安装。

Erlang安装

rabbitmq依赖于Erlang,需先安装,推荐安装rabbitmq/erlang-rpm:

#clone源码
git clone https://github.com/rabbitmq/erlang-rpm.git
#make
cd erlang-rpm
make  #需要等待较长时间
cd RPMS/x86_64  #其下有两个rpm包 erlang-19.3.6-1.alios6.x86_64.rpm  erlang-debuginfo-19.3.6-1.alios6.x86_64.rpm, 选择前者安装
#安装
sudo rpm -ivh  erlang-19.3.6-1.alios6.x86_64.rpm

RabbitMQ安装

在官网下载页面找到和系统版本对应的rabbitmq版本:

#安装rabbitmq-server
sudo yum install rabbitmq-server-3.6.10-1.el6.noarch.rpm
#此时可能报:Requires: socat, 以下是解决方法, 参考:http://www.cnblogs.com/ray30th/p/6651800.html
sudo wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
sudo yum makecache
sudo yum install socat
#重新安装rabbitmq-server
sudo yum install rabbitmq-server-3.6.10-1.el6.noarch.rpm

启动/关闭/状态查看

#启动/停止 start/stop
$sudo /sbin/service rabbitmq-server start
Starting rabbitmq-server: SUCCESS
rabbitmq-server.$sudo /sbin/service rabbitmq-server stop
Stopping rabbitmq-server: rabbitmq-server.#状态查看
sudo rabbitmqctl status

其中状态查看会返回详细的状态信息:

[{pid,2022},{running_applications,[{rabbit,"RabbitMQ","3.6.10"},{os_mon,"CPO  CXC 138 46","2.4.2"},{rabbit_common,"Modules shared by rabbitmq-server and rabbitmq-erlang-client","3.6.10"},{ranch,"Socket acceptor pool for TCP protocols.","1.3.0"},{ssl,"Erlang/OTP SSL application","8.1.3"},{public_key,"Public key infrastructure","1.4"},{crypto,"CRYPTO","3.7.4"},{compiler,"ERTS  CXC 138 10","7.0.4"},{asn1,"The Erlang ASN1 compiler version 4.0.4","4.0.4"},{xmerl,"XML parser","1.3.14"},{syntax_tools,"Syntax tools","2.1.1"},{mnesia,"MNESIA  CXC 138 12","4.14.3"},{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.5] [source] [64-bit] [smp:2:2] [async-threads:64] [hipe] [kernel-poll:true]\n"},{memory,[{total,53336792},{connection_readers,0},{connection_writers,0},{connection_channels,0},{connection_other,0},{queue_procs,2832},{queue_slave_procs,0},{plugins,0},{other_proc,20729016},{mnesia,60688},{metrics,184080},{mgmt_db,0},{msg_index,42608},{other_ets,2138344},{binary,116568},{code,21389077},{atom,891849},{other_system,7962978}]},{alarms,[]},{listeners,[{clustering,25672,"::"},{amqp,5672,"0.0.0.0"}]},{vm_memory_high_watermark,0.4},{vm_memory_limit,1660447948},{disk_free_limit,50000000},{disk_free,94489919488},{file_descriptors,[{total_limit,65435},{total_used,2},{sockets_limit,58889},{sockets_used,0}]},{processes,[{limit,1048576},{used,152}]},{run_queue,0},{uptime,15},{kernel,{net_ticktime,60}}]

访问端口

SELinux和与其机制类似的系统可能会阻止RabbtMQ绑定相应端口,所以安装完之后需要确保一下端口可以打开:

  • 4369,epmd(Erlang Port Mapper Daemon),是Erlang的端口/结点名称映射程序,用来跟踪节点名称监听地址,在集群中起到一个类似DNS的作用。
  • 5672, 5671, AMQP 0-9-1 和 1.0 客户端端口,used by AMQP 0-9-1 and 1.0 clients without and with TLS(Transport Layer Security)
  • 25672,Erlang distribution,和4369配合
  • 15672,HTTP_API端口,管理员用户才能访问,用于管理RbbitMQ,需要启用management插件,rabbitmq-plugins enable rabbitmq_management,访问http://server-name:15672/
  • 61613, 61614,当STOMP插件启用的时候打开,作为STOMP客户端端口(根据是否使用TLS选择)
  • 1883, 8883,当MQTT插件启用的时候打开,作为MQTT客户端端口(根据是否使用TLS选择)
  • 15674,基于WebSocket的STOMP客户端端口(当插件Web STOMP启用的时候打开)
  • 15675,基于WebSocket的MQTT客户端端口(当插件Web MQTT启用的时候打开)

参考

Installing on RPM-based Linux(Port Access)
RabbitMQ~开篇与环境部署

用户权限管理

RabbitMQ有一个默认的用户"guest",密码也是"guest",这个用户默认只能通过本机访问,eg:http://localhost:15672/,在通过http访问之前记得启用management插件:

$rabbitmq-plugins enable rabbitmq_management

要让其他机器可以访问,需要创建一个新用户,为其分配权限。用户权限可以通过rabbitmqctl执行相关命令来维护,rabbitmqctl是管理rabbitmq的命令行管理工具,下面介绍相关的命令:

用户管理

  • list_users,用户列表
  • add_user {username} {password},添加用户
  • delete_user {username},删除用户
  • change_password {username} {newpassword},修改密码
  • clear_password {username},删除密码,密码删除后就不能访问了。This user now cannot log in with a password (but may be able to through e.g. SASL EXTERNAL if configured)
  • authenticate_user {username} {password},用户认证
  • set_user_tags {username} {tag ...},为用户设置角色,tag可以是0个、一个、或多个,eg:rabbitmqctl set_user_tags chris administrator,设置为管理员;rabbitmqctl set_user_tags chris,清除chris与角色的关联。
#用户列表查看
$sudo rabbitmqctl list_users
Listing users
guest   [administrator]
#添加用户
$sudo rabbitmqctl add_user chris 123
Creating user "chris"
#为用户分配权限
$sudo rabbitmqctl set_user_tags chris administrator
Setting tags for user "chris" to [administrator]
#然后就可以通过http://host:15672 登录management界面管理rabbitmq了,但此时用户chris还没有访问队列资源的权限

权限管理

RabbitMQ客户端连接到一个服务端的时候,在它的操作指令中指定了一个虚拟主机。服务端首先检查是否有访问该虚拟主机的权限,没有权限的会拒绝连接。

对于exchanges和queues等资源,位于某个虚拟主机内;不同虚拟主机内即便名称相同也代表不同的资源。当特定操作在资源上执行时第二级访问控制开始生效。

RabbitMQ在某个资源上区分了配置、写和读操作。配置操作创建或者销毁资源,或者更改资源的行为。写操作将消息注入进资源之中。读操作从资源中获取消息。

要执行特定操作用户必须授予合适的权限。

下面介绍相关命令:

  • list_vhosts [vhostinfoitem ...],获取vhosts列表
  • add_vhost {vhost}, eg:rabbitmqctl add_vhost test
  • delete_vhost {vhost}
  • set_permissions [-p vhost] {user} {conf} {write} {read},给用户分在对应的vhost上分配相应的权限。eg:rabbitmqctl set_permissions -p /myvhost chris "^chris-.*" ".*" ".*",这条指令,给用户chris在myvhost分配了权限,权限包括:以"chris-"开头的全部资源的配置权限,和所有资源的读写权限
  • clear_permissions [-p vhost] {username},清除权限
  • list_permissions [-p vhost],vhost权限分配列表
  • list_user_permissions {username},user权限列表
$sudo rabbitmqctl set_permissions -p / chris ".*" ".*" ".*"
Setting permissions for user "chris" in vhost "/"
#此时用户chris才有访问队列资源的权限

参考

rabbitmqctl(1) manual page(User management, Access control)

System Limits

rabbitmq会维持大量的网络连接,所以系统允许同时打开的最大文件数需要调整。推荐的允许同时打开的最大文件数为65535。有两个地方需要设置:

  • 系统每个用户允许的最大同时打开文件数,ulimit -n,可以通过ulimit -n size设置
  • 系统允许的最大同时打开文件数,fs.file-max

系统级限制查看与设置:

#查看
$ cat /proc/sys/fs/file-max
184289
$ cat /proc/sys/fs/file-nr
1024    0    184289
#已分配文件句柄的数目    分配了但没有使用的句柄数   文件句柄最大数目#设置
$echo 284289 > /proc/sys/fs/file-max

ulimit 命令详解

ulimit用于shell启动进程所占用的资源,是shell内建命令。

参数介绍:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytesLinux

可以通过rabbitmqctl status查看当前的限制状态,status中的file_descriptors描述了当前的限制:

{file_descriptors,[{total_limit,65435},{total_used,2},{sockets_limit,58889},{sockets_used,0}]},{processes,[{limit,1048576},{used,330}]}

参考

rabbitmqctl(1) manual page (Controlling System Limits on Linux)
linux限制打开文件数量

日志

Rabbitmq默认日志路径:/var/log/rabbitmq/,路径之下有两类日志文件:

  • rabbit@{hostname}.log,输出rabbitmq运行相关的信息,如网络流量、用户、交换器、队列等信息
  • rabbit@{hostname}-sasl.log,Erlang运行相关信息

转载于:https://www.cnblogs.com/chrischennx/p/7071471.html

RabbitMQ安装与初始配置相关推荐

  1. RabbitMQ安装与初始配置【转载】

    Erlang安装 rabbitmq依赖于Erlang,需先安装,推荐安装rabbitmq/erlang-rpm: #clone源码 git clone https://github.com/rabbi ...

  2. SAP手记之六:GUI安装后初始配置(中文语言包安装)

    SAP手记之六:GUI安装后初始配置(中文语言包安装) 在初始配置前先要了解的东西,这些东西在我们按照好sap客户端应用程序GUI的时候就可以看到: 元素一:client       如何理解clie ...

  3. 用友ERP U8 V13.0安装、初始配置中遇到的问题及解决方法

    问题1:企业应用平台登录,显示当前数据库服务器无可用数据源 解决路径1:应用服务器配置 新建 数据源 数据源:不设限 数据库服务器:127.0.0.1(本地机的IP地址)或者在SMSS中找计算机的服务 ...

  4. Git自学之路(二)- Git初始配置和基本使用

    Git自学之路- Git初始配置和基本使用 在学习完本文之后,你应该能够配置并初始化一个仓库(repository).开始或停止跟踪(track)文件.暂存(stage)或提交(commit)更改. ...

  5. centos7.1 RabbitMQ安装配置

    1. 安装erlang  安装依赖环境 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unix ...

  6. Windows下RabbitMQ安装,部署,配置

    安装部署 1.当前环境以及参考资料出处 部署环境:windows server 2008 r2 enterprise 官方安装部署文档:http://www.rabbitmq.com/install- ...

  7. centos7 rabbitmq安装/配置

    一.RabbitMQ简单介绍 RabbitMQ就是当前最主流的消息中间件之一.RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..N ...

  8. CentOS7下RabbitMq安装和开机自启动配置

    安装RabbitMq 由于rabbitmq是用erlang语言编写所以需要先安装erlang 1.在安装erlang之前先安装下依赖文件(这一步不要忘掉了, 不然后面./configure的时候要报错 ...

  9. RabbitMQ安装+配置远程访问+集群(windows)

    RabbitMQ安装+配置远程访问+集群(windows) 1.安装RabbitMQ 1.下载安装包: 运行环境erlang: http://www.erlang.org/downloads 安装包: ...

最新文章

  1. ef 排序string转int_排序算法之基本排序算法
  2. netstat 和 losf
  3. spark shuffle的写操作之准备工作
  4. 客服中心智能化技术和应用研究报告(2021年)
  5. Asp.net网站开发架构设计要求
  6. javascrip中setTimeout和setInterval
  7. 触发器及其应用实验报告总结_555时基电路及其应用
  8. AndroidDeveloper Weekly No.5
  9. Apache 开启伪静态模块
  10. [源码和报告分享]基于Android-JavaEE-DB2实现的旧物交易平台
  11. Proface触摸屏与三菱PLC软件仿真(或连接实体PLC)
  12. YDOOK:ANSYS 进行电磁场仿真的第三步:施加边界条件和载荷
  13. Java:class6 继承
  14. jQuery阶梯手风琴图片布局
  15. Excel隔行插入空白行
  16. jQuery实现密保互斥问题
  17. 洞察数据中隐藏的故事——网易有数的“正确”使用方式
  18. 2021年施工升降机司机(建筑特殊工种)考试题及施工升降机司机(建筑特殊工种)找解析
  19. 2019你为什不选择创业?是因为什么原因?
  20. 智能家居之红外遥控---手机万能红外遥控器

热门文章

  1. Web开发兼容性系列文章(一):不同设备浏览器的userAgent值大全
  2. 0x0806 ARP协议分析
  3. 怎样理解js数组中indexOf()的用法与lastIndexOf
  4. 2018.08.20高二互测
  5. 【java 类加载的深入研究1】loadClass()的研究
  6. 20110612 DiscuzNT代码研究(3)
  7. 查看网关物理地址命令
  8. 用nrm一键切换npm源
  9. ElasticSearch大数据分布式弹性搜索引擎使用—从0到1
  10. 错误记录​:使用CLLocationManager不走代理方法