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

2023-05-16

有项目用到过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"]




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在ubuntu1404下安装PHP AMQP拓展 并进行docker容器封装 的相关文章

  • 带你玩转Jetson Xavier NX系列教程 | Xavier NX刷机教程

    写在最前 xff1a xff08 转载请注明文章出处 xff09 NVIDIA AGX Jetson Xavier NX 开发人员套件终于拿到手了 xff0c Nx的性能虽然被砍了不少 xff0c 但是完全碾压了Nano和TX2 xff0c
  • 使用Intel RealSense D435i自制离线数据集跑通BundleFusion

    内容概览 摘要操作环境大致流程录制数据集格式转换解析 bag文件时间戳对齐制作源格式封装为 sens格式 离线三维重建修改 zParametersDefault txt修改 zParametersBundlingDefault txt重建效
  • 互斥量、临界区、信号量、事件标志组和消息邮箱

    为了好的理解互斥量 临界区 信号量 事件标志组和消息邮箱 xff0c 下面一些知识对初学者来说很重要 xff1a 为了实现各任务之间的合作和无冲突的运行 xff0c 在有关联的任务之间必须建立一些制约关系 这些制约关系主要有两种 xff1a
  • MAVLink协议通信分析——(二)消息结构

    消息结构 一 消息包结构 消息包结构定义了消息包在发送 接收 初次解析中所需信息的存储规则 在MavLink 1 0版本中 xff0c 消息包结构如下图表所示 首部由STX段引导 xff0c 具体含义可在表中查询 xff0c 其中校验位标记
  • MAVLink协议通信分析——(三)消息解析

    第三章 消息解析 分析过消息包的结构后 xff0c 继续向消息包的内部探索 xff0c 开始分析负载信息PAYLOAD 在消息库中 xff0c 每条消息都作为一个类存在 xff08 Java版本 xff09 xff0c 类中的注释文本详细地
  • Linux 加权限命令 chmod +755,chmod +777,chmod +x 的区别

    chmod 43 x 的意思就是给执行权限 LINUX下不同的文件类型有不同的颜色 xff0c 这里 蓝色表示目录 绿色表示可执行文件 xff0c 可执行的程序 红色表示压缩文件或包文件 浅蓝色表示链接文件 灰色表示其它文件 红色闪烁表示链
  • Docker安装Autoware

    使用gitee上的autoware源码包编译遇到的问题非常多 xff0c 主要是依赖很多 使用Docker来安装autoware相对简单很多 1 xff0c Docker用户权限问题 sudo groupadd docker sudo gp
  • cv_bridge与OpenCV版本关联

    1 xff0c ros melodic中通过apt get安装cv bridge xff0c 其pc文件中依赖的opencv版本为3 2 xff0c 如果系统安装其他的opencv版本 xff0c 需要把cv bridge源码下载到系统本地
  • LLVM/clang & lib路径 & 测试代码

    部分转载自 xff1a Ubuntu编译安装llvm clangUbuntu14 04 Linux安装LLVM clang 3 7 xff08 带有标准库 libc 43 43 xff0c libc 43 43 abi xff09 所需即所
  • Flask+python 爬虫制作股票查询、历史数据、股评词云网页

    自学python的数据分析 xff0c 爬虫后 xff0c 花了几天时间学习Flask做了一个简单的股票查询网页 本想着加入其它的分析板块 xff0c 不过发现部署到服务器还要花钱 xff0c 于是先到此为止 xff0c 后面可能会继续加入
  • 海量数据处理总结

    当数据量变大的时候 xff0c 一些适用较小量数据的算法可能不适用了 xff0c 需要重新考虑具体处理措施 何谓海量数据处理 xff1f 所谓海量数据处理 xff0c 无非就是基于海量数据上的存储 处理 操作 何谓海量 xff0c 就是数据
  • 流媒体之DirectShow——视频采集

    文章目录 一 xff1a 介绍二 xff1a 设备枚举三 xff1a Video Graph3 1 视频预览3 2 录制视频到AVI文件3 3 录制视频到Windows Media File ASF 3 4 录制视频到其他文件格式3 5 录
  • Linux 平台驱动程序与 单片机程序 的异同

    不知不觉 xff0c 已经接触Linux 操作系统四年多 xff0c 对于什么是Linux 下的驱动 xff0c 这件事需要说明一下 1 什么是driver 驱动 首先 xff0c 需要有计算机组成原理的知识 xff0c 才方便了解驱动这个
  • STM32移植FreeRTOS无法启动任务的解决方法

    STM32移植FreeRTOS无法启动任务的解决方法 在实验过程中将FreeRTOS源码全部包含在了STM32F103的项目中 xff0c 但是在实验的过程发现创建的任务无法启动 xff0c 任务创建程序如下 xff1a span clas
  • 荣耀V10手机如何在非华为电脑上实现“多屏协同”?

    去年底 xff0c 华为发布了EMUI10版本 xff0c 在mate30系列手机上以及使用麒麟990和麒麟980的华为荣耀手机 xff0c 手机与windows系统华为或荣耀电脑上可实现 多屏协同 功能 所谓 多屏协同 xff0c 是一种
  • docker容器启动时会报 socket permission denied或者listen tcp port failed 等错误的原因

    最近在deepin系统上装了个snap xff0c 应该是给启用了apparmor这个东东 xff0c 导致原本运行正常的docker 容器在在使用socket监听网络端口时会报 socket permission denied或者 lis
  • VirtualBox+CentOS安装增强功能

    VirtualBox 43 CentOS安装增强功能 1 启动安装在 VirtualBox 中的 CentOS 5 5 虚拟机 xff0c 点击 设备 61 gt 安装增强功能 这个时候你就可以看到有一个 光盘 已经挂载到 CentOS 5
  • 设置yum的源为iso镜像文件

    默认的 yum 是以网络来安装的 xff0c 在没有网络或者网速不佳的情况下 xff0c 通过 yum 来安装软件是意见非常痛苦的事情 其实对于CentOSDVD来说 xff0c 里面提供的软件就足以满足我们的需要了 xff0c 而且DVD
  • make: *** /lib/modules/2.6.18-164.el5/build: No such file

    错误显示 没有 lib modules 2 6 18 164 el5 build 这个目录 xff0c 确认当前内核是这个版本么 xff0c 是的话安装 kernel devel kernel headers 软件包
  • centos6下配置softap需关闭NetworkManager服务

    最近在linux上使用了 fast 150us无线网卡 在网上找了一大堆资料 找到了8188eu驱动 安装成功 在配置hostapd服务时 xff0c 老是启动不起来 xff0c 或者是启动之后别的机器连不上热点 xff0c 当我将Netw

随机推荐

  • 不重新编译为PHP安装MySQL模块

    当初安装PHP的源码目录我没有删除 xff0c 直接在此基础上安装 xff1a 1 进入php ext mysql xff1a cd php ext mysql 2 执行phpize命令 xff0c 这个命令一定得在php的模块目录下执行
  • Linux 下 netbeans 字体抗锯齿正解

    在netbeans安装目录找到 etc 目录下的 netbeans conf 文件 xff0c 用你喜欢的编辑器打开这个文件 xff0c 在其中加入这个选项 J Dawt useSystemAAFontSettings 61 on 这里你要
  • 如何在CentOS系统中安装字体

    以linux下安装宋体 xff0c 黑体为例 xff0c 介绍字体安装方法 xff1a 第一步 拷贝 把对应字体的的ttf文件拷到 usr share fonts 的任意目录下 xff0c 假设宋体已拷贝到 usr share fonts
  • Intel CPU简介

    现在Intel已然成了CPU的代名词 xff0c 但当年的Intel并没有现在这么风光 从1978年发布的8086到2013年的四代i7 xff0c 整整35年 xff0c 她见证了从PC到互联网 移动互联网的几次巨变 xff1b 这些年的
  • 让AndroidX86竖屏显示

    以VirtualBox为例 xff0c Android X86的下载地址可以百度搜索 这种界面非常不爽 xff0c 尤其在调试程序时 xff0c 如何才能显示成竖屏呢 xff1f 先把AndroidX86装到硬盘上 然后进行下面设置 1 完
  • Call to undefined function imagettftext()

    今天将公司官网弄到本地测试到时候 xff0c 发现验证码无法显示 xff0c 公司的官网以前是用dede做的 xff0c 找到dede中的include vdimgck php 单独运行 xff0c 没有报错 xff0c 也不显示 顺着文件
  • 在linux下安装glut包

    转自 xff1a http blog csdn net delacroix xu article details 5478429 在linux下opengl编程 xff0c 首先需要安装glut包 1 安装glut xff08 1 xff0
  • configure: error: could not find working GL library

    plib1 8 3下载地址 xff1a http pkgs fedoraproject org repo pkgs plib plib 1 8 3 tar gz de10b19dfcee5da7115ee2a69656f34c plib 1
  • 一篇关于su和sudo以及visudo的很好的介绍性文档

    一 使用 su 命令临时转换用户身份 1 su 的适用条件和威力 su命令就是转换用户的工具 xff0c 怎么理解呢 xff1f 比如我们以普通用户beinan登录的 xff0c 但要添加用户任务 xff0c 执行useradd xff0c
  • 微信公众号开发中的openid值并不是固定的

    在做微信开发时 xff0c 今天犯了一个错误 xff0c 检查了半天才检查出来 微信在向第三方推送信息时会带上一个openid 这是发送信息者的唯一标识 xff0c 看文档说是唯一标识 就以为这个id只与微信号有关 xff0c 而今天才发现
  • linux下单独编译安装Apache rewrite_module

    转自 xff1a http blog chinaunix net uid 25266990 id 145266 html Apache已经编译安装完了 xff0c 上传程序 xff0c 发现必须得用rewrite xff0c 重新上载模块
  • linux 下安装php的openssl扩展

    1 安装openssl 解压php的源码包 tar zxvf php 5 3 8 tar gz cd soft php 5 3 8 ext openssl mv config0 m4 config m4 否则报错 xff1a 找不到conf
  • php安装 出现Sorry, I cannot run apxs. ***错误解决方法

    tar zvxf php 5 1 2 tar gz cd php 5 1 2 configure prefix 61 usr local php with mysql 61 usr local mysql with apxs2 61 usr
  • linux下mysql的root密码忘记解决方

    1 xff0e 首先确认服务器出于安全的状态 xff0c 也就是没有人能够任意地连接MySQL数据库 因为在重新设置MySQL的root密码的期间 xff0c MySQL数据库完全出于没有密码保护的 状态下 xff0c 其他的用户也可以任意
  • Pandas DataFrame

    http pandas pydata org pandas docs stable api html dataframe 构造函数 方法描述DataFrame data index columns dtype copy 构造数据框 属性和数
  • Apache域名自动指向虚拟主机目录

    用apache做项目时 xff0c 是经常需要在httpd vhost conf文件中配置虚拟主机 xff0c 用于单独的项目 xff0c 每新开一个项目就需要重新加一个配置 xff0c 着实麻烦 xff0c apache2其实是支持在配置
  • CentOS上升级PHP5.3至PHP5.5

    最近想玩玩儿symfony2 发现自己CentOS上的PHP版本还是5 3不符合要求 xff0c 所以想升级至5 5 但是 CentOS通过yum更新的源最新版本是5 3 无法升级 xff0c 通过网上查找资料 发现 更新下yum的源后 可
  • 启动docker web服务时 虚拟机端口转发 外部无法访问

    centos 7 docker 启动了一个web服务 但是启动时 报 WARNING IPv4 forwarding is disabled Networking will not work 网上查询了下 需要做如下配置 解决办法 xff1
  • CentOS7下docker启动报Error starting daemon: Error initializing network controller: could not delete ...v

    前一天晚上强制关闭了虚拟机 CentOS7 导致早上启动docker 报Error starting daemon Error initializing network controller could not delete ve endp
  • 在ubuntu1404下安装PHP AMQP拓展 并进行docker容器封装

    有项目用到过rabbitmq 是技术负责人搭建好环境 xff0c 今天自己在本地 ubuntu 开发 xff0c 重新搞了下 xff0c 在网上查了下资料 xff0c 把安装重点记录下来 项目开发语言PHP 需要与一台rabbitmqser