搭建 RabbitMQ PHP扩展
参考文档:RabbitMQ安装
参考文档:PHP扩展
PHP扩展
环境:centos7,PHP版本5.6
-
安装RabbitMQ 之前要安装 Erlang,如果Erlang版本和RabbitMQ版本不对应,会造成安装失败。如果之前安装了Erlang或者RabbitMQ 请先卸载。(如果之前是make编译的安装,卸载请参考:文档)
本文安装版本:
rabbitmq-server-3.9.14-1.el7.noarch.rpm
erlang-23.3.4.6-1.el7.x86_64.rpm
安装
-
安装依赖环境C++编译
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC unixODBC-devel httpd python-simplejson
-
安装依赖socat,安装Erlang时需要这个
yum install -y socat
-
安装Erlang
yum install erlang-23.3.4.6-1.el7.x86_64.rpm
- 验证是否安装成功
[root@iz2zeai306v31rj6utu93kz /]# erl
Erlang/OTP 23 [erts-11.2.2.5] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Eshell V11.2.2.5 (abort with ^G)
1>
按2次Ctrl+C 退出
- 安装RabbitMQ
yum install rabbitmq-server-3.9.14-1.el7.noarch.rpm
- 启动RabbitMQ
# 启动
service rabbitmq-server start
# 开机自动启动
chkconfig rabbitmq-server on
# 查看状态
service rabbitmq-server status
# 图片圈起来的位置显示绿色表示成功
# 如果启动失败,查看是否端口:5672被占用
#检查端口被哪个进程占用
netstat -lnp|grep 5672
#查看进程的详细信息,加入进程号是762
ps 762
#杀掉编号为762的进程(请根据实际情况输入)
kill -9 762
image.png
- 其他命令:
# 重启:
service rabbitmq-server restart
# 停止:
service rabbitmq-server stop
# 列出角色:
rabbitmqctl list_users
- 防火墙开放端口, 如果开启了防火墙的需要开放一下 RabbitMQ的默认端口 5672、15672
# 开放端口(开放后需要要重启防火墙才生效)
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看已开放的端口
firewall-cmd --list-ports
-
去服务器在安全组添加安全端口。
image.png
配置RabbitMQ
- 启用网页版后台管理插件
rabbitmq-plugins enable rabbitmq_management
- 新建一个用户名为admin,密码为123456的管理员
(默认账号是guest,默认密码是guest,但这个默认账号只能本地连接,不能远程连接,所以要新建一个具有管理员权限的新用户名)
# 添加用户,后面两个参数分别是用户名和密码
rabbitmqctl add_user admin 123456
# 修改用户角色
rabbitmqctl set_user_tags admin administrator
# 添加权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
-
访问自己ip:http://ip:15672
image.png
-
修改RabbitMQ默认端口
RabbitMQ默认开启了几个端口:
4369:erlang发现口
5672:client端通信口,客户端要连接RabbitMQ服务时要用到
15672:后台管理界面ui端口,进入管理后台时访问url如:http://localhost:15672/
25672:server间内部通信口
有时候在生产环境下,我们出于安全等原因希望修改掉默认的端口号。
我们安装新版的RabbitMQ-3.8.x后,发现找不到它的配置文件,按常理,服务的端口开发都可以在配置文件里配置的。但是事实上RabbitMQ-3.8.x并没有生成配置文件,需要我们手动添加配置文件。
官方建议配置文件的位置:/etc/rabbitmq/rabbitmq.conf
我们现在要做的是把默认端口5672改成56720,并且允许远程访问。把web管理默认端口15672改成56271。只需如下配置:
vim /etc/rabbitmq/rabbitmq.conf
#AMQP 0-9-1 and 1.0 port,默认5672,允许远程访问
listeners.tcp.default = 0.0.0.0:56720
#web管理,默认15672
management.tcp.port = 56721
management.tcp.ip = 0.0.0.0
- 保存,并重启RabbitMQ服务
service rabbitmq-server restart
记得吧防火墙和服务器安全组内端口 配置权限:
firewall-cmd --zone=public --add-port=56720/tcp --permanent
firewall-cmd --zone=public --add-port=56721/tcp --permanent
firewall-cmd --reload
使用netstat -lntp
查看端口监听情况:
(如果找不到netstat命令,则先安装一下:yum -y install net-tools)
卸载
service rabbitmq-server stop
yum list rabbitmq-server
yum remove rabbitmq-server
yum list socat
yum remove socat
yum list erlang
yum remove erlang
rabbitmq常用命令
add_user <UserName> <Password>
delete_user <UserName>
change_password <UserName> <NewPassword>
list_users
add_vhost <VHostPath>
delete_vhost <VHostPath>
list_vhostsset_permissions [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp>
clear_permissions [-p <VHostPath>] <UserName>
list_permissions [-p <VHostPath>]
list_user_permissions <UserName>
list_queues [-p <VHostPath>] [<QueueInfoItem> ...]
list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]
list_bindings [-p <VHostPath>]
list_connections [<ConnectionInfoItem> ...]
安装PHP扩展
- 安装rabbitmq-c
cd /usr/local
wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz
tar -zxvf rabbitmq-c-0.8.0.tar.gz
cd rabbitmq-c-0.8.0
./configure --prefix=/usr/local/rabbitmq-c
make && make install
- 接下来安装amqp的php扩展
amqp版本选择地址
wget https://pecl.php.net/get/amqp-1.9.3.tgz
tar -zxvf amqp-1.9.3.tgz
cd amqp-1.9.3
phpize
./configure --with-php-config=/usr/bin/php-config --with-librabbitmq-dir=/usr/local/rabbitmq-c
# 如果不知道config文件位置:使用 find / -name php-config 查找
make && make install
- 最后再php.ini 文件内添加:
extension=amqp.so
查找php.ini文件whereis php.ini
- 添加完后重启PHP
systemctl restart php-fpm
或者service php-fpm restart
- 验证是否成功可以运行:
php -m
image.png