rabbitmq 的安裝啟動(linux)

rabbitmq依賴于Erlang,需先安裝,推薦安裝rabbitmq/erlang-rpm

#clone源碼git clone https://github.com/rabbitmq/erlang-rpm.git#makecd erlang-rpmmake? #需要等待較長時間cd RPMS/x86_64? #其下有兩個rpm包 erlang-19.3.6-1.alios6.x86_64.rpm? erlang-debuginfo-19.3.6-1.alios6.x86_64.rpm, 選擇前者安裝#安裝sudo rpm -ivh? erlang-19.3.6-1.alios6.x86_64.rpm


官網(wǎng)下載頁面找到和系統(tǒng)版本對應的rabbitmq版本:

#安裝rabbitmq-serversudo yum install rabbitmq-server-3.6.10-1.el6.noarch.rpm#此時可能報:Requires: socat, 以下是解決方法, 參考:http://www.cnblogs.com/ray30th/p/6651800.htmlsudo wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.reposudo yum makecachesudo yum install socat#重新安裝rabbitmq-serversudo yum install rabbitmq-server-3.6.10-1.el6.noarch.rpm

啟動/關閉/狀態(tài)查看

#啟動/停止 start/stop$sudo /sbin/service rabbitmq-server startStarting rabbitmq-server: SUCCESSrabbitmq-server.$sudo /sbin/service rabbitmq-server stopStopping rabbitmq-server: rabbitmq-server.#狀態(tài)查看sudo rabbitmqctl status
















SELinux和與其機制類似的系統(tǒng)可能會阻止RabbtMQ綁定相應端口,所以安裝完之后需要確保一下端口可以打開:

4369,epmd(Erlang Port Mapper Daemon),是Erlang的端口/結點名稱映射程序,用來跟蹤節(jié)點名稱監(jiān)聽地址,在集群中起到一個類似DNS的作用。

5672, 5671, AMQP 0-9-1 和 1.0 客戶端端口,used by AMQP 0-9-1 and 1.0 clients without and with TLS(Transport Layer Security)

25672,Erlang distribution,和4369配合

15672,HTTP_API端口,管理員用戶才能訪問,用于管理RbbitMQ,需要啟用management插件,rabbitmq-plugins enable rabbitmq_management,訪問http://server-name:15672/

61613, 61614,當STOMP插件啟用的時候打開,作為STOMP客戶端端口(根據(jù)是否使用TLS選擇)

1883, 8883,當MQTT插件啟用的時候打開,作為MQTT客戶端端口(根據(jù)是否使用TLS選擇)

15674,基于WebSocket的STOMP客戶端端口(當插件Web STOMP啟用的時候打開)

15675,基于WebSocket的MQTT客戶端端口(當插件Web MQTT啟用的時候打開)

參考

Installing on RPM-based Linux(Port Access)

RabbitMQ~開篇與環(huán)境部署

用戶權限管理

RabbitMQ有一個默認的用戶"guest",密碼也是"guest",這個用戶默認只能通過本機訪問,eg:http://localhost:15672/,在通過http訪問之前記得啟用management插件:

$rabbitmq-pluginsenablerabbitmq_management

要讓其他機器可以訪問,需要創(chuàng)建一個新用戶,為其分配權限。用戶權限可以通過rabbitmqctl執(zhí)行相關命令來維護,rabbitmqctl是管理rabbitmq的命令行管理工具,下面介紹相關的命令:

用戶管理

list_users,用戶列表

add_user {username} {password},添加用戶

delete_user {username},刪除用戶

change_password {username} {newpassword},修改密碼

clear_password {username},刪除密碼,密碼刪除后就不能訪問了。This user now cannot log in with a password (but may be able to through e.g. SASL EXTERNAL if configured)

authenticate_user {username} {password},用戶認證

set_user_tags {username} {tag...},為用戶設置角色,tag可以是0個、一個、或多個,eg:rabbitmqctl set_user_tags chris administrator,設置為管理員;rabbitmqctl set_user_tags chris,清除chris與角色的關聯(lián)。

#用戶列表查看$sudo rabbitmqctl list_usersListing usersguest? [administrator]#添加用戶$sudo rabbitmqctl add_user chris 123Creating user "chris"#為用戶分配權限$sudo rabbitmqctl set_user_tags chris administratorSetting tags for user "chris" to [administrator]#然后就可以通過http://host:15672 登錄management界面管理rabbitmq了,但此時用戶chris還沒有訪問隊列資源的權限

權限管理

RabbitMQ客戶端連接到一個服務端的時候,在它的操作指令中指定了一個虛擬主機。服務端首先檢查是否有訪問該虛擬主機的權限,沒有權限的會拒絕連接。

對于exchanges和queues等資源,位于某個虛擬主機內;不同虛擬主機內即便名稱相同也代表不同的資源。當特定操作在資源上執(zhí)行時第二級訪問控制開始生效。

RabbitMQ在某個資源上區(qū)分了配置、寫和讀操作。配置操作創(chuàng)建或者銷毀資源,或者更改資源的行為。寫操作將消息注入進資源之中。讀操作從資源中獲取消息。

要執(zhí)行特定操作用戶必須授予合適的權限。

下面介紹相關命令:

list_vhosts [vhostinfoitem...],獲取vhosts列表

add_vhost {vhost}, eg:rabbitmqctl add_vhost test

delete_vhost {vhost}

set_permissions [-pvhost] {user} {conf} {write} {read},給用戶分在對應的vhost上分配相應的權限。eg:rabbitmqctl set_permissions -p /myvhost chris "^chris-.*" ".*" ".*",這條指令,給用戶chris在myvhost分配了權限,權限包括:以"chris-"開頭的全部資源的配置權限,和所有資源的讀寫權限

clear_permissions [-pvhost] {username},清除權限

list_permissions [-pvhost],vhost權限分配列表

list_user_permissions {username},user權限列表

$sudo rabbitmqctl set_permissions -p / chris".*"".*"".*"Setting permissions for user "chris" in vhost "/"#此時用戶chris才有訪問隊列資源的權限

參考

rabbitmqctl(1) manual page(User management, Access control)

System Limits

rabbitmq會維持大量的網(wǎng)絡連接,所以系統(tǒng)允許同時打開的最大文件數(shù)需要調整。推薦的允許同時打開的最大文件數(shù)為65535。有兩個地方需要設置:

系統(tǒng)每個用戶允許的最大同時打開文件數(shù),ulimit -n,可以通過ulimit -n size設置

系統(tǒng)允許的最大同時打開文件數(shù),fs.file-max

系統(tǒng)級限制查看與設置:

#查看$ cat /proc/sys/fs/file-max184289$ cat /proc/sys/fs/file-nr1024? ? 0? ? 184289#已分配文件句柄的數(shù)目? ? 分配了但沒有使用的句柄數(shù)? 文件句柄最大數(shù)目#設置$echo284289 > /proc/sys/fs/file-max

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容