簡單說下我的的理解,mq就是一個消息代理,負責異步消息轉發,能夠很大程度緩解服務器壓力,而且防止服務器宕機影響業務等。php
安裝:html
環境:vbox+centos7+phpgit
1).首先須要安裝erlanggithub
#wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm #rpm -Uvh erlang-solutions-1.0-1.noarch.rpm #yum install erlang 安裝過程當中會有提示,一路輸入「y」便可。 檢查:#erl 返回的是22 查看安裝路徑:whereis erlang
2).上述完成後安裝RabbitMQ:
注意,注意,注意,erlang與rabbitmq二者的版本要求,這個是rabbitmq官網列出的版本對應:https://www.rabbitmq.com/which-erlang.htmlweb
看清erlang的版本再下載,不然不兼容,下面是我遇到的問題,反正一開始不懂,谷歌了很久才發下緣由:
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
# rabbitmq-server start命令中的錯誤描述是no..忘了centos
開始正式安裝,先下載rpm:瀏覽器
#wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-3.7.15-1.el7.noarch.rpm 下載完成後安裝: #yum install rabbitmq-server-3.7.15-1.el7.noarch.rpm 檢驗是否安裝成功: #systemctl start rabbitmq-server #systemctl status rabbitmq-server 也可使用: #service rabbitmq-server start #service rabbitmq-server status 返回,Active: active (running)表明成功運行了 查看運行的端口,5672爲rabbitmq的端口 #netstat -telnet 開機自啓: #chkconfig rabbitmq-server on
3).啓動插件進行web訪問管理頁面:安全
#rabbitmq-plugins enable rabbitmq_management 而後經過瀏覽器訪問 http://ip:15672(我是用vbox安裝,因此本機是ip遠程登陸) 輸入默認用戶名(guest)和默認密碼(guest)訪問web管理界面了。
這裏有個問題,默認狀況下,RabbitMQ的默認的guest用戶只容許本機訪問。若是想讓guest用戶可以遠程訪問的話,只須要將配置文件中的loopback_users列表置爲空便可,以下:服務器
{loopback_users, []}異步
固然新增用戶admin也能夠作到遠程訪問。要記得打上tag、賦予admin最高權限哦。
附上關於RabbitMQ的一些基本操做:
$ sudo chkconfig rabbitmq-server on # 添加開機啓動RabbitMQ服務 $ sudo /sbin/service rabbitmq-server start # 啓動服務 $ sudo /sbin/service rabbitmq-server status # 查看服務狀態 $ sudo /sbin/service rabbitmq-server stop # 中止服務 # 查看當前全部用戶 $ rabbitmqctl list_users # 查看默認guest用戶的權限 $ rabbitmqctl list_user_permissions guest # 因爲RabbitMQ默認的帳號用戶名和密碼都是guest。爲了安全起見, 先刪掉默認用戶 $ rabbitmqctl delete_user guest # 添加新用戶 $ rabbitmqctl add_user username password # 設置用戶tag $ rabbitmqctl set_user_tags username administrator # 賦予用戶默認vhost的所有操做權限 $ rabbitmqctl set_permissions -p / username ".*" ".*" ".*" # 查看用戶的權限 $ rabbitmqctl list_user_permissions username
4).php使用時是須要添加amqp模塊的
amqp又依賴rabbitmq-c:
先安裝rabbitmq-c:
#wget -c https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz #tar zxf rabbitmq-c-0.8.0.tar.gz #cd rabbitmq-c-0.8.0 # ./configure --prefix=/usr/local/rabbitmq/rabbitmq-c-0.8.0 #make && make install
再安裝php的amqp模塊擴展,注意php的版本要對應哦:
# wget http://pecl.php.net/get/amqp-1.9.4.tgz #tar zxf amqp-1.9.4.tgz #cd amqp-1.9.4 #/usr/local/php/bin/phpize #./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq/rabbitmq-c-0.8.0 #make && make install 編譯成功後會給出#Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/ 將這個添加到php.ini中: #vi /usr/local/php/etc/php.ini 增長:extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/amqp.so
重啓php-fpm,查看phpinfo中出現模塊amqp就表示成功了。
好了,以上就是整個安裝過程,開始用起來吧