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

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 教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • RabbitMQ是实现了AMQP协议的消息队列框架,基于Erlang这个最正确的并发处理语言基础开发。支持消息持久...
    阿太哥阅读 1,925评论 0 0
  • RabbitMQ的安装 RabbitMQ下载地址 RabbitMQ是由LShift提供的一个Advanced Me...
    二月_春风阅读 14,449评论 0 10
  • 项目产品最近准备使用RabbitMQ作为消息推送的中间件,今天在公司内网部署了一下,因为内网环境的原因,刚开始是想...
    DFKyun阅读 2,315评论 0 1
  • 简述 前端时间尝试着搭建了airflow的高可用(HA)环境,为避免自己遗忘,现将安装过程整理成文档。公司环境没有...
    samsing阅读 7,111评论 0 15
  • 整体架构 部署步骤 基于 Docker 基本概念内存节点只保存状态到内存,例外情况是:持久的 queue 的内容将...
    mvictor阅读 12,751评论 5 30