在ubuntu1404下安装PHP AMQP拓展 并进行docker容器封装

29 篇文章 1 订阅
8 篇文章 0 订阅
本文详细记录了在Ubuntu 14.04上安装PHP的AMQP拓展以连接rabbitmq-server的过程,并通过Docker容器进行封装。首先简述搭建rabbitmq-server的步骤,包括使用Dockerfile创建镜像和配置管理界面。然后,重点讲解安装AMQP拓展的依赖,包括librabbitmq-c的版本要求。最后,将整个过程整合到Dockerfile中,完成PHP服务器容器的构建。
摘要由CSDN通过智能技术生成

有项目用到过rabbitmq  是技术负责人搭建好环境,今天自己在本地(ubuntu)开发,重新搞了下 ,在网上查了下资料,把安装重点记录下来

项目开发语言PHP 需要与一台rabbitmqserver通信,即php server程序向消息队列服务器发送任务消息,php client程序从消息队列服务器获取任务信息 不断执行,一个典型的生产者和消费者流水线


一、搭建rabbitmq-server

本文记录的重点是如何安装PHP的AMQP拓展 所以,如何搭建rabbitmq-server 则简略带过,我通过docker 已经构建了一个简易的rabbitmq-server镜像

构建rabbitmqserver的dockerfile地址在这里  这是在网上找到的rabbitmq的到的dockerfile 自己改造了下 能够快速搭建服务器

1、下载rabbitmqsqlver 的dockerfile  进入Dockerfile所在目录 执行下列命令 make 内已经包含了docker build命令 会生成一个rabbitmq:server的镜像

sudo make

2、镜像生成完毕 创建并运行容器 

sudo docker run -p 5672 -p 15672 -d --name rabbitmq-server rabbitmq:server


3、从浏览器输入 http://localhost:15672  进入server的管理界面 帐号密码默认为 guest:guest  

  进入管理界面后 创建普通用户 并给普通用户赋予vhost的权限  创建exchange  quene  route-key  等操作 把exchange和quene绑定好  细节可查询rabbitmq的详细概念


如此 一个rabbitmq 的server便创建成功


二、给PHP安装AMQP拓展


为什么要安装AMQP拓展?

因为rabbitmq是一个实现了 AMQP协议的软件,AMQP是一个消息协议,所以PHP要和rabbitmq通信,需要实现AMQP协议,那么安装AMQP拓展的依赖关系大致如下


PHP连接rabbitmq-->依赖于PHP-AMQP拓展---->AMQP拓展是用C语言编写的PHP拓展 ,其底层调用的是librabbitmq-c-xxx这样一个为C语言编写的客户端库

所以安装AMQP拓展 就必须先安装rabbitmq-c这个为C语言编写的库软件


了解了这个关系 ,就明白了为什么只安装PHP-AMQP不行,而且 PHP-AMQP与rabbitmq-c的版本也是有对应要求的

我们这里安装的PHP-AMQP拓展是1.7.1  安装过程中 先执行了 sudo apt-get install librabbitmq-dev  该命令即安装librabbitmq-c-0.4.1  但是 由于PHP-AMQP-1.7.1必须要在librabbitmq-0.5以上版本才能使用(也就是说AMQP调用了新版本的一些特性,不支持老版本),所以我就去了网上下载了librabbitmq目前的最新稳定版 librabbitmq-0.8.1


这就是  amqp-1.7.1  搭配 librabbitmq-c-0.8.0(0.5以上 都可以)版本的原因


版本的依赖关系说清楚了 现在就可以下载这两个软件了


下载链接: amqp-1.7.1

 下载链接:librabbitmq-c-0.8.0


1、安装librabbitmq-c-0.8.0  

解压下载的文件后 进入该目录

./configure --prefix=/usr/local/rabbitmq-c-0.8.0
make
make install
该处指定了 安装路径 是为后续用到


2、安装AMQP拓展

进入解压的该目录下(phpize 可能需要安装php-dev)

phpize
./configure --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.8.0 
make 
make install

3、安装成功后,修改php.ini配置文件 在拓展的地方增加

extension=amqp.so


重启服务器 脚本通过phpinfo();  发现amqp  则拓展安装成功 ,


这是则可以连接刚才第一步创建的rabbitmq服务器来做测试了,就不多说


4、把上述安装过程整理到dockerfile文件中 ,就完成了docker容器的封装


如下为一个简单的集成了apache - php--rabbitmq--mssql等拓展的服务器容器构建文件 该镜像包含了一些基础镜像

这是github上我目前做的一些初步测试 ,能看到我的小实验成功

GITHUB地址

FROM ubuntu:1404-163
MAINTAINER apache-php qiang <xx@xx.xx>

# Install base packages
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get -yq install \
        curl \
        apache2 \
	libsybdb5 \
	freetds-common \
        libapache2-mod-php5 \
        php5-mysql \
        php5-mcrypt \
        php5-gd \
        php5-curl \
        php5-sybase \
	php5-dev \
        php-pear \
        php-apc && \
    rm -rf /var/lib/apt/lists/*

#compile amqp
ADD amqp-1.7.1.tgz /tmp/
ADD rabbitmq-c-0.8.0.tar.gz /tmp/

WORKDIR /tmp/rabbitmq-c-0.8.0
RUN	./configure --prefix=/usr/local/rabbitmq-c-0.8.0 && \
	make && \
	make install  
WORKDIR /tmp/amqp-1.7.1
RUN	phpize
RUN 	./configure --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.8.0 && \
	make && \
	make install

RUN sed -i "s/;   extension=msql\.so/extension=amqp.so/g"  /etc/php5/apache2/php.ini

#    curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer


RUN /usr/sbin/php5enmod mcrypt
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf && \
    sed -i "s/variables_order.*/variables_order = \"EGPCS\"/g" /etc/php5/apache2/php.ini

ENV ALLOW_OVERRIDE **True**

# Add image configuration and scripts
ADD run.sh /run.sh
RUN chmod 755 /*.sh

ADD vhost.conf /etc/apache2/sites-available/vhost.conf


# Configure /app folder with sample app
RUN mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html
ADD sample/ /app

RUN a2enmod vhost_alias
RUN a2ensite vhost

VOLUME  ["/etc/apache2","/etc/php5"]

EXPOSE 80
WORKDIR /app
CMD ["/run.sh"]




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值