1. 程式人生 > 其它 >CentOS 8安裝RabbitMQ

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解決方法