美文网首页
Linux [Centos7]搭建PHP的RabbitMQ环境

Linux [Centos7]搭建PHP的RabbitMQ环境

作者: 想象之中丶意料之外 | 来源:发表于2018-06-23 13:25 被阅读0次

    RabbitMQ 官网给的建议

    RabbitMQ RPM软件包将需要sudo权限才能安装和管理。
    RabbitMQ 的依赖包erlang最好用 yum versionlock插件来锁定版本,以防自动升级到更高版本。
    yum versionlock 插件使用方法如下:

    1、安装名为yum-plugin-versionlock(yum-versionlock在RHEL 5中调用)的软件包。
    [root@kevin /]# yum install yum-plugin-versionlock
    2、要安装或锁定gcc软件包的版本
    [root@kevin /]# yum versionlock erlang
    3、查看效果
    [root@kevin /]# cat /etc/yum/pluginconf.d/versionlock.list
    # Added locks on Sat Jun 16 11:08:47 2018
    0:erlang-R16B-03.18.el7.*

    第一步:安装RabbitMQ的依赖 -- erlang

    [root@kevin /]# yum install -y erlang
    
    • 感觉很顺利,很easy!那我们接着来。

    第二步:安装RabbitMQ

    Tips:按照官网的意思,下载时需要根据电脑,选择相应的版本。我这里选择的是 Centos7.x
    [root@kevin /]# wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.6/rabbitmq-server-3.7.6-1.el7.noarch.rpm
    
    • 下载完成后,我们来安装
    [root@kevin /]# rpm -ivh rabbitmq-server-3.7.6-1.el7.noarch.rpm
      然后,蛋疼事情发生了,出现了下面的报错:
            error: Failed dependencies:
              erlang >= 19.3 is needed by rabbitmq-server-3.7.6-1.el7.noarch
              socat is needed by rabbitmq-server-3.7.6-1.el7.noarch
    [root@kevin /]#
    
    • 进过我一番百度,找到了原因:yum 安装的 erlang 是 5.10.4版本,而rabbitmq-server-3.7.6-1.el7.noarch.rpm 这个需要 erlang >= 19.3。WTF!

    梦回第一步:重新安装 >= 19.3版本的erlang

    [root@kevin /]# wget http://erlang.org/download/otp_src_19.3.tar.gz
    [root@kevin /]# tar -zxvf otp_src_19.3.tar.gz
       经过漫长的等待.... 终于下载完成了。
            1、先配一下安装目录
    [root@kevin /]# ./configure --prefix=/usr/lib/erlang
            2、编译安装
    [root@kevin /]# make && make install
    
    • 好了,完成了。我们再试着安装 rabbitmq的rpm
          [root@kevin /]# rpm -ivh rabbitmq-server-3.7.6-1.el7.noarch.rpm
              error: Failed dependencies:
              erlang >= 19.3 is needed by rabbitmq-server-3.7.6-1.el7.noarch
              socat is needed by rabbitmq-server-3.7.6-1.el7.noarch
          [root@kevin /]#
    

    这下好了,我浑身一激灵。我知道我接下来要干什么了 —— 我要恢复镜像了。

    我在网上找了好久,这种情况的解决方法。但是没有什么头绪。所以只好恢复镜像。从头再来。我猜测是 因为 一开始yum 安装过 erlang 导致的。所以,恢复后直接从官网下载erlang-19.3然后,直接编译安装。

    至此,上面的都是失败结果。下面正式重搞!WTF~

    • 老套路:

    第一步,安装RabbitMQ依赖 -- erlang

    • 需要注意的是,如果configure出现error时,多半是缺少依赖包。所以,我们先来安装一下依赖包
    [root@kevin /]# yum -y install make gcc gcc-c++ m4 ncurses-devel openssl-devel unixODBC-devel
    
    • 接着 下载 & 解压 & 安装 erlang
    [root@kevin /]# wget http://erlang.org/download/otp_src_19.3.tar.gz            // 下载
    [root@kevin /]# tar -zxvf otp_src_19.3.tar.gz                                  // 解压
    [root@kevin /]# ./configure --prefix=/usr/lib/erlang                           // 配一下安装路劲
    [root@kevin /]# make && make install                                           // 安装
    [root@kevin /]# rpm -ivh rabbitmq-server-3.7.6-1.el7.noarch.rpm                //安装RabbitMQ
    
    • 我以为这次可以成功安装 RabbitMQ的 RPM 了。没想到啊~

    还是报同样的错误:

    erlang >= 19.3 is needed by rabbitmq-server-3.7.6-1.el7.noarch
    socat is needed by rabbitmq-server-3.7.6-1.el7.noarch

    我仔细看了一下。

    原来是这样的:
    [root@kevin /]# yum -y install socat
    [root@kevin /]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

    再试一下(WTF!)还TM报错:

    erlang >= 19.3 is needed by rabbitmq-server-3.7.6-1.el7.noarch
    // 我心里面还是有点欣慰的,从原来的 1个警告2个错误。变成了1个错误。还是有点用的(WTF!)

    [root@kevin /]#  rpm -ivh --nodeps rabbitmq-server-3.7.6-1.el7.noarch.rpm
    
    • 至此RabbitMQ算是安装好了。我们来试一下:
    [root@kevin /]#  systemctl start rabbitmq-server
    
    • 但是不好意思,我TM发现,根本启动不起来,出现如下错误:
    service rabbitmq-server start Job for rabbitmq-server.service failed.
    See 'systemctl status rabbitmq-server.service' 
    and 'journalctl -xn' for details. systemctl status rabbitmq-server.service
    // 好吧,又出现错误了。然后我就百度什么的,找半天。
    // 还是没有找到解决办法。【气人的是,我在把第三种安装方式解决完成后。
    // 才发现,jouranlctl -xn 是让我执行的一个命令。
    // 但是我没试过,我也不知道这个命令执行后,能不能解决这个问题。
    // 本文后面接着说我成功的例子。这个例子在安装过程中没有出现过任何错误。】
    

    此致,敬礼~ 。 上面两次安装都已失败告终!注:接下来安装教程,完全是按照别人的教程来做的。centos7-RabbitMQ安装 不喜欢的,别说话。

    ----------------- 我是分割线 ---------------------

    下面来看一下,我第三次尝试!废话不多说。

    第一步:安装 erlang

    这个教程中,如果有关yum不懂的,可以看看:CentOS yum 源的配置与使用
    [root@kevin /]# yum install epel-release
    [root@kevin /]# yum install yum-priorities
    
    • 从Erlang Solution安装,确保安装最新的
    [root@kevin /]# wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
    [root@kevin /]# rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
    [root@kevin /]# rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
    
    • 修改 /etc/yum.repos.d/erlang_solutions.repo
    // 修改结果如下:
    [erlang-solutions]
    name=Centos $releasever - $basearch - Erlang Solutions
    baseurl=http://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch
    gpgcheck=1
    gpgkey=http://packages.erlang-solutions.com/rpm/erlang_solutions.asc
    enabled=1
    
    • yum 安装 erlang
    [root@kevin /]# yum install erlang
    [root@kevin /]# erl      // 看一下是否ok
    Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:10] [hipe] [kernel-poll:false]
    Eshell V9.3  (abort with ^G)
    

    第二步:安装RabbitMQ

        //  版本自己选择
    [root@kevin /]# wget https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.14-1.el7.noarch.rpm
        // 导入 rabbitmq 签名key
    [root@kevin /]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
        // 说真的,我第一次知道yum可以安装 rpm 包
    [root@kevin /]# yum install rabbitmq-server-3.6.14-1.el7.noarch.rpm
    
    • 配置 远程管理&&监听
      *注意:rabbitmqctl 命令在执行时,出现长的提示,看看是不是命令输入错了!

    启动/停止/重启 服务:
    启动:systemctl start rabbitmq-server
    重启:systemctl restart rabbitmq-server
    停止:systemctl stop rabbitmq-server

    启用RabbitMQ监控插件:
    rabbitmq-plugins enable rabbitmq_management

    //添加 用户:admin 密码:123456
    rabbitmqctl add_user admin 123456

    设置administrator用户角色:
    rabbitmqctl set_user_tags admin administrator

    设置用户权限:"." 之间有空格。
    rabbitmqctl set_permissions -p "/" admin ".
    " "." "."

    删除guest用户:
    rabbitmqctl delete_user guest

    测试:
    浏览器访问:http://【公网IP】:15672

    好了,至此RabbitMQ 服务端 安装完成。

    参考文章如下:
    部署RabbitMQ
    centos7 -----RabbitMQ安装

    ----------------- 我是分割线 2号---------------------

    开始给 PHP 打 RabbitMQ 模块:AMQP。这个也是完全按照别人的教程来做的 CentOS安装RabbitMQ及PHP扩展

    注意:在安装 AMQP 前,需要安装 AMQP 的依赖库 librabbitmq 。AMQP扩展是C写的,而C与RabbitMQ通信一般需要依赖rabbitmq-c库(也就是librabbitmq),所以编译扩展前需要先装依赖库。

    第一步:安装 rabbitmq-c 【个人喜欢理解为客户端,用客户端 连接 服务端。】

    [root@kevin /]# git clone https://github.com/alanxz/rabbitmq-c.git  // 下载
    [root@kevin /]# cd rabbitmq-c && mkdir build && cd build       // 这一步是在rabbitmq-c的根目录下创建一个build子目录
    [root@kevin build]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..     // 让cmake根据../CMakeList.txt 创建Makefile文件。Makefile文件会被创建到build目录中。注意:不要漏掉 '..' 而 /usr/local/rabbitmq-c 是指定rabbitmq-c 安装目录
    [root@kevin build]# cmake --build .  --target install         // build 并安装 rabbitmq-c库。注意:不要漏掉点 '.'
    
    • 爬坑:到这里就已经安装完成了。不过这里有一个坑。你可以看一下/usr/local/rabbitmq-c下的目录只有include和lib64。因为后面编译安装amqp扩展的时候系统会到/usr/local/rabbitmq-c/lib目录下搜索依赖库,导致错误。所以这里需要加一步:
    [root@kevin build]# cd /usr/local/rabbitmq-c && ln -s lib64 lib
    

    第二步:安装 PHP 的 AMQP 扩展

    [root@kevin /]# wget http://pecl.php.net/get/amqp-1.9.3.tgz   // 下载
    [root@kevin /]# tar -zvxf amqp-1.9.3 && cd amqp-1.9.3    // 解压
    [root@kevin amqp-1.9.3]# phpize     // 生成 configure 可执行文件
    [root@kevin amqp-1.9.3]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c    // 配置一下。这里有2个目录,请自行对应:php-config 目录 和 刚才安装的 rabbitmq-c 目录
    [root@kevin amqp-1.9.3]# make && make install
    

    第三步:修改php.ini 开启 amqp.so 模块

     [root@kevin amqp-1.9.3]# vim /usr/local/php/etc/php.ini     // 编辑 php.ini
                             添加 extension=amqp.so
     [root@kevin amqp-1.9.3]# lnmp restart      // 保存后,重启 lnmp
    
    • 如果都正常的话,你在 phpinfo() 里面会找到下图:


      amqp.png

    OK,PHP 的 AMQP 模块也打好了。

    参考文章如下:
    CentOS安装RabbitMQ及PHP扩展

    就这样吧,没有Demo,但可以送大家一个福利 PHP RabbitMQ 教程

    相关文章

      网友评论

          本文标题:Linux [Centos7]搭建PHP的RabbitMQ环境

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