0

0

如何配置Debian 11上的PHP与RabbitMQ的详细步骤?

絕刀狂花

絕刀狂花

发布时间:2025-11-12 15:23:03

|

973人浏览过

|

来源于php中文网

原创

首先安装配置RabbitMQ并启动服务,接着启用管理插件,创建专用用户与虚拟主机,然后安装PHP及amqp扩展,最后通过生产者与消费者代码验证通信。

如何配置debian 11上的php与rabbitmq的详细步骤?

如果您尝试在Debian 11系统上配置PHP与RabbitMQ的集成环境,但发现消息队列无法正常通信或PHP扩展未加载,则可能是由于缺少必要的AMQP扩展或服务未正确启动。以下是完成该配置的具体步骤:

一、安装并配置RabbitMQ服务器

此步骤的目标是部署RabbitMQ消息代理服务,确保其能够在系统中正常运行并监听默认端口

1、更新系统包列表以获取最新的软件源信息:apt update

2、安装Erlang环境,因为RabbitMQ基于Erlang开发,需先安装依赖:apt install -y erlang

立即学习PHP免费学习笔记(深入)”;

3、添加RabbitMQ官方APT仓库密钥到系统信任密钥环:curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.gpg > /dev/null

4、将RabbitMQ的APT源写入系统源列表文件:echo "deb [signed-by=/usr/share/keyrings/rabbitmq.gpg] https://ppa.launchpad.net/rabbitmq/rabbitmq-server/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list

5、再次执行apt update以加载新添加的仓库信息。

6、安装RabbitMQ服务器:apt install -y rabbitmq-server

7、启动RabbitMQ服务并设置为开机自启:systemctl enable rabbitmq-server && systemctl start rabbitmq-server

二、启用RabbitMQ管理插件

启用Web管理界面可方便监控队列状态、用户权限和连接情况。

1、运行命令开启管理插件:rabbitmq-plugins enable rabbitmq_management

2、重启RabbitMQ服务使插件生效:systemctl restart rabbitmq-server

3、通过浏览器访问http://your_server_ip:15672,使用默认用户名guest和密码guest登录管理界面。

三、创建专用用户与虚拟主机

为提高安全性,应避免使用默认账户,建议创建独立的虚拟主机和用户。

Bolt.new
Bolt.new

Bolt.new是一个免费的AI全栈开发工具

下载

1、添加新的虚拟主机,例如命名为my_vhost:rabbitmqctl add_vhost my_vhost

2、创建新用户并设置密码:rabbitmqctl add_user myuser mypassword

3、授予该用户对指定虚拟主机的全部权限:rabbitmqctl set_permissions -p my_vhost myuser ".*" ".*" ".*"

四、安装PHP及AMQP扩展支持

需要安装php-amqp扩展以便PHP脚本能够通过AMQP协议与RabbitMQ进行通信。

1、安装PHP及其常用组件:apt install -y php php-cli php-dev

2、使用PECL安装amqp扩展:pecl install amqp

3、在php.ini配置文件中手动加载扩展,找到文件位置后添加一行:extension=amqp.so

4、验证扩展是否成功加载:php -m | grep amqp,若输出amqp则表示安装成功。

五、编写PHP生产者与消费者示例代码

测试PHP能否通过AMQP扩展发送和接收消息,验证整个链路连通性。

1、创建名为producer.php的文件,内容如下:

<?php
$connection = new AMQPConnection();
$connection->setHost('localhost');
$connection->setVhost('my_vhost');
$connection->setLogin('myuser');
$connection->setPassword('mypassword');
if (!$connection->connect()) {
    die("Cannot connect to broker\n");
}
$channel = new AMQPChannel($connection);
$exchange = new AMQPExchange($channel);
$exchange->setName('test_exchange');
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declareExchange();
$exchange->publish("Hello from PHP producer!", 'test_routing_key');
echo "Message sent successfully\n";
$connection->disconnect();
?>

2、创建名为consumer.php的文件,用于接收消息:

<?php
$connection = new AMQPConnection();
$connection->setHost('localhost');
$connection->setVhost('my_vhost');
$connection->setLogin('myuser');
$connection->setPassword('mypassword');
if (!$connection->connect()) {
    die("Cannot connect to broker\n");
}
$channel = new AMQPChannel($connection);
$queue = new AMQPQueue($channel);
$queue->setName('test_queue');
$queue->bind('test_exchange', 'test_routing_key');
echo "Waiting for messages...\n";
while ($msg = $queue->get()) {
    echo "Received: " . $msg->getBody() . "\n";
}
$connection->disconnect();
?>

3、在终端分别运行两个脚本:php producer.php 发送消息,php consumer.php 接收消息。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
erlang语言是什么
erlang语言是什么

erlang是一种并发、容错、分布式和动态类型的编程语言。它专门用于构建并发系统,并提供了一个轻量级进程模型来实现并发性。想了解更多erlang的相关内容,可以阅读本专题下面的文章。

409

2024.06.19

rabbitmq和kafka有什么区别
rabbitmq和kafka有什么区别

rabbitmq和kafka的区别:1、语言与平台;2、消息传递模型;3、可靠性;4、性能与吞吐量;5、集群与负载均衡;6、消费模型;7、用途与场景;8、社区与生态系统;9、监控与管理;10、其他特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

207

2024.02.23

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

48

2026.01.28

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1089

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

847

2023.08.22

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

106

2023.09.25

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

106

2023.09.25

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.4万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号