linux+php+rabbitmq+扩展,CentOS安装RabbitMQ及PHP扩展

由于项目线上环境中使用了RabbitMQ作为消息队列,然后为了和生产环境保持一致我的本地开发环境也需要配置一套环境。不过我们可以直接连接测试环境的RabbitMQ服务,但是必须要自己手动来安装php-amqp扩展进行连接。整个过程下来还是非常简单的,有个别需要注意的地方。

开发环境

CentOS7.3

安装RabbitMQ服务端sudo yum install rabbitmq-server

安装完成后可以使用systemctl系列命令进行管理操作systemctl start rabbitmq-server #启动mq

安装rabbitmq-c

在安装amqp之前还需要安装另外一个通讯扩展rabbitmq-c。

去github下载最新版本(目前是0.8.0)的源码包并解压缩。cd rabbitmq-c-0.8.0/

mkdir build && cd build #这一步是在rabbitmq-c的根目录下创建一个build子目录

# 这一步是让cmake根据../CMakeList.txt,即rabbitmq-c的根目录下的CMakeList.txt创建Makefile文件

# Makefile文件会被创建到build目录中

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..

# 这一步是真正的build rabbitmq-c库的,注意,不要漏掉点 '.'

cmake --build . --target install

到这里就已经安装完成了。不过这里有一个坑。你可以看一下/usr/local/rabbitmq-c下的目录只有include和lib64。因为后面编译安装amqp扩展的时候系统会到/usr/local/rabbitmq-c/lib目录下搜索依赖库,导致错误。所以这里需要加一步:ln -s lib64 lib

安装amqp从pecl官方库中下载最新的amqp扩展包wget https://pecl.php.net/get/amqp-1.9.3.tgz

解压并编译安装cd amqp-1.9.3

phpize

./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c

make && make install

配置amqp扩展vi /usr/local/php/etc/php.ini

添加 extension=amqp.so

2018-06-06更新

在Ubuntu16.04(homestead环境)上安装php的amqp扩展的时候执行如下命令./configure --with-php-config=/usr/bin/php-config5.6 --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c

出现如下错误libtool: link: cc -shared -fPIC -DPIC .libs/amqp.o .libs/amqp_type.o .libs/amqp_exchange.o .libs/amqp_queue.o .libs/amqp_connection.o .libs/amqp_connection_resource.o .libs/amqp_channel.o .libs/amqp_envelope.o .libs/amqp_basic_properties.o .libs/amqp_methods_handling.o .libs/amqp_timestamp.o .libs/amqp_decimal.o -L/usr/local/rabbitmq-c/lib -lrabbitmq -g -O2 -Wl,-rpath -Wl,/usr/local/rabbitmq-c/lib -Wl,-soname -Wl,amqp.so -o .libs/amqp.so

/usr/bin/ld: cannot find -lrabbitmq

collect2: error: ld returned 1 exit status

Makefile:208: recipe for target 'amqp.la' failed

make: *** [amqp.la] Error 1

从错误可以看到重要的一段是/usr/bin/ld: cannot find -lrabbitmq。意思就是无法找到我们上面安装的rabbitmq-c库。然后我去/usr/local/rabbitmq-c目录里执行ls命令后发现也确实只有include和lib目录。

到这里我真的是百思不得其解,然后我又试着查看了lib目录里的内容,发现竟然还有个目录,目录名为x86_64-linux-gnu在这里目录里才是我们要的库文件drwxr-xr-x 3 root root 4096 Jun 6 05:32 ./

drwxr-xr-x 4 root root 4096 Jun 6 05:49 ../

-rw-r--r-- 1 root root 164284 Jun 6 05:32 librabbitmq.a

lrwxrwxrwx 1 root root 16 Jun 6 05:32 librabbitmq.so -> librabbitmq.so.4

lrwxrwxrwx 1 root root 20 Jun 6 05:32 librabbitmq.so.4 -> librabbitmq.so.4.2.0

-rw-r--r-- 1 root root 111400 Jun 6 05:32 librabbitmq.so.4.2.0

drwxr-xr-x 2 root root 4096 Jun 6 05:32 pkgconfig/

于是我执行了cp -r x86_64-linux-gnu/* .把这里目录下的所有文件拷贝到上一层。然后继续执行./configure --with-php-config=/usr/bin/php-config5.6 --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c

发现可以正确的安装了。

小结:

之前是在CentOS上安装的,最近使用Homestead开发环境,用的是Ubuntu16.04。系统不一样导致编译出的rabbitma-c目录下多了平台相关的文件夹。而CentOS上则是直接编译到了rabbitmq-c根目录下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CentOS安装RabbitMQ,可以按照以下步骤进行操作: 1. 添加EPEL存储库:运行以下命令以安装RabbitMQ所需的依赖包: ``` sudo yum install epel-release ``` 2. 添加RabbitMQ官方存储库:运行以下命令以添加RabbitMQ官方存储库: ``` sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ``` 3. 安装RabbitMQ服务器:运行以下命令以安装RabbitMQ服务器: ``` sudo yum install rabbitmq-server ``` 4. 启动RabbitMQ服务并设置开机自启动: ``` sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server ``` 5. 检查RabbitMQ服务状态:运行以下命令以检查RabbitMQ服务是否正在运行: ``` sudo systemctl status rabbitmq-server ``` 如果服务正在运行,将会显示"active (running)"。 6. 配置防火墙规则:如果你的CentOS上启用了防火墙,需要打开RabbitMQ所使用的端口。运行以下命令打开必要的端口: ``` sudo firewall-cmd --permanent --add-port=5672/tcp sudo firewall-cmd --permanent --add-port=15672/tcp sudo firewall-cmd --reload ``` 7. 设置RabbitMQ管理员密码:运行以下命令来设置RabbitMQ管理员密码(这将创建一个名为"admin"的用户): ``` sudo rabbitmqctl add_user admin YOUR_PASSWORD sudo rabbitmqctl set_user_tags admin administrator sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" ``` 请将`YOUR_PASSWORD`替换为你自己的密码。 现在你已经成功在CentOS安装RabbitMQ。你可以通过访问http://your_server_ip:15672,使用管理员账号和密码登录RabbitMQ管理界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值