簡單說下個人的理解,mq就是一個消息代理,負責異步消息轉發,可以很大程度緩解服務器壓力,並且防止服務器宕機影響業務等。
安裝:
環境:vbox+centos7+php
1).首先需要安裝erlang
#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.html
看清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..忘了
開始正式安裝,先下載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就表示成功了。
好了,以上就是整個安裝過程,開始用起來吧