爲了語句通順易理解,我不會直譯
爲了翻譯效率,且水平有限,我不會所有翻譯
英文廢話較多,總結版請看: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