• linux php安装zookeeper扩展


    linux php安装zookeeper扩展

    tags:php zookeeper linux ext

    前言:

    zookeeper提供很犀利的命名服务,并且集群操作具有原子性,所以在我的多个项目中被采用。

    在原项目总,服务器集群的状态统一上报到zookeeper集群中,然后通过客户端来访问zookeeper,实时观察集群的状态(当然了,你要做成配置同步也可以)。但是客户端跨平台不方便,开发一个手机客户端又太egg pain了,所以打算采用PHP来读取zookeeper中。

    以下是安装php的zookeeper扩展的步骤。多次使用,如有问题请反馈。转载请注明出处。

    环境:

    1
    2
    3
    4
    5
    centos : 6.4  
    zookeeper : 3.4.5 
    php : 5.5.10 
    nginx : 1.5
    php zookeeper扩展 :0.2.2

    1、如果没有安装nginx,先安装nginx,可参照:http://hi.baidu.com/solohac/item/081e97e54868403f86d9deff

    确保先把nginx配置好,再往下

    2、如果没有安装php,先安装php(先把nginx的php支持配置好了之后,再去安装zookeeper的扩展)

    下载

    wget http://hk2.php.net/distributions/php-5.5.10.tar.gz

    解压

    tar zxvf php-5.5.10.tar.gz

    生成、安装

    cd php-5.5.10

    1
    ./configure --prefix=/usr/local/php5.5.10 --with-config-file-path=/usr/local/php5.5.10/etc --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64

    make && make install

    配置php

    1
    2
    cp php.ini-production /usr/local/php5.5.10/etc/php.ini
    cp /usr/local/php5.5.10/etc/php-fpm.conf.default /usr/local/php5.5.10/etc/php-fpm.conf

    启动

    1
    /usr/local/php5.5.10/sbin/php-fpm

    查看端口是否监听

    netstat -lnt | grep 9000

    编辑nginx配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    location ~ .*.(php)?$
    {
    expires -1s;
    try_files $uri =404;
    fastcgi_split_path_info ^(.+.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
    }

    nginx重新加载配置

    nginx -s reload

    测试php访问

    cd /usr/local/nginx/html/

    vim aa.php

    写入内容

    1
    2
    3
    <?php
    echo "test php";
    ?>

    如果php能正常访问了,继续下面的安装,如果不行,先回头把php的支持弄好。

    2、安装zookeeper

    下载 

    wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz

    解压(随便你放在哪个目录,记得就行)

    tar zxfv zookeeper-3.4.5.tar.gz

    启动zookeeper服务器

    1
    2
    3
    4
    cd zookeeper-3.4.5/conf
    cp zoo_sample.cfg zoo.cfg
    cd ../bin
    ./zkServer.sh start

    这里最好确认一下是否期待成功,./zkServer.sh status

    我这里是单台,所以结果为:

    1
    2
    3
    4
    [root@localhost bin]# ./zkServer.sh status
    JMX enabled by default
    Using config: /root/zookeeper-3.4.5/bin/../conf/zoo.cfg
    Mode: standalone

    编译zookeeper库,给php用的

    1
    2
    3
    cd ../src/c
    ./configure --prefix=/usr/local/zookeeperlib
    make && make install

    3、安装php的zookeeper扩展

    下载

    wget http://pecl.php.net/get/zookeeper-0.2.2.tgz

    解压(解压出来的package.xml不用去管他)

    tar zxvf zookeeper-0.2.2.tgz

    把他放到/root/php-5.5.10/ext中

    mv zookeeper-0.2.2 /root/php-5.5.10/ext/

    cd /root/php-5.5.10/ext/

    改目录名字

    mv zookeeper-0.2.2 zookeeper

    回到php-5.5.10目录

    cd ..

    ./buildconf --force

    ./configure -h|grep zookeeper

    查看configure是否已经支持了zookeeper

    1
    2
    3
    --enable-zookeeper               Enable zookeeper support
    --disable-zookeeper-session      Disable zookeeper session handler support
    --with-libzookeeper-dir=DIR   Set the path to libzookeeper install prefix.

    如果显示如上,说明已经支持了,继续往下

    cd ext/zookeeper

    生成configure

    /usr/local/php5.5.10/bin/phpize

    生成makefile

    1
    2
    3
    4
    ./configure --with-php-config=/usr/local/php5.5.10/bin/php-config  --with-libzookeeper-dir=/usr/local/zookeeperlib
    注意上面的路径:
    --with-php-config是php安装的路径
    --with-libzookeeper-dir是第一步中install zookeeper库的路径

    编译安装

    make && make install

    结果为,这个结果接下来的配置要用到

    Installing shared extensions:     /usr/local/php5.5.10/lib/php/extensions/no-debug-non-zts-20121212/

    添加ext路径和文件名

    1
    2
    3
    4
    vim /usr/local/php5.5.10/etc/php.ini
     
    extension_dir="/usr/local/php5.5.10/lib/php/extensions/no-debug-non-zts-20121212/"
    extension=zookeeper.so

    4、重新编译php

    进入Php的源码文件夹,不要进错了。我的源码文件夹是/root/php-5.5.10,安装目录是/usr/local/php5.5.10

    cd /root/php-5.5.10

    rm -rf autom4te.cache/ configure

    ./buildconf --force

    ./configure -h|grep zookeeper

    查看configure是否已经支持了zookeeper

    如果已经支持了,继续往下

    ./configure --prefix=/usr/local/php5.5.10 --with-config-file-path=/usr/local/php5.5.10/etc --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-zookeeper --with-libzookeeper-dir=/usr/local/zookeeperlib --enable-sockets

    make && make install

    到这里,已经安装好支持了,来测试下是否正常

    在zookeeper-0.2.2.tgz中(也就是Php的zookeeper扩展),有examples/Zookeeper_Example.php文件,可以用来测试

    1
    2
    cp /root/php-5.5.10/ext/zookeeper/examples/Zookeeper_Example.php /usr/local/nginx/html/
    /usr/local/php5.5.10/bin/php /usr/local/nginx/html/Zookeeper_Example.php

    看是否能打印出如下结果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    string(0) ""
    array(1) {
      [0]=>
      string(9) "zookeeper"
    }
    NULL
    string(3) "abc"
    array(2) {
      [0]=>
      string(7) "test123"
      [1]=>
      string(9) "zookeeper"
    }
    NULL
    NULL
    array(2) {
      [0]=>
      string(3) "001"
      [1]=>
      string(3) "002"
    }

    重启php-fpm

    killall php-fpm

    /usr/local/php5.5.10/sbin/php-fpm

    现在就可以通过浏览器访问支持zookeeper扩展的php了

    如果还有别的问题,请检查:

    1、iptables

    2、selinux

  • 相关阅读:
    Graceful degradation versus progressive enhancement
    表现与数据分离
    避免写出IE Bug
    js控制元素的显示与隐藏
    EntityManager方法简介
    JPA EntityManager详解(一)
    Springmvc中 同步/异步请求参数的传递以及数据的返回
    JPA详解
    单向关系中的JoinColumn
    Hibernate一对多和多对一关系详解 (转载)
  • 原文地址:https://www.cnblogs.com/solohac/p/4154154.html
Copyright © 2020-2023  润新知