Rabbitmq—centos7安装rabbitmq教程 以及 PHP开启rabbitmq扩展!

大家如果感兴趣,微信搜索「我是阿沐」关注我这枚有点神经但乐观的程序员。
希望小伙伴们通过阿沐的文章学习,知识存储量能有一点点的提升。

前言

当前文章大概是我两年前多(2018年上半年)在自己博客和简书等等社交平台发布的文章,目前准备同步到csdn这边,时间有点久远了有啥不足之处麻烦掘金的善良小伙伴指出不足之处!

之所以选择同步关于mq的几篇文章,主要是目前面试基本上都会涉及到消息队列kafkarabbitmqrocketmq,那么当时也是在公司配合运维搭建mq的集群以及项目代码类php+swool+mq的实现,消息量基本上亿级别,所以就搬迁这mq基础的知识文章。

好啦,开启mq之旅(后期应该会针对mq出一些实战场景的文章)!

Rabbitmq简介

  • server(broker):接受客户端连接,实现AMQP消息队列和路由功能的进程。

  • virtual host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个exchangequeue,但是权限控制的最小粒度是Virtual Host。

  • exchange:交换机,接受生产者发送的消息,并根据binding规则将消息路由给服务器中的队列。exchangeType决定了exchange路由消息的行为,例如,在RabbitMQ中,ExchangeType有header、direct、Fanout和Topic4种,不同类型的Exchange路由的行为是不一样的。

  • message queue:消息队列,用于存储还未被消费者消费的消息。(支持储存模式AMQP_DURABLEAMQP_PASSIVEAMQP_EXCLUSIVEAMQP_AUTODELETE)

  • message:由headerbody组成,header是由生产者添加的各种属性的集合,包括message是否被持久化、由哪个message 1ueue接受、优先级是多少等。而Body是真正需要传输的APP数据。

  • binding:binding绑定了exchange与message Queue关系。exchange在与多个message queue发生Binding后会生成一张路由表,路由表中存储着message queue所需消息的限制条件即binding key。当exchange收到message时会解析其header得到routing key,exchange根据routing key与exchange type将message路由到message queue。binding key由Consumer在binding exchange与message queue时指定,而routing key由Producer发送Message时指定,两者的匹配方式由exchange type决定。

  • Connection:连接,对于RabbitMQ而言,其实就是一个位于客户端和Broker之间的TCP连接

  • Channel:信道或者频道,仅仅创建了客户端到broker之间的连接后,客户端还是不能发送消息的。需要为每一个connection创建channel,AMQP协议规定只有通过channel才能执行AMQP的命令。一个connection可以包含多个channel。之所以需要channel,是因为TCP连接的建立和释放都是十分昂贵的,如果一个客户端每一个线程都需要与broker交互,如果每一个线程都建立一个TCP连接,暂且不考虑TCP连接是否浪费,就算操作系统也无法承受每秒建立如此多的TCP连接。RabbitMQ建议客户端线程之间不要共用channel,至少要保证共用channel的线程发送消息必须是串行的,但是建议尽量共用connection。

  • Command:AMQP的命令,客户端通过Command完成与AMQP服务器的交互来实现自身的逻辑。例如在RabbitMQ中,客户端可以通过publish命令发送消息,txSelect开启一个事务,txCommit提交一个事务。

安装Erlang

服务器版本:centos7.2 IP地址:192.168.153.130 官方安装地址:http://www.rabbitmq.com/install-rpm.html

因为rabbitMQ是Erlang语言编写的,所以我们首先需要安装Erlang

rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm
或者
yum install erlang 

安装rabbitMQ-server服务端并开启服务

官网提供的安装方式:

rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc

yum install rabbitmq-server-3.7.8-1.el7.noarch.rpm

或者

yum install rabbitmq-server 一直输入Y即可

查看rabbitmq-server是否已经安装好了,能查到说明已经安装完成了。

rpm -qa|grep rabbitmq

[root@test ~]# rpm -qa|grep rabbitmq

rabbitmq-server-3.3.5-34.el7.noarch

[root@test ~]# 

开启rabbit-server: systemctl start rabbitmq-server

 

查看状态:rabbitmqctl status

RabbitMQ—centos7安装rabbitmq教程 以及 PHP开启rabbitmq扩展!

注意:这样虽然我们已经将rabbitmq的服务正常启动了,但是我们在物理机的浏览器中输入192.168.153.130:15672时,并不能连接,因为我们还没有配置维护插件和开启远程连接

rabbitmqctl 基础命令介绍

查看命令:#rabbitmqctl
[root@test ~]# rabbitmqctl

# rabbitmqctl list_queues
关闭应用
# rabbitmqctl stop_app

启动应用,和上述关闭命令配合使用,达到清空队列的目的
# rabbitmqctl start_app

清除所有队列
# rabbitmqctl reset

更多用法及参数,可以执行如下命令查看
# rabbitmqctl
(1)首先关闭rabbitmq: rabbitmqctl stop_app
(2)还原: rabbitmqctl reset
(3)启动: rabbitmqctl start_app
(4)添加用户: rabbitmqctl add_user root root
(5)设置权限:rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
(6)查看用户: rabbitmqctl list_users
(7)删除用户:rabbitmqctl delete_user root
(8)修改密码:rabbitmqctl change_password root 123456
(9)清除密码:rabbitmqctl clear_password root

安装命令维护插件

执行此命令:rabbitmq-plugins enable rabbitmq_management RabbitMQ—centos7安装rabbitmq教程 以及 PHP开启rabbitmq扩展!

设置配置文件,并开启用户远程访问:

1、新建配置文件 /etc 会默认生成一个 rabbitmq

2、安装后rabbitmq默认命令在 /usr/lib/rabbitmq/bin

vi /etc/rabbitmq/rabbitmq.conf
#默认用户名
default_user = guest

#默认密码
default_pass = guest

#远程用户访问
loopback_users = none

然后重启rabbitmq:

RabbitMQ—centos7安装rabbitmq教程 以及 PHP开启rabbitmq扩展!

开启浏览器web端访问

1、浏览器输入:`192.168.153.130:15672  -- 默认端口是15672 可修改配置文件

2、默认账号密码:账号:guest    密码:guest

RabbitMQ—centos7安装rabbitmq教程 以及 PHP开启rabbitmq扩展!

登录成功以后,显示界面

RabbitMQ—centos7安装rabbitmq教程 以及 PHP开启rabbitmq扩展!

PHP安装rabbitmq扩展需要安装rabbitmq-c

1、安装rabbitmq-c

在安装amqp之前还需要安装另外一个通讯扩展rabbitmq-c

去github下载最新版本的源码包并解压缩,https://github.com/alanxz/rabbitmq-c/releases

最新版本链接:https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz

PS:今天上去一看没想到版本已更新到v0.11.0😭 😭 😭 果然岁月催人老啊!

有兴趣的小伙伴可以看最新包:https://github.com/alanxz/rabbitmq-c/releases/tag/v0.11.0

最新版截图:

2、载解压编译:

[root@test~]#wget -c  https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz
[root@test ~]# tar -zxvf rabbitmq-c-0.8.0.tar.gz 
rabbitmq-c-0.8.0/
rabbitmq-c-0.8.0/config.h.in
rabbitmq-c-0.8.0/depcomp
rabbitmq-c-0.8.0/librabbitmq/
rabbitmq-c-0.8.0/librabbitmq/amqp_openssl_hostname_validation.c
rabbitmq-c-0.8.0/librabbitmq/amqp_ssl_socket.h
rabbitmq-c-0.8.0/librabbitmq/amqp_hostcheck.h
rabbitmq-c-0.8.0/librabbitmq/amqp_tcp_socket.c
rabbitmq-c-0.8.0/librabbitmq/amqp_tcp_socket.h
rabbitmq-c-0.8.0/librabbitmq/amqp_framing.h
rabbitmq-c-0.8.0/librabbitmq/amqp_openssl.c
rabbitmq-c-0.8.0/librabbitmq/amqp_openssl_hostname_validation.h
rabbitmq-c-0.8.0/librabbitmq/amqp_connection.c

3、编译

[root@test rabbitmq-c-0.8.0]# ./configure --prefix=/usr/local/rabbitmq-c-0.8.0
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out

4、make&&make install 编译安装出错,以下为报错信息,解决方案:

[root@test rabbitmq-c-0.8.0]# make && make install
 cd . && /bin/sh /root/rabbitmq-c-0.8.0/missing automake-1.14 --foreign
/root/rabbitmq-c-0.8.0/missing: line 81: automake-1.14: command not found
WARNING: 'automake-1.14' is missing on your system.
         You should only need it if you modified 'Makefile.am' or
         'configure.ac' or m4 files included by 'configure.ac'.
         The 'automake' program is part of the GNU Automake package:
         <http://www.gnu.org/software/automake>
         It also requires GNU Autoconf, GNU m4 and Perl in order to run:
         <http://www.gnu.org/software/autoconf>
         <http://www.gnu.org/software/m4/>
         <http://www.perl.org/>
make: *** [Makefile.in] Error 1

如果遇到上面编译出错的问题则,需要先执行 autoreconf -ivf;然后 make && make install就成功啦 !

安装PHP扩展amqp

amqp下载地址:http://pecl.php.net/package/amqp

tar zxf amqp-1.9.3.tgz
cd amqp-1.9.3
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.8.0
make && make installl
[root@test ~]# wget -c http://pecl.php.net/get/amqp-1.9.3.tgz
[root@test ~]# tar zxf amqp-1.9.3.tgz 
[root@test amqp-1.9.3]# /usr/bin/phpize  (或者/usr/local/php/bin/phpize   可以whereis phpize查看)
[root@test amqp-1.9.3]# ./configure --with-php-config=/usr/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.8.0
[root@test amqp-1.9.3]# make && make install

 

配置amqp扩展

vi /usr/local/php/etc/php.ini
添加 extension=amqp.so

查看是否已经安装好amqp扩展

[root@test amqp-1.9.3]# php -m
[PHP Modules]
amqp

关于rabbitmq的原理图说明

参数概念说明:

1、Broker:简单来说就是消息队列服务器实体。

2、Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。

3、Queue:消息队列载体,每个消息都会被投入到一个或多个队列。

4、Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。

5、Routing Key:路由关键字,exchange根据这个关键字进行消息投递。

6、vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。

7、Producer:消息生产者,就是投递消息的程序。

8、Consumer:消息消费者,就是接受消息的程序。

9、Channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。

消息队列的使用过程:
1、客户端连接到消息队列服务器,打开一个channel。
2、客户端声明一个exchange,并设置相关属性。
3、客户端声明一个queue,并设置相关属性。
4、客户端使用routing key,在exchange和queue之间建立好绑定关系。
5、客户端投递消息到exchange。
6、exchange接收到消息后,就根据消息的key和已经设由binding,进行消息路里,将消息投递到一个或多个队列里
ps:通过durable参数来进行exchang、queue、消息持久化

最后总结

本篇文章是介绍了rabbitmq的安装以及php的mq扩展安装和遇到的问题如何解决。当然虽然文章已经陈旧了两年之久,但是我相信版本再怎么更新,万变不离其宗,总体流程未变化。

不知看完文章小伙伴们是否对rabbitmq有一些简单的了解,至少知道它是怎么运转的,哪些参数是什么意思,脑海里应该有一个大致的脑线路。如果阿沐的文章感觉有帮助或者有不足之处,请在评论下面留言。

最后,欢迎关注我的个人公众号「我是阿沐」,会不定期的更新后端知识点和学习笔记。也欢迎直接公众号私信或者邮箱联系我,我们可以一起学习,一起进步。

好了,我是阿沐,一个不想30岁就被淘汰的打工人 ⛽️ ⛽️ ⛽️ 。创作不易觉得「阿沐」写的有点料话:👍 关注一下,💖 分享一下,我们下期再见。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CentOS 7上安装RabbitMQ,你可以按照以下步骤进行操作: 1. 首先,你需要安装ErlangRabbitMQ的依赖项。你可以使用以下命令下载Erlang的RPM包: wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm 2. 下载完Erlang的RPM包后,你可以使用以下命令进行安装: rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm 3. 安装Erlang后,你可以使用以下命令来安装RabbitMQ的RPM包: yum install rabbitmq-server-3.5.1-1.noarch.rpm 4. 安装完成后,你可以使用以下命令来启动RabbitMQ服务: systemctl start rabbitmq-server 现在,你已经成功安装了CentOS 7上的RabbitMQ。你可以在浏览器中输入http://localhost:15672访问RabbitMQ的管理界面,默认用户名和密码都是guest。请记得在生产环境中更改默认密码以增加安全性。 注意:以上步骤仅适用于在CentOS 7上安装RabbitMQ。如果你使用的是其他操作系统或版本,请参考相应的安装指南进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [centos7如何安装rabbitmq,新手必备【详细教程】](https://blog.csdn.net/weixin_43970743/article/details/113250182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CentOS 7安装RabbitMQ教程](https://blog.csdn.net/u012204535/article/details/82998346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值