美文网首页
搭建 RabbitMQ PHP扩展

搭建 RabbitMQ PHP扩展

作者: 街头民工 | 来源:发表于2022-04-08 11:44 被阅读0次

    参考文档:RabbitMQ安装
    参考文档:PHP扩展
    PHP扩展

    环境:centos7,PHP版本5.6
    • 安装RabbitMQ 之前要安装 Erlang,如果Erlang版本和RabbitMQ版本不对应,会造成安装失败。如果之前安装了Erlang或者RabbitMQ 请先卸载。(如果之前是make编译的安装,卸载请参考:文档

    • 版本对应列表

    • Erlang下载

    • RabbitMQ 下载

    本文安装版本:
    rabbitmq-server-3.9.14-1.el7.noarch.rpm
    erlang-23.3.4.6-1.el7.x86_64.rpm

    安装
    1. 安装依赖环境C++编译
      yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC unixODBC-devel httpd python-simplejson
    2. 安装依赖socat,安装Erlang时需要这个
      yum install -y socat
    3. 安装Erlang
      yum install erlang-23.3.4.6-1.el7.x86_64.rpm
    4. 验证是否安装成功
    [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 退出
    
    1. 安装RabbitMQ
      yum install rabbitmq-server-3.9.14-1.el7.noarch.rpm
    2. 启动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
    1. 其他命令:
    # 重启:
    service rabbitmq-server restart
    
    # 停止:
    service rabbitmq-server stop
    
    # 列出角色:
    rabbitmqctl list_users
    
    1. 防火墙开放端口, 如果开启了防火墙的需要开放一下 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
    
    1. 去服务器在安全组添加安全端口。


      image.png
    配置RabbitMQ
    1. 启用网页版后台管理插件
      rabbitmq-plugins enable rabbitmq_management
    2. 新建一个用户名为admin,密码为123456的管理员
      (默认账号是guest,默认密码是guest,但这个默认账号只能本地连接,不能远程连接,所以要新建一个具有管理员权限的新用户名)
    # 添加用户,后面两个参数分别是用户名和密码
    rabbitmqctl add_user admin 123456
    # 修改用户角色
    rabbitmqctl set_user_tags admin administrator
    # 添加权限
    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    
    1. 访问自己ip:http://ip:15672

      image.png
    2. 修改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
    
    1. 保存,并重启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
    
    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

    相关文章

      网友评论

          本文标题:搭建 RabbitMQ PHP扩展

          本文链接:https://www.haomeiwen.com/subject/nuojsrtx.html