为了语句通顺易理解,我不会直译
为了翻译效率,且水平有限,我不会所有翻译
英文废话较多,总结版请看:RabbitMQ快速安装配置指南html
Description | Download | |
---|---|---|
RPM for RHEL 7.x, CentOS 7.x, Fedora 19+ (supports systemd, from Bintray) | rabbitmq-server-3.6.12-1.el7.noarch.rpm | (Signature) |
RPM for RHEL Linux 6.x, CentOS 6.x, Fedora prior to 19 (from Bintray) | rabbitmq-server-3.6.12-1.el6.noarch.rpm | (Signature) |
RPM for RHEL Linux 7.x, CentOS 7.x, Fedora 19+ (supports systemd, from GitHub) | rabbitmq-server-3.6.12-1.el7.noarch.rpm | (Signature) |
RPM for RHEL Linux 6.x, CentOS 6.x, Fedora prior to 19 (from GitHub) | rabbitmq-server-3.6.12-1.el6.noarch.rpm | (Signature) |
RPM for openSUSE Linux (from Bintray) | rabbitmq-server-3.6.12-1.suse.noarch.rpm | (Signature) |
RPM for SLES 11.x (from Bintray) | rabbitmq-server-3.6.12-1.sles11.noarch.rpm | (Signature) |
Fedora系统自带有rabbitmq-server,可是版本很旧。 因此最好就是从PackageCloud或者Bintray下载.rpm
文件来安装. 能够在 Fedora package 找到对应每一个系统版本的rabbitmq-server。node
从PackageCloud 和 Bintray这两个Yum仓库能够找到rpm安装包linux
好比RabbitMQ 3.6.3这个版本,它能在如下的支持rpm包管理器Linux分发版本上安装运行:git
The packages may work on other RPM-based distributions if dependencies (see below) are satisfied (e.g. using the Wheezy backports repository) but their testing and support is done on a best effort basis.github
安装RabbitMQ前须要安装Erlang或OTP,具体支持的版本请看这里。咱们强烈建议使用一个打包好的版本,如下有三个建议的安装渠道:web
如下是可选的安装Erlang的途径:数据库
1)经过如下的方式能够启用EPEL(EPEL FAQ)
For EL5:ubuntu
su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm' ... su -c 'yum install foo'
For EL6:segmentfault
su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm' ... su -c 'yum install foo'
For EL7:安全
su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm' ... su -c 'yum install foo'
For EL7:
yum install -y epel-release ... su -c 'yum install foo'
2)使用'root'用户执行一下命令便可安装Erlang:
yum install erlang
This is needed since Erlang Solutions' monolithic packages provide "esl-erlang"; this package just requires "esl-erlang" and provides "erlang".
yum version locking plugin is recommended to prevent unwanted Erlang upgrades. This is highly recommended when Erlang is installed via the Erlang Solutions repository.
下载rabbitmq-server的rpm包后用'root'用户执行一下命令安装:
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc yum install rabbitmq-server-3.6.12-1.noarch.rpm
Our public signing key is also available from Bintray:
rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc yum install rabbitmq-server-3.6.12-1.noarch.rpm
PackageCloud installs packages via HTTPS and signs them using their GPG key. There are multiple ways to install:
See PackageCloud RabbitMQ repository instructions
RabbitMQ服务端应该使用默认设置启动的,但你也能够自定义RabbitMQ的环境变量. Also see how to configure components.
刚安装的RabbitMQ server默认是不会之后台进程的方式启动的。执行命令: chkconfig rabbitmq-server on
便可设置当系统启动后之后台进程方式运行。
开启或关闭的命令:/sbin/service rabbitmq-server stop/start
.
注意: 服务端是以名称为rabbitmq
的系统用户身份运行的。若是你修改了Mnesia
数据库的位置或日志文件的位置,须要确保新目录是rabbitmq
这用户的(该用户具备访问权限)。
RabbitMQ的服务端默认是不会之后台进程的方式运行的。须要先设置后再启动。官网提供的chkconfig
、service
命令都会重定向到systemctl
命令,所以我直接列出systemctl
的命令:
功能 | 命令 |
---|---|
设置后台运行 | systemctl enable rabbitmq-server.service |
检查设置状态 | systemctl is-enabled rabbitmq-server.service |
启动 | systemctl start rabbitmq-server.service |
检查运行状态 | systemctl status rabbitmq-server.service |
中止 | systemctl stop rabbitmq-server.service |
SELinux(linux的安全子系统)及其它相似的机制会阻止RabbitMQ绑定端口。若是绑定端口失败,RabbitMQ会启动失败。防火墙能够阻止来自外部其它机器的访问。因此请确保如下端口是能够访问的:
端口 | 用途 |
---|---|
4369 | epmd, a peer discovery service used by RabbitMQ nodes and CLI tools |
5672, 5671 | used by AMQP 0-9-1 and 1.0 clients without and with TLS |
25672 | used by Erlang distribution for inter-node and CLI tools communication and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). See networking guide for details. |
15672 | HTTP API clients and rabbitmqadmin (only if the management plugin is enabled) |
61613, 61614 | STOMP clients without and with TLS (only if the STOMP plugin is enabled) |
1883, 8883 | ( MQTT clients without and with TLS, if the MQTT plugin is enabled |
15674 | STOMP-over-WebSockets clients (only if the Web STOMP plugin is enabled) |
15675 | MQTT-over-WebSockets clients (only if the Web MQTT plugin is enabled) |
It is possible to configure RabbitMQ to use different ports and specific network interfaces.
RabbitMQ默认用户账号及密码都是`guest`. Unconfigured clients will in general use these credentials.默认只能从本机访问。所以若是须要从其它机器访问RabbitMQ,须要作些设置。
请看access control相关的内容,里面会讲解如何建立用户,删除guest
用户, 或设置容许guest
用户远程访问RabbitMQ.
RabbitMQ若是是在生产环境中运行的话,须要调整系统限制和内核限制,以应对大量并发链接和高容量的队列。要调整的主要是容许打开文件的最大数量,即ulimit -n
命令显示的值。该默认值对消息中间件来讲过低了(通常是1024)。咱们推荐在生产环境中对系统用户rabbitmq
(默认运行RabbitMQ server的用户)至少要设置成65536,若是是开发环境则设置成4096。
实际上有两种限制:操做系统内核容许打开文件的最大数量(fs.file-max)、每一个用户容许打开文件的最大数量(ulimit -n)。前者必须高于后者。
在使用systemd工具的Linux系统中,操做系统的限制是经过配置这个文件来控制的:/etc/systemd/system/rabbitmq-server.service.d/limits.conf
, 例如能够设置成这样(如无文件请自行新建):
[Service] LimitNOFILE=300000
不用systemd
工具来调整每一个用户的限制的最直接方式是编辑rabbitmq-env.conf文件,编辑后,当RabbitMQ server重启时会执行ulimit命令,从而达到设置每一个用户容许打开文件的最大数量的目的:
ulimit -S -n 4096
以上经过执行ulimit
命令设置的方式,属于用soft limit方式设置,而soft limit不能高于hard limit(不少linux系统通常设置的hard limit值是4096)。hard limit能够在配置文件/etc/security/limits.conf
中设置。设置hard limit同时还须要启用pam_limits.so模块,最后还要从新登陆或重启一下系统。
设置hard limit:
# 编辑文件 vi /etc/security/limits.conf # 行末添加: * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536
启用pam_limits.so模块:
# 编辑文件 vi /etc/pam.d/login # 行末添加: session required pam_limits.so # 这是告诉Linux在用户完成系统登陆后,应该调用pam_limits.so模块设置 # 系统对该用户可以使用的各类资源数量的最大限制(包括用户可打开的最大文件数限制)
最后要从新登陆或重启系统,以使hard limit设置生效。
注意:运行中的RabbitMQ进程的限制值是没法修改的。所以设置后须要重启一下RabbitMQ:
systemctl daemon-reload systemctl restart rabbitmq-server.service
For more information about controlling fs.file-max with sysctl, please refer to the excellent Riak guide on open file limit tuning.
RabbitMQ management UI能够经过网页的形式查看剩余可用的文件打开时数量。而如下是经过命令行方式查看:
# 查看RabbitMQ server的状态,记住进程id:pid rabbitmqctl status # 查看设置的limits,$RABBITMQ_BEAM_PROCESS_PID用实际的进程id代替 cat /proc/$RABBITMQ_BEAM_PROCESS_PID/limits
咱们也能够用配置管理工具来调整系统限制的值(最大文件打开数量),如:Chef, Puppet, BOSH等。咱们的developer tools也列出了一些相关的模块和项目,欲了解请前往查阅。
咱们能够用service工具来启动或中止RabbitMQ server。也能够用RabbitMQ提供的rabbitmqctl工具(管理员权限打开)。正常的话该工具已经加入到系统环境变量Path中的了,能够直接调用。调用示例以下:
更多信息请看: info on rabbitmqctl.
RabbitMQ server的日志输入在RABBITMQ_LOG_BASE目录下的RABBITMQ_NODENAME.log文件。多出来的日志数据会写入到RABBITMQ_NODENAME-sasl.log文件。
RabbitMQ server会采用append(新日志写入到日志文件末端)的方式记录日志,因此日志文件中记录的是完整的历史记录。
你能够用logrotate
程序来作日志滚动和日志压缩。默认状况下logrotate
的脚本会每周运行一次。处理/var/log/rabbitmq
目录下的日志文件。如需配置logrotate,请查阅:/etc/logrotate.d/rabbitmq-server