Linux [Centos7]搭建PHP的RabbitMQ环境

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

  • 下载RabbitMQ的 RPM 包,在 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

  • erlang官网 v19.3 下载。噩梦般的回到了第一步。
[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!)

  • 我又在网上找啊找~ 终于在这里找到了答案:rabbitmq-server installation CentOS - Erlang Error
    牛逼,仁兄。直接来硬的:(被说,还真TM的好使~)
[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 【个人喜欢理解为客户端,用客户端 连接 服务端。】

  • 官方给的下载地址: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 扩展

  • 从 pecl官方库 中下载最新的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() 里面会找到下图:


    Linux [Centos7]搭建PHP的RabbitMQ环境_第1张图片
    amqp.png

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

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

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

你可能感兴趣的:(Linux [Centos7]搭建PHP的RabbitMQ环境)