RPC 框架 Yar 安装

1221 查看

前言

体验RPC框架Yar需要三步

  1. 装二进制打包协议msgpack

  2. 装yar拓展和依赖

  3. 写demo测试

我们今天先解决安装问题

步骤

  1. 安装PHP拓展包有很多种方式,当然没什么是比pecl更加来得暴力,用这个之前要确认phpize是否存在

    find / -name phpize
  2. 如果phpize不存在

    yum install php-devel
  3. Ok,先装msgpack

    pecl install msgpack

    提示如下错误:`

    Failed to download pecl/msgpack within preferred state "stable", latest release is 
    version 0.5.6, stability "beta", use "channel://pecl.php.net/msgpack-0.5.7" to install

那么就按照提示

pecl install channel://pecl.php.net/msgpack-0.5.7

安装跳了一大堆编译过程过程,省略ING
只关心后几行

Build process completed successfully
Installing '/usr/include/php/ext/msgpack/php_msgpack.h'
Installing '/usr/lib64/php/modules/msgpack.so'
install ok: channel://pecl.php.net/msgpack-0.5.6
configuration option "php_ini" is not set to php.ini location
You should add "extension=msgpack.so" to php.ini
vi /etc/php.ini
extension=msgpack.so
保存退出。
  1. OK,msgpack装好了,接着pecl install yar
    中途会有提示你Enable Msgpack Supports
    这个就上个装的二进制打包协议。输入yes

  2. 很不幸,出现了

    configure: error: Please reinstall the libcurl distribution - easy.h 
    should be in <curl-dir>/include/curl/
    ERROR: `/var/tmp/yar/configure --enable-msgpack=yes' failed`
这边输入如下命令
yum -y install curl-devel
解决上处报错问题。
  1. pecl install yarvi /etc/php.ini 文件添加extension=yar.so

  2. 重启php-fpm service php-fpm restart

  3. 重启的时候报错如下

    NOTICE: PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library
     '/usr/lib64/php/modules/yar.so' - /usr/lib64/php/modules/yar.so:
     undefined symbol:   php_json_encode in Unknown on line 0
    

    可以看出问题了,yar模块是依赖msgpack.so和json.so的,必须得保证msgpack.so和json.so放在yar.so前面

  4. 解决办法如下:

    find / -name json.ini
    mv /etc/php.d/json.ini /etc/php.d/json.ini.bak
    vi /etc/php.ini` 文件添加`extension=json.so
  5. service php-fpm restart 再次重启,成功!

  6. index.php phpinfo()查看模块是否已被添加

12. OK Let's try it

总结:安装的时候最麻烦就是各种依赖,我们要做的就是看Linux给的提示,解决依赖问题。
后续:RPC的意义和Yar的使用。