一 rabbitmq 簡介
RabbitMQ 是當(dāng)今最主流的消息中間件之一。它是一個開源的AMQP實現(xiàn),服務(wù)器端用Erlang語言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息,在易用性、擴展性、高可用性等方面表現(xiàn)優(yōu)異。
在安裝rabbitmq的時候需要注意rabbitmq 和erlang版本的關(guān)系,如果兩者關(guān)系不一一對應(yīng)的話,那么會導(dǎo)致出錯的。
rabbitmq 版本和 erlang 的關(guān)系
我們接下來的安裝的版本和環(huán)境是:
- 系統(tǒng)平臺:CentOS 7
- erlang版本:21.2
- rabbit-server版本:3.7.12
rabbit-server 默認使用的端口 :
5672(AMQP端口) 和15672(web),還有其他不常用端口未列出,見官網(wǎng)。
如在公網(wǎng)上訪問,需要開放這兩個端口。
二 erlang 安裝
- 2.1 安裝依賴包
yum -y install make gcc gcc-c++ m4 ncurses-devel openssl-devel unixODBC-devel
- 2.2 下載erlang依賴包
cd /tmp && wget http://erlang.org/download/otp_src_21.2.tar.gz
- 2.3 解壓
tar xzf otp_src_21.2.tar.gz
- 2.4 創(chuàng)建文件夾
mkdir /usr/local/erlang
- 2.5 編譯并安裝erlang
cd otp_src_21.2 ./configure --prefix=/usr/local/erlang --without-javac make && make install
- 2.6 添加環(huán)境變量
vi + /etc/profile # 添加以下內(nèi)容 export PATH=$PATH:/usr/local/erlang/bin
- 2.7 讓環(huán)境變量生效
source /etc/profile
- 2.8 檢驗安裝
erl -version # 能夠正確輸出下面的內(nèi)容表示安裝完成 Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.2
三 rabbitmq rpm安裝 (二進制安裝和rpm安裝二選一)
安裝rabbitmq前必須先安裝符合要求的erlang
- 3.1 下載RabbitMQ安裝包。
cd /tmp && wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.12/rabbitmq-server-3.7.12-1.el7.noarch.rpm
- 3.2 導(dǎo)入簽名密鑰。
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
- 3.3 安裝 socat
yum install socat -y
- 3.3 安裝RabbitMQ Server。
yum install rabbitmq-server-3.7.12-1.el7.noarch.rpm
如果在此遇到的錯誤見文章第七點顯示的錯誤收錄
- 3.4 允許RabbitMQ開機自啟動。
systemctl enable rabbitmq-server
- 3.5 啟動RabbitMQ。
systemctl start rabbitmq-server
- 3.6 暫停RabbitMQ。
systemctl stop rabbitmq-server
四 rabbitmq 二進制安裝(rpm 安裝和二進制安裝二選一)
安裝rabbitmq前必須先安裝符合要求的erlang
- 4.1 下載rabbitmq 二進制安裝
cd /tmp && wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.12/rabbitmq-server-generic-unix-3.7.12.tar.xz
- 4.2 解壓
tar -xf rabbitmq-server*.tar.xz
- 4.3 移動到指定路徑
mv /tmp/rabbitmq_server-3.7.12 /usr/local/rabbitmq_server
- 4.4 添加環(huán)境變量
vi + /etc/profile # 添加以下內(nèi)容 export PATH=$PATH:/usr/local/rabbitmq_server/sbin
- 4.5 環(huán)境變量生效
source /etc/profile
- 4.6 啟動rabbitmq server
rabbitmq-server
- 4.7 后臺啟動
rabbitmq-server -detached
- 4.8 關(guān)閉rabbitmq
rabbitmqctl shutdown
- 4.9 創(chuàng)建配置文件
在 $ RABBITMQ_HOME 的目錄下創(chuàng)建
#rabbitmq 配置文件 touch ./etc/rabbitmq/rabbitmq.conf #rabbitmq 環(huán)境變量文件 touch ./etc/rabbitmq/rabbitmq-env.conf
- 4.10 設(shè)定 rabbitmq的家目錄路徑
vim ./sbin/rabbitmq-defaults # 修改 SYS_PREFIX = SYS_PREFIX =rabbitmq 家目錄路徑。
五 初始化并配置用戶和啟用web界面
- 5.1 刪除默認用戶
對于生產(chǎn)環(huán)境,請刪除默認用戶(guest),默認用戶只能從localhost 連接。
rabbitmqctl delete_user guest
- 5.2 創(chuàng)建新用戶并設(shè)置為管理員
建議每個應(yīng)用程序都使用單獨的用戶。
rabbitmqctl add_user 用戶名 密碼 rabbitmqctl set_user_tags 用戶名 administrator
- 5.3 設(shè)置用戶權(quán)限
設(shè)置用戶djx 具有 /這個virtual host的所有的資源的配置、寫、讀權(quán)限
rabbitmqctl set_permissions -p / djx '.*' '.*' '.*'
- 5.4 啟用web 界面
rabbitmq-plugins enable rabbitmq_management
- 5.5 訪問
訪問路徑: http://ip:15672
出現(xiàn)以下界面就意味著搭建成功了
六 常用命令
官網(wǎng)文檔鏈接
- 6.1 查看rabbitmq server 狀態(tài)
rabbitmqctl status
- 6.2 查看已用的組件,內(nèi)存使用情況,警報
rabbitmq-diagnostics status
- 6.3 查看有效的節(jié)點配置
rabbitmq-diagnostics environment
- 6.4 對本地節(jié)點執(zhí)行更廣泛的運行狀況檢查
rabbitmq-diagnostics node_health_check
- 6.5 virtual host操作
每個VirtualHost相當(dāng)于一個相對獨立的RabbitMQ服務(wù)器,每個virtual host相互隔離 # 添加virtual host rabbitmqctl add_vhost ${hostname} # 刪除virtual host rabbitmqctl delete_vhost ${hostname} # 列出所有的virtual host rabbitmqctl list_vhosts name tracing # 設(shè)置某個用戶對于某個host 的權(quán)限 set_permissions [-p vhost] user conf write read 示例1: rabbitmqctl set_permissions -p my-vhost janeway “^janeway-.*” “.*” “.*” 表示設(shè)置用戶 janeway 對于host名為 my-vhost的以janeway-為開頭的資源具有讀寫權(quán)限 示例2: rabbitmqctl set_permissions -p my-vhost djx “.*” “.*” “.*” 表示設(shè)置用戶 djx 對于host名為 my-vhost的所有的資源具有讀寫權(quán)限 # 刪除用戶權(quán)限 clear_permissions [-p vhost] username 示例: rabbitmqctl clear_permissions -p my-vhost janeway 刪除用戶 janeway 對host my-vhost 的權(quán)限 # 查看virtual host已有的用戶和權(quán)限 rabbitmqctl list_permissions -p ${主機名}
- 6.6 用戶操作
# 添加用戶 rabbitmqctl add_user {用戶名} {密碼} # 設(shè)置用戶角色,除了管理員用戶,還有監(jiān)控者(monitoring),普通管理者(management),策略制定者(policymaker) management User can access the management plugin policymaker User can access the management plugin and manage policies and parameters for the vhosts they have access to. monitoring User can access the management plugin and see all connections and channels as well as node-related information. administrator User can do everything monitoring can do, manage users, vhosts and permissions, close other user’s connections, and manage policies and parameters for all vhosts. 示例 rabbitmqctl set_user_tags {用戶名} administrator/monitoring/management # 查看用戶列表 rabbitmqctl list_users # 給用戶賦予權(quán)限 rabbitmqctl set_permissions -p {virtual host名稱} 用戶名 配置權(quán)限 寫權(quán)限 讀權(quán)限 示例 rabbitmqctl set_permissions -p / djx '.*' '.*' '.*' # 查看用戶權(quán)限 rabbitmqctl list_user_permissions {用戶名} # 查看已有的用戶和權(quán)限 rabbitmqctl list_permissions -p '{virtual host名}' # 刪除用戶 rabbitmqctl delete_user {用戶名} # 修改用戶的密碼 rabbitmqctl change_password {用戶名} {新密碼}
七 錯誤解決方法
- 問題1
如果在 yum install rabbitmq-server-3.7.12-1.el7.noarch.rpm 遇到了erlang依賴錯誤的話,
實際我們是已經(jīng)安裝erlang,但是rabbitmq-server 還是檢測不到,我重載了環(huán)境變量還是不行。
解決辦法
先忽略依賴問題安裝
rpm -i --nodeps rabbitmq-server-3.7.12-1.el7.noarch.rpm
然后更改rabbitmq的啟動加載的環(huán)境配置文件 /usr/lib/rabbitmq/bin/rabbitmq-env。在里面開頭添加
source /etc/profile
或者嘗試方法:添加一個軟連接
ln -s /usr/local/erlang/bin/erl /usr/bin/erl
八 rabbitmq 生產(chǎn)環(huán)境應(yīng)該注意的地方
見文章 RabbitMQ 生產(chǎn)環(huán)境配置詳解 http://www.sfodin.cn/Linux/2019-03/157354.htm