CentOs7.3 搭建 RabbitMQ 3.6 單機(jī)服務(wù) RabbitMQ簡(jiǎn)介
包河網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。RabbitMQ是一個(gè)開源的AMQP實(shí)現(xiàn),服務(wù)器端用Erlang語(yǔ)言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系統(tǒng)中存儲(chǔ)轉(zhuǎn)發(fā)消息,在易用性、擴(kuò)展性、高可用性等方面表現(xiàn)不俗。
AMQP,即Advanced message Queuing Protocol,高級(jí)消息隊(duì)列協(xié)議,是應(yīng)用層協(xié)議的一個(gè)開放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計(jì)。消息中間件主要用于組件之間的解耦,消息的發(fā)送者無(wú)需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、隊(duì)列、路由(包括點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱)、可靠性、安全。
環(huán)境 VMware版本號(hào):12.0.0 CentOS版本:CentOS 7.3.1611 虛擬機(jī)(IP):192.168.252.101 注意事項(xiàng)關(guān)閉防火墻
centos 6.x 關(guān)閉 iptables
$ service iptables stop # 關(guān)閉命令:
centos 7.x 關(guān)閉firewall
$ systemctl stop firewalld.service # 停止firewall
不想關(guān)閉防火墻,就開放15672端口,設(shè)置之后可以通過(guò)網(wǎng)頁(yè)方式管理MQ
安裝安裝iptables防火墻
yum install iptables-services
編輯配置
$ vi /etc/sysconfig/iptables-config
添加配置
iptables -I INPUT -p tcp --dport 5672 -j ACCEPT iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
保存配置
$ service iptables save
重啟
systemctl restart iptables.service
設(shè)置開機(jī)自啟動(dòng)
systemctl enable iptables.service
CentOS7.3 安裝 iptables 與詳細(xì)使用 https://segmentfault.com/a/1190000010713423
安裝 安裝 ErlangRabbitMQ 安裝需要依賴 Erlang 環(huán)境
$ cd /opt $ wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm $ yum install erlang-19.0.4-1.el7.centos.x86_64.rpm 安裝 RabbitMQ
$ cd /opt $ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm $ yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm 啟動(dòng)服務(wù)
$ service rabbitmq-server start 服務(wù)狀態(tài)
$ service rabbitmq-server status
# service rabbitmq-server status Redirecting to /bin/systemctl status rabbitmq-server.service ● rabbitmq-server.service - RabbitMQ broker Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2017-08-16 11:43:33 CST; 8s ago Main PID: 17919 (beam) Status: "Initialized" CGroup: /system.slice/rabbitmq-server.service ├─17919 /usr/lib64/erlang/erts-8.0.3/bin/beam -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K true -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /us... ├─18062 /usr/lib64/erlang/erts-8.0.3/bin/epmd -daemon ├─18160 erl_child_setup 1024 ├─18165 inet_gethost 4 └─18166 inet_gethost 4 Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: RabbitMQ 3.6.10. Copyright (C) 2007-2017 Pivotal Software, Inc. Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ## ## Licensed under the MPL. See http://www.rabbitmq.com/ Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ## ## Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ###### ## /var/log/rabbitmq/rabbit@localhost-sasl.log Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: ########## Aug 16 11:43:32 localhost.localdomain rabbitmq-server[17919]: Starting broker... Aug 16 11:43:33 localhost.localdomain rabbitmq-server[17919]: systemd unit for activation check: "rabbitmq-server.service" Aug 16 11:43:33 localhost.localdomain systemd[1]: Started RabbitMQ broker. Aug 16 11:43:33 localhost.localdomain rabbitmq-server[17919]: completed with 0 plugins. 查看日志
$ less /var/log/rabbitmq/rabbit@localhost.log
=INFO REPORT==== 16-Aug-2017::11:43:32 === Starting RabbitMQ 3.6.10 on Erlang 19.0.4 Copyright (C) 2007-2017 Pivotal Software, Inc. Licensed under the MPL. See http://www.rabbitmq.com/ =INFO REPORT==== 16-Aug-2017::11:43:32 === node : rabbit@localhost home dir : /var/lib/rabbitmq config file(s) : /etc/rabbitmq/rabbitmq.config (not found) cookie hash : kuUba2xGLitNNO48qE0Hrg== log : /var/log/rabbitmq/rabbit@localhost.log sasl log : /var/log/rabbitmq/rabbit@localhost-sasl.log database dir : /var/lib/rabbitmq/mnesia/rabbit@localhost =INFO REPORT==== 16-Aug-2017::11:43:33 === Memory limit set to 390MB of 976MB total. =INFO REPORT==== 16-Aug-2017::11:43:33 === Enabling free disk space monitoring =INFO REPORT==== 16-Aug-2017::11:43:33 === Disk free limit set to 50MB =INFO REPORT==== 16-Aug-2017::11:43:33 === Limiting to approx 924 file handles (829 sockets) =INFO REPORT==== 16-Aug-2017::11:43:33 === FHC read buffering: OFF FHC write buffering: ON =INFO REPORT==== 16-Aug-2017::11:43:33 === Database directory at /var/lib/rabbitmq/mnesia/rabbit@localhost is empty. Initialising from scratch... =INFO REPORT==== 16-Aug-2017::11:43:33 === Waiting for Mnesia tables for 30000 ms, 9 retries left =INFO REPORT==== 16-Aug-2017::11:43:33 === Waiting for Mnesia tables for 30000 ms, 9 retries left
這里顯示的是沒有找到配置文件,我們可以自己創(chuàng)建這個(gè)文件
config file(s) : /etc/rabbitmq/rabbitmq.config (not found)
創(chuàng)建rabbitmq.config
$ cd /etc/rabbitmq/ $ vi rabbitmq.config
編輯內(nèi)容如下:
[{rabbit, [{loopback_users, []}]}]. 這里的意思是開放使用,rabbitmq默認(rèn)創(chuàng)建的用戶guest,密碼也是guest,這個(gè)用戶默認(rèn)只能是本機(jī)訪問(wèn),localhost或者127.0.0.1,從外部訪問(wèn)需要添加上面的配置。
保存配置后重啟服務(wù)
$ service rabbitmq-server restart 開啟管理UI
$ /sbin/rabbitmq-plugins enable rabbitmq_management
重啟服務(wù)
$ service rabbitmq-server restart 訪問(wèn)管理UI
通過(guò) http://ip:15672 使用guest,guest 進(jìn)行登陸了
如果不能訪問(wèn),請(qǐng)檢查防火墻
授權(quán)操作 添加用戶處于安全的考慮,guest這個(gè)默認(rèn)的用戶只能通過(guò)http://localhost:15672 來(lái)登錄,其他的IP無(wú)法直接使用這個(gè)賬號(hào)。 這對(duì)于服務(wù)器上沒有安裝桌面的情況是無(wú)法管理維護(hù)的,除非通過(guò)在前面添加一層代理向外提供服務(wù),這個(gè)又有些麻煩了,這里通過(guò)配置文件來(lái)實(shí)現(xiàn)這個(gè)功能
命令格式
rabbitmqctl add_user
$ rabbitmqctl add_user ymq 123456 Creating user "ymq" 刪除用戶
命令格式
rabbitmqctl delete_user
$ rabbitmqctl delete_user penglei Deleting user "penglei" 修改密碼
命令格式
rabbitmqctl change_password
$ rabbitmqctl change_password ymq 123456 Changing password for user "ymq" 用戶授權(quán)
命令格式
rabbitmqctl set_permissions [-pvhostpath] {user} {conf} {write} {read}
該命令使用戶ymq /(可以訪問(wèn)虛擬主機(jī)) 中所有資源的配置、寫、讀權(quán)限以便管理其中的資源
$ rabbitmqctl set_permissions -p "/" ymq ".*" ".*" ".*" Setting permissions for user "ymq" in vhost "/" 查看用戶授權(quán)
命令格式
rabbitmqctl list_permissions [-p VHostPath]
$ rabbitmqctl list_permissions -p / Listing permissions in vhost "/" guest .* .* .* ymq .* .* .* 查看當(dāng)前用戶列表
可以看到添加用戶成功了,但不是administrator角色
$ rabbitmqctl list_users Listing users guest [administrator] ymq [] 添加角色
這里我們也將ymq用戶設(shè)置為administrator角色
命令格式
rabbitmqctl set_user_tags
$ rabbitmqctl set_user_tags ymq administrator Setting tags for user "ymq" to [administrator]
再次查看權(quán)限
$ rabbitmqctl list_users Listing users guest [administrator] ymq [administrator]
清除權(quán)限信息
命令格式
rabbitmqctl clear_permissions [-p VHostPath] ymq
rabbitmqctl clear_permissions -p / ymq Clearing permissions for user "ymq" in vhost "/" 官方文檔 rabbitmq.com/install-debian.html 訪問(wèn)控制:htabbitmq.com/access-control.html 網(wǎng)abbitmq.com/networking.html .rabbitmq.com/configure.html 集w.rabbitmq.com/clustering.html 命令:rabbitmq.com/man/rabbitmqctl.1.man.html#set_user_tags 后臺(tái)操作 登錄新用戶
可以看到 ymq 和 guest 的權(quán)限 一樣
添加用戶鼠標(biāo)點(diǎn)擊,劃紅線的角色,選擇一種