CentOS RabbitMQ 3.8.9安裝
RabbitMQ簡介
在搭建RabbitMQ之前實現要介紹一下MQ,MQ是什麼?
MQ全稱是Message Queue,可以理解為訊息佇列的意思,簡單來說就是訊息以管道的方式進行傳遞
RabbitMQ是一個實現了AMQP(Advanced Message Queuing Protocol)高階訊息佇列協議的訊息佇列服務,用Erlang語言的
RabbitMQ有成千上萬的使用者,是最受歡迎的開源訊息代理之一。從T-Mobile到Runtastic,RabbitMQ在全球範圍內的小型初創企業和大型企業中都得到使用
RabbitMQ輕巧,易於在內部和雲中部署。它支援多種訊息傳遞協議。RabbitMQ可以部署在分散式和聯合配置中,以滿足大規模,高可用性的要求
RabbitMQ可在許多作業系統和雲環境上執行,併為大多數流行語言提供了廣泛的開發人員工具
RabbitMQ環境版本
jdk | erlang | rabbitmq |
1.8 | 23.1 | 3.8.9 |
下載JDK1.8並且安裝
[root@Mike-Node1 ~]# wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz [root@Mike-Node1 ~]# tar zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/ && rm -rf jdk-8u202-linux-x64.tar.gz [root@Mike-Node1 ~]# mv /usr/local/jdk1.8.0_202/ /usr/local/jdk/ [root@Mike-Node1 ~]# vim /etc/profile #set java environment JAVA_HOME=/usr/local/jdk CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH [root@Mike-Node1 ~]# source /etc/profile [root@Mike-Node1 ~]# [root@Mike-Node1 ~]# java -version java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode) [root@Mike-Node1 ~]#
jdk1.8到此安裝完成,只要 java -version 出來版本號就可以
安裝依賴包
[root@Mike-Node1 ~]# yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf
安裝Erlang
下表提供了當前支援的RabbitMQ版本系列的Erlang相容性列表。對於已到期的RabbitMQ版本,請參閱
最低要求的Erlang / OTP | 最大支援的Erlang / OTP | 筆記 | |
---|---|---|---|
3.8.9 | 22.3 | 23.x |
[root@Mike-Node1 ~]# mkdir /data && cd /data [root@Mike-Node1 /data]# [root@Mike-Node1 /data]# wget http://erlang.org/download/otp_src_23.1.tar.gz [root@Mike-Node1 /data]# tar zxvf otp_src_23.1.tar.gz [root@Mike-Node1 /data]# cd otp_src_23.1 [root@Mike-Node1 /data/otp_src_23.1]# [root@Mike-Node1 /data/otp_src_23.1]# ./otp_build autoconf [root@Mike-Node1 /data/otp_src_23.1]# ./configure && make && make install [root@Mike-Node1 /data/otp_src_23.1]# cd [root@Mike-Node1 ~]# [root@Mike-Node1 ~]# erl Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe] Eshell V11.1 (abort with ^G) 1> [root@Mike-Node1 ~]#
進入erlang命令列表示安裝成功
安裝Socat
[root@Mike-Node1 ~]# yum install -y socat
安裝RabbitMQ
[root@Mike-Node1 ~]# rpm -Uvh https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.9/rabbitmq-server-3.8.9-1.el7.noarch.rpm --nodeps Retrieving https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.9/rabbitmq-server-3.8.9-1.el7.noarch.rpm warning: /var/tmp/rpm-tmp.WZYQYx: Header V4 RSA/SHA256 Signature, key ID 6026dfca: NOKEY Preparing... ################################# [100%] Updating / installing... 1:rabbitmq-server-3.8.9-1.el7 ################################# [100%] [root@Mike-Node1 ~]#
如果遇到erlang已安裝且版本正確,但是RabbitMQ檢測失敗的情況
可以追加引數 —nodeps (不驗證軟體包依賴)
啟動RabbitMQ
[root@Mike-Node1 ~]# systemctl enable rabbitmq-server Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service. [root@Mike-Node1 ~]# [root@Mike-Node1 ~]# systemctl start rabbitmq-server [root@Mike-Node1 ~]# systemctl status rabbitmq-server
Web外掛安裝
[root@Mike-Node1 ~]# rabbitmq-plugins enable rabbitmq_management Enabling plugins on node rabbit@Mike-Node1: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@Mike-Node1... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch started 3 plugins. [root@Mike-Node1 ~]#
配置使用者遠端
[root@Mike-Node1 ~]# vi /etc/rabbitmq/rabbitmq.config [ {loopback_users, []} ]. [root@Mike-Node1 ~]#
修改預設配置檔案路徑
rabbitmq預設資料目錄和日誌路徑
預設資料目錄 /var/lib/rabbitmq/mnesia
日誌路徑 /var/log/rabbitmq/
配置檔案路徑 /etc/rabbitmq/
建立新的資料檔案和日誌檔案目錄並給許可權
[root@Mike-Node1 ~]# mkdir -p /data/rabbitmq/log [root@Mike-Node1 ~]# mkdir -p /data/rabbitmq/mnesia [root@Mike-Node1 ~]# chmod -R 755 /data/rabbitmq [root@Mike-Node1 ~]# chown -R rabbitmq:rabbitmq /data/rabbitmq
建立或者新增環境引數配置檔案
[root@Mike-Node1 ~]# vim /etc/rabbitmq/rabbitmq-env.conf RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia RABBITMQ_LOG_BASE=/data/rabbitmq/log [root@Mike-Node1 ~]#
重啟RabbitMQ
[root@Mike-Node1 ~]# systemctl restart rabbitmq-server
開放防火牆埠
####firewalld防火牆 [root@Mike-Node1 ~]# firewall-cmd --zone=public --add-port=5672/tcp --permanent [root@Mike-Node1 ~]# firewall-cmd --zone=public --add-port=15672/tcp --permanent [root@Mike-Node1 ~]# firewall-cmd --reload ####iptables防火牆 [root@Mike-Node1 ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT [root@Mike-Node1 ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT [root@Mike-Node1 ~]# systemctl restart iptables
訪問管理頁面
http://IP:15672
賬號和密碼預設都是guest
建立管理使用者
#新增使用者(使用者admin,密碼admin) [root@Mike-Node1 ~]# rabbitmqctl add_user admin admin Adding user "admin" ... #設定使用者角色(admin為管理員) [root@Mike-Node1 ~]# rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator] ... #設定使用者許可權(接受來自所有Host的所有操作) [root@Mike-Node1 ~]# rabbitmqctl set_permissions -p "/" admin '.*' '.*' '.*' Setting permissions for user "admin" in vhost "/" ... #檢視使用者許可權 [root@Mike-Node1 ~]# rabbitmqctl list_user_permissions admin Listing permissions for user "admin" ... vhost configure write read / .* .* .* [root@Mike-Node1 ~]#
然後使用 admin 管理員使用者登入web管理頁面
使用者和密碼是上面新增設定的 admin admin
RabbitMQ常用命令
# 新增使用者 rabbitmqctl add_user <username> <password> # 刪除使用者 rabbitmqctl delete_user <username> # 修改使用者密碼 rabbitmqctl change_password <username> <newpassword> # 清除使用者密碼(該使用者將不能使用密碼登陸,但是可以通過SASL登陸如果配置了SASL認證) rabbitmqctl clear_password <username> # 設定使用者tags(相當於角色,包含administrator,monitoring,policymaker,management) rabbitmqctl set_user_tags <username> <tag> # 列出所有使用者 rabbitmqctl list_users # 建立一個vhosts rabbitmqctl add_vhost <vhostpath> # 刪除一個vhosts rabbitmqctl delete_vhost <vhostpath> # 列出vhosts rabbitmqctl list_vhosts [<vhostinfoitem> ...] # 針對一個vhosts給使用者賦予相關許可權; rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read> # 清除一個使用者對vhosts的許可權; rabbitmqctl clear_permissions [-p <vhostpath>] <username> # 列出哪些使用者可以訪問該vhosts; rabbitmqctl list_permissions [-p <vhostpath>] # 列出使用者訪問許可權; rabbitmqctl list_user_permissions <username>
本文分享完畢,感謝支援點贊~~
1.配置使用者遠端