wind-cold 发表于 2018-12-23 08:16:29

Ubuntu Server 11.10 安装 Hiphop-php

  Hiphop-php是Facebook贡献给社区的一项开源技术,通过把php文件转化为c++文件的方式,大幅提升运行效率。
  对于技术人员来说,最感兴趣的就是Facebook这么大访问量的网站,是如何解决性能瓶颈问题的,而Hiphop-php就是Facebook使用到的技术之一。
  尽管它已经开源挺久了,但是在国内的社区里却鲜见有人讨论和使用,所以把安装和使用方法翻译出来,供大家参考。
  Github地址: https://github.com/facebook/hiphop-php
  Wiki地址: https://github.com/facebook/hiphop-php/wiki
  官方的Wiki里提供了Ubuntu 9.10开始各版本和FreeBSD 8.2的编译安装方式,在这里我选的是Ubuntu Server 11.10。
  其实安装起来还是很简单的,无非就是一堆的下载,解压,配置,编译。但在Ubuntu Server上要顺利编译,还要对源代码做一些简单的修改。
  第一步,安装各种软件和库,索性的这些东东都不用编译,省却了不少麻烦。
  


[*]sudo apt-get install git-core cmake g++ libboost-dev libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev openssl build-essential binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev libonig-dev libpcre3-dev autoconf libtool libcurl4-openssl-dev libboost-system-dev libboost-program-options-dev libboost-filesystem-dev wget memcached libreadline-dev libncurses-dev libmemcached-dev libbz2-dev libc-client2007e-dev php5-mcrypt php5-imagick libgoogle-perftools-dev libcloog-ppl0
  

  第二步,下载Hiphop-php,并配置环境变量
  


[*]#在用户目录下创建一个目录,用来储存hiphop-php
[*]mkdir dev
[*]cd dev
[*]#使用Git来获取源代码
[*]git clone git://github.com/facebook/hiphop-php.git
[*]cd hiphop-php
[*]#配置环境变量
[*]export CMAKE_PREFIX_PATH=`/bin/pwd`/../
[*]export HPHP_HOME=`/bin/pwd`
[*]export HPHP_LIB=`/bin/pwd`/bin
[*]cd ..
  

  第三步,编译第三方库
  libevent 库
  


[*]#下载解压
[*]wget http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
[*]tar -xzvf libevent-1.4.14b-stable.tar.gz
[*]cd libevent-1.4.14b-stable
[*]#打补丁
[*]cp ../hiphop-php/src/third_party/libevent-1.4.14.fb-changes.diff .
[*]patch -p1 < libevent-1.4.14.fb-changes.diff
[*]./configure --prefix=$CMAKE_PREFIX_PATH
[*]make
[*]make install
[*]cd ..
  

  curl
  官方有个提示:首先确定你的系统时间是正确的,否则configure会失败。
  


[*]wget http://curl.haxx.se/download/curl-7.21.2.tar.gz
[*]tar -xvzf curl-7.21.2.tar.gz
[*]cd curl-7.21.2
[*]cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .
[*]patch -p1 < libcurl.fb-changes.diff
[*]./configure --prefix=$CMAKE_PREFIX_PATH
  

  在这里要停下来,别着急make,需要先修改2个文件。
  第一个文件:libcurl目录下的lib/ssluse.c
  找到
  


[*]req_method = SSLv2_client_method();
  

  在上面增加代码:
  


[*]#ifdef OPENSSL_NO_SSL2
[*]    failf(data, &quot;openSSL was compiled without SSLv2 support&quot;);
[*]    return CURLE_SSL_CONNECT_ERROR;
[*]#endif
[*]req_method = SSLv2_client_method();
  

  

  

第二个文件 hiphop-php的src/runtime/ext/extension.cpp
找到  


[*]for (ExtensionMap::const_iterator iter = s_registered_extensions->begin();
  

把上面的内容改成  


[*]//ASSERT(s_registered_extensions);
[*]if (s_registered_extensions == NULL) {
[*]    s_registered_extensions = new ExtensionMap();
[*]}
[*]for (ExtensionMap::const_iterator iter = s_registered_extensions->begin();
  

  
搞定上面两项以后,就可以编译了
  


  


[*]make
[*]make install
[*]cd ..
  

  第三个库 libmemcached
  


[*]wget http://launchpad.net/libmemcached/1.0/0.49/+download/libmemcached-0.49.tar.gz
[*]tar -xzvf libmemcached-0.49.tar.gz
[*]cd libmemcached-0.49
[*]./configure --prefix=$CMAKE_PREFIX_PATH
[*]make
[*]make install
[*]cd ..
  

  OK,至此一切准备工作已经就绪。
  开始编译Hiphop-php
  


[*]cd hiphop-php
[*]git submodule init
[*]git submodule update
[*]export HPHP_HOME=`pwd`
[*]export HPHP_LIB=`pwd`/bin
[*]cmake .
[*]make
  

  接下来是漫长的编译过程,但是Hiphop-php做的比较人性化的一点是编译过程中有进度的百分比提示,所以当进度正确走到100%的时候,代表编译成功了。
  编译好以后的程序是
  hiphop-php/src/hphp/hphp
  可以执行这个命令,然后查看它的帮助,具体的用法等待下一篇博客里详述。


页: [1]
查看完整版本: Ubuntu Server 11.10 安装 Hiphop-php