centOS7安裝RabbitMQ的PHP擴展amqp==1.10.2

CentOS版本:

# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.6 (Maipo)

PHP版本:

# php -v
PHP 7.2.19 (cli) (built: Jun  4 2020 17:46:23) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

pecl 安裝失敗,判斷是沒有預先安裝amqp的依賴包rabbitmq-c:

# pecl install amqp

PECL中的amqp地址: http://pecl.php.net/package/amqp

最新版本:http://pecl.php.net/package/amqp/1.10.2

amqp:

下載amqp源碼:

# wget http://pecl.php.net/get/amqp-1.10.2.tgz

解壓amqp:

# tar -zxf amqp-1.10.2.tgz

進入amqp源碼目錄:

# cd /root/amqp-1.10.2

找到phpize:

# whereis phpize
phpize: /usr/bin/phpize
# ll /usr/bin/phpize 
lrwxrwxrwx. 1 root root 25 Jun  4  2020  /usr/bin/phpize -> /usr/local/php/bin/phpize

在amqp源碼目錄,執行phpize 命令是,準備 PHP 擴展庫的編譯環境:

# /usr/local/php/bin/phpize

安裝amqp擴展:

# ./configure  --with-php-config=/usr/local/php/bin/php-config
checking for pkg-config... /usr/bin/pkg-config
checking for amqp using pkg-config... configure: error: librabbitmq not found

報錯沒有找到librabbitmq,需要安裝rabbitmq-c。

安裝rabbitmq-c:

下載rabbitmq-c源碼:

# wget https://github.com/alanxz/rabbitmq-c/archive/v0.10.0.tar.gz

解壓rabbitmq-c:

# tar -zxf v0.10.0.tar.gz

進入rabbitmq-c源碼目錄:

# cd rabbitmq-c-0.10.0/

編譯rabbitmq-c源碼,指定目錄:

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c-0.10.0
...
-- Configuring done
-- Generating done
-- Build files have been written to: /root/rabbitmq/rabbitmq-c-0.10.0

編譯安裝rabbitmq-c:

# make && make install
...
[100%] Built target test_tables
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/pkgconfig/librabbitmq.pc
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/librabbitmq.so.4.4.0
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/librabbitmq.so.4
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/librabbitmq.so
-- Installing: /usr/local/rabbitmq-c-0.10.0/lib64/librabbitmq.a
-- Installing: /usr/local/rabbitmq-c-0.10.0/include/amqp.h
-- Installing: /usr/local/rabbitmq-c-0.10.0/include/amqp_framing.h
-- Installing: /usr/local/rabbitmq-c-0.10.0/include/amqp_tcp_socket.h

繼續編譯安裝amqp:

# cd /root/amqp-1.10.2
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.10.0
# make && make install
...
/usr/bin/ld: cannot find -lrabbitmq
collect2: error: ld returned 1 exit status
make: *** [amqp.la] Error 1

查看rabbitmq-c目錄:

# ll /usr/local/rabbitmq-c-0.10.0
total 0
drwxr-xr-x 2 root root  92 Aug  3 10:28 include
drwxr-xr-x 3 root root 118 Aug  3 10:28 lib64

複製一份lib64 爲lib:

[root@fuckqiu amqp-1.10.2]# cp -R /usr/local/rabbitmq-c-0.10.0/lib64/ /usr/local/rabbitmq-c-0.10.0/lib/
[root@fuckqiu amqp-1.10.2]# ll /usr/local/rabbitmq-c-0.10.0/
total 0
drwxr-xr-x 2 root root  92 Aug  3 10:28 include
drwxr-xr-x 3 root root 118 Aug  3 10:38 lib
drwxr-xr-x 3 root root 118 Aug  3 10:28 lib64

繼續編譯安裝amqp:

#  cd /root/amqp-1.10.2
# make && make install
...
Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/

查看擴展文件:
```shell
# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
...
extension=amqp.so 
...

添加amqp擴展文件到php.ini文件中:

extension=amqp.so

1. 直接在php.ini中添加:

  • 找到php使用的配置文件:
# php --ini
Configuration File (php.ini) Path: /usr/local/php/etc
Loaded Configuration File:         /usr/local/php/etc/php.ini
Scan for additional .ini files in: /usr/local/php/conf.d
  • 添加 extension=amqp.so
# vim /usr/local/php/etc/php.ini

2. php.ini 的搜索路徑中,獨立添加:

  • 找到php.ini 的搜索目錄:
# php -i | grep configure
--with-config-file-path=/usr/local/php/etc
  • 在 /usr/local/php/etc 中新建一個文件,添加擴展:
# cat /usr/local/php/conf.d/amqp.ini 
extension = "amqp.so"
  • 重載php配置(平滑重啓):
# service php-fpm reload
Reload service php-fpm  done
  • 查看php擴展中是否已存在amqp:
# php -m | grep amqp
amqp
...
  • 查看amqp擴展信息
# php --ri amqp
amqp
Version => 1.10.2
Revision => release
...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章