CentOS 8安裝RabbitMQ
第一步:安裝yum倉庫
匯入簽名KEY:
## primary RabbitMQ signing key ## 這一步如果因為網路問題下載不成功,可以先將簽名檔案下載下來,本地匯入 rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc ## modern Erlang repository rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey ## RabbitMQ server repository rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
手動配置Yum源:
新建檔案“/etc/yum.repos.d/rabbitmq.repo”,編輯如下內容:
# In /etc/yum.repos.d/rabbitmq.repo ## ## Zero dependency Erlang ## [rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 ## ## RabbitMQ server ## [rabbitmq_server] name=rabbitmq_server baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/8/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_server-source] name=rabbitmq_server-source baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/8/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
第二步:執行安裝
更新Yum包元資料:
yum update -y
特別地,在騰訊雲主機CentOS 8.2作業系統上安裝時遇到無法從AppStream下載
問題,解決辦法參考:完美解決CentOS8 yum安裝AppStream報錯,更新yum後無法makecache的問題
另外還要注意:騰訊雲主機的CentOS 8.2作業系統基礎yum倉庫檔案的名字都是“CentOS-Linux-.repo”,而不是標準的“CentOS-.repo”命名方式,所以修改的時候不要搞錯檔案。
//TODO:騰訊雲CentOS8.2對應yum倉庫檔案命名.jpg
安裝依賴:
## install these dependencies from standard OS repositories yum install socat logrotate -y
安裝Erlang和RabbitMQ:
## install RabbitMQ and zero dependency Erlang from the above repositories,
## ignoring any versions provided by the standard repositories
yum install --repo rabbitmq_erlang --repo rabbitmq_server erlang rabbitmq-server -y
第三步:啟動服務
設定開機啟動:
chkconfig rabbitmq-server on
安裝服務工具:
yum -y install initscripts
啟動服務:
# 啟動服務
/sbin/service rabbitmq-server start
# 檢視服務狀態
/sbin/service rabbitmq-server status
# 停止服務
/sbin/service rabbitmq-server stop
檢視服務埠是否已經正常:
netstat -anpt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 84521/beam.smp
tcp6 0 0 :::5672 :::* LISTEN 84521/beam.smp
預設服務埠5672
已經處於監聽狀態,表明RabbitMQ服務啟動成功。
第四步:啟用Web管理
RabbitMQ的Web管理介面是通過外掛實現的,預設並不啟用,所以在檢視埠的時候也不會看到管理埠“15672”在監聽。
手動啟用Web管理外掛:rabbitmq-plugins enable rabbitmq_management
。
再次檢視監聽埠:
netstat -anpt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 84521/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 84521/beam.smp
tcp6 0 0 :::5672 :::* LISTEN 84521/beam.smp
檢視外掛列表狀態;
rabbitmq-plugins list
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@VM-24-10-centos
|/
[ ] rabbitmq_amqp1_0 3.9.13
[ ] rabbitmq_auth_backend_cache 3.9.13
[ ] rabbitmq_auth_backend_http 3.9.13
[ ] rabbitmq_auth_backend_ldap 3.9.13
[ ] rabbitmq_auth_backend_oauth2 3.9.13
[ ] rabbitmq_auth_mechanism_ssl 3.9.13
[ ] rabbitmq_consistent_hash_exchange 3.9.13
[ ] rabbitmq_event_exchange 3.9.13
[ ] rabbitmq_federation 3.9.13
[ ] rabbitmq_federation_management 3.9.13
[ ] rabbitmq_jms_topic_exchange 3.9.13
[E*] rabbitmq_management 3.9.13
[e*] rabbitmq_management_agent 3.9.13
[ ] rabbitmq_mqtt 3.9.13
[ ] rabbitmq_peer_discovery_aws 3.9.13
[ ] rabbitmq_peer_discovery_common 3.9.13
[ ] rabbitmq_peer_discovery_consul 3.9.13
[ ] rabbitmq_peer_discovery_etcd 3.9.13
[ ] rabbitmq_peer_discovery_k8s 3.9.13
[ ] rabbitmq_prometheus 3.9.13
[ ] rabbitmq_random_exchange 3.9.13
[ ] rabbitmq_recent_history_exchange 3.9.13
[ ] rabbitmq_sharding 3.9.13
[ ] rabbitmq_shovel 3.9.13
[ ] rabbitmq_shovel_management 3.9.13
[ ] rabbitmq_stomp 3.9.13
[ ] rabbitmq_stream 3.9.13
[ ] rabbitmq_stream_management 3.9.13
[ ] rabbitmq_top 3.9.13
[ ] rabbitmq_tracing 3.9.13
[ ] rabbitmq_trust_store 3.9.13
[e*] rabbitmq_web_dispatch 3.9.13
[ ] rabbitmq_web_mqtt 3.9.13
[ ] rabbitmq_web_mqtt_examples 3.9.13
[ ] rabbitmq_web_stomp 3.9.13
[ ] rabbitmq_web_stomp_examples 3.9.13
可以看到跟Web管理相關的外掛都啟用了。
至此,雖然RabbitMQ的Web管理外掛已經啟用,但是隻能在通過本機地址開啟Web介面,如果希望從遠端訪問Web介面(大多數場景就是這樣的),還需要進行配置。
預設情況下,啟動RabbitMQ Server是沒有明確指定配置檔案的,也就是我們無法修改允許遠端訪問Web管理介面的引數。
# grep 'config file' /var/log/rabbitmq/[email protected]
2022-03-17 16:51:36.534481+08:00 [info] <0.230.0> config file(s) : (none) # 從這裡可以看出RabbitMQ在啟動時沒有明確指定配置檔案
解決辦法:
(1)通過環境變數RABBITMQ_CONFIG_FILE
指定RabbitMQ配置檔案路徑
# vim .bashrc
export RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf
檔案/etc/rabbitmq/rabbitmq.conf
可能不存在,建立一個即可。
RabbitMQ的配置檔案引數示例:rabbitmq.conf.example,可以直接下載下來使用,裡面都是預設配置引數。
(2)修改允許遠端訪問Web介面的引數:將loopback_users.guest
引數修改為false
loopback_users.guest = false
(3)重啟RabbitMQ服務
/sbin/service rabbitmq-server stop
/sbin/service rabbitmq-server start
現在再來看RabbitMQ是否在啟動時使用了指定配置檔案:
grep 'config file' /var/log/rabbitmq/[email protected]
2022-03-17 16:51:36.534481+08:00 [info] <0.230.0> config file(s) : (none)
2022-03-17 17:22:09.174170+08:00 [info] <0.230.0> config file(s) : /etc/rabbitmq/rabbitmq.conf # 顯然,從啟動日誌看RabbitMQ現在使用了指定的配置檔案
【參考】
https://github.com/rabbitmq/rabbitmq-server/blob/master/deps/rabbit/docs/rabbitmq.conf.example RabbitMQ官方配置檔案示例
https://www.rabbitmq.com/relocate.html RabbitMQ環境變數含義
https://blog.csdn.net/qq_27198345/article/details/115384898 RabbitMQ的預設配置檔案地址
https://blog.csdn.net/PacosonSWJTU/article/details/114198834 rabbitmq啟動失敗-報Failed to load advanced configuration file解決方法