简介:Linux安装PHP扩展amqp
什么是AMQP
AMQP,即Advanced Message Queuing Protocol(高级消息队列协议),一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件传递消息,不受客户端/中间件不同产品、不同开发语言等条件的限制。该协议是一种二进制协议,提供客户端应用于消息中间件之间异步、安全、高效的交互。相对于我们常见的REST API,AMQP更容易实现,可以降低开销,同时灵活性高,可以轻松的添加负载平衡和高可用性的功能,并保证消息传递,在性能上AMQP协议也相对更好一些。
通俗来说,在异步通讯中,消息不会立刻到达接收方,而是被存放到一个容器中,当满足一定的条件之后,消息会被容器发送给接收方,这个容器即消息队列,而完成这个功能需要双方和容器以及其中的各个组件遵守统一的约定和规则,AMQP就是这样的一种协议,消息发送与接收的双方遵守这个协议可以实现异步通讯。这个协议约定了消息的格式和工作方式。
安装AMQP
在安装amqp扩展之前我们需要先安装【rabbitmq-c】。rabbitmq-c是一个用于C语言的,与AMQP server进行交互的client库,AMQP协议为版本0-9-1。rabbitmq-c与server进行交互前需要首先进行login操作,在操作后,可以根据AMQP协议规范,执行一系列操作
1. 安装rabbitmq-c
rabbitmq-c最新版本要求【PHP>=7.4】,但是我测试环境php版本时【PHP7.1】,故此我安装的是【0.13】。rabbitmq-c的0.13版本要求【PHP>=5.6】包括【PHP7】版本
# 下载rabbitmq-c客户端
wget --no-check-certificate https://www.motui8.cn/download/rabbitmq-c-0.13.0.zip
# 解压缩
unzip rabbitmq-c-0.13.0.zip
# 进入解压缩后的目录
cd rabbitmq-c-0.13.0/
# 创建build目录并进入build目录下
mkdir build && cd build/
# 预处理并指定安装目录
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..
#编译安装
cmake --build . --target install
安装过程中可能会报【openssl找不到,openssl最低版本1.1.1】。这都是openssl版本过低的问题。可以直接升级openssl即可解决,关于openssl的升级大家可以看看我之前的文章【Linux升级openssl】
此外,由于新版本只有【lib64】目录,我们需要创建一个【lib】软链目录,否则编译amqp时无法编译
ln -s /usr/local/rabbitmq-c/lib64 /usr/local/rabbitmq-c/lib
2. 安装amqp扩展
# 下载源码
wget --no-check-certificate https://pecl.php.net/get/amqp-1.11.0.tgz
# 解压缩
tar -zxvf amqp-1.11.0.tgz
# 进入解压缩后的源码目录
cd amqp-1.11.0/
# 生成configure文件
/usr/local/php/bin/phpize
# 预处理并指定rabbitmq-c的安装目录
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c
# 编译安装
make && make install
安装成功后只需要编辑PHP配置文件,开启amqp扩展即可
vim /usr/local/php/lib/php.ini
添加配置【extension=amqp.so】即可开启amqp
最后检查是否安装成功,执行如下命令:
php -m | grep amqp
如果返回amqp表示安装成功,没有返回值则是安装失败。如果有返回值,但是代码执行时表示没有这个扩展,那是因为没有重启php-fpm
有遗漏或者不对的可以在我的公众号留言哦