良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

HHVM安装

官网很详细 

facebook/hiphop-php/wiki/_pages" style="color: rgb(51, 102, 153); text-decoration: none; font-family: 'Helvetica Neue', Helvetica, Arial, serif; font-size: 15px; line-height: 24px;">https://github.com/facebook/hiphop-php/wiki/_pages


简介

大约两年前,Facebook首次推出了HipHop。它是一个源代码转换器,将PHP代码转换为高度优化的C++代码,然后再使用g++编译器编 译。HipHop被Facebook广泛运用,其网站所有PHP代码都经HipHop转换过,旗下其他网站也采用HipHop来优化。 不过,最初代码是由一个HipHop静态编译器转换的。即PHP代码先编译成二进制形式,然后再部署。该方法有个重大问题,因为它使得维护及优化代码更加 困难,且其增加的几个环节也使得bug更容易进入。

在随后的开发中,Facebook使用了一个可以即时转换的HipHop解释器HPHPi。它比之前的编译器要缓慢得多,但相对于每个变化都得编译的情况要好很多。但这也意味着Facebook需要同时维护编译器和HPHPi两个HipHop工具。

在这种情况下,一个新的HipHop虚拟机(HHVM)诞生了。Facebook的工程师介绍,它是一个PHP的JIT(Just-In- Time)编译器,同时具有产生快速代码和即时编译的优点。Facebook表示,HHVM将替代HPHPi,用于所有的PHP执行。根据 Facebook透漏,HHVM在速度方面获得了显著改进,比目前使用的PHP解释器快60%,而使用内存减少90%。

Facebook于12年十二月初发布了一个博文,宣布他们的解释型PHP运行环境HHVM(HipHop VM)已经达到甚至超过了编译型PHP运行环境HipHop的运行速度。

Facebook现在已将HHVM开源,同时弃用了HPHPi并移除了对它的构建支持。到2013年中期,他们将不再支持 HPHPc。HHVM提供了支持Ubuntu 12.04的预构建包以及支持CentOS 6.3的构建说明,而对FreeBSD 9和Mac OS的支持将于明年HPHPc退役之后再提供。

目前HipHop只支持64位,并且在128M的内存上编译会有问题!

安装

系统环境

  • 系统(Linux):RHEL 6.3 x86_64

  • 依赖包:

  cmake 2.6 is the minimum version
   g++/gcc 4.3 is the minimum version
   Boost 1.37 is the minimum version
   flex
   bison
   re2c
   libmysql
   libxml2
   libmcrypt
   libicu 4.2 is the minimum version
   openssl
   binutils
   libcap
   gd
   zlib
   tbb Intel's Thread Building Blocks
   Oniguruma
   libpcre
   libexpat
   libmemcached
   google-glog (http://code.google.com/p/google-glog/)

下面两个是需要打补丁的,这个两个补丁在hiphop的源代码中

   libcurl
   src/third_party/libcurl.fb-changes.diff
   libevent 1.4
   src/third_party/libevent-1.4.13.fb-changes.diff OR src/third_party/libevent-1.4.14.fb-changes.diff

安装依赖包

下面只给出需要编译的依赖包,其他软件包都可以通过yum来安装,这里需要注意的是:

安装GCC4.6

cd gmp-4.3.2
./configure  --prefix=/usr/local/gmp --build=x86_64-linux
make
make install

cd mpfr-2.4.2
./configure  --prefix=/usr/local/mpfr --with-gmp=/usr/include/
make
make install

cd mpc-0.8.1
./configure  --prefix=/usr/local/mpc --with-gmp=/usr/include/ --with-mpfr=/usr/local/mpfr/
make
make install

cd gcc-4.6.1
./configure --prefix=/usr/local/gcc -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++ -with-mpfr=/usr/local/mpfr/ -with-mpc=/usr/local/mpc/ -with-gmp=/usr/include/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/lib:/usr/local/mpfr/lib/
make
make install

cp gcc.4.6.1.conf /etc/ld.so.conf.d/gcc.4.6.1.conf
ldconfig 
mv /usr/bin/gcc /usr/bin/gcc_old
mv /usr/bin/g++ /usr/bin/g++_old
ln -s -f /usr/local/gcc/bin/gcc /usr/bin/gcc
ln -s -f /usr/local/gcc/bin/g++ /usr/bin/g++
cp /usr/local/gcc/lib64/libstdc++.so.6.0.16 /usr/lib64/.
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
ln -s -f /usr/lib64/libstdc++.so.6.0.16 /usr/lib64/libstdc++.so.6

下载hiphop,解压缩,配置环境

cd hiphop-php
export CMAKE_PREFIX_PATH=`/bin/pwd`/..
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
export USE_HHVM=1
cd ..

安装libevent,打hiphop的补丁

cd libevent-release-1.4.14b-stable
cat ../hiphop-php/src/third_party/libevent-1.4.14.fb-changes.diff | patch -p1
./autogen.sh
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install

安装libCurl,打hiphop的补丁

cd curl-master
cat ../hiphop-php/src/third_party/libcurl-7.22.1.fb-changes.diff | patch -p1
./buildconf
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install

安装libunwind

cd libunwind-1.0
 ./configure --prefix=$CMAKE_PREFIX_PATH
make
make install

安装libmemcached

cd libmemcached-0.49
./configure  --prefix=$CMAKE_PREFIX_PATH
make
make install

安装tbb

cd tbb40_20120613oss
make
mkdir -p /usr/include/serial
cp -a include/serial/* /usr/include/serial/
mkdir -p /usr/include/tbb
cp -a include/tbb/* /usr/include/tbb/
cp build/linux_intel64_gcc_cc4.4.6_libc2.12_kernel2.6.32_release/libtbb.so.2 /usr/lib64/
ln -s /usr/lib64/libtbb.so.2 /usr/lib64/libtbb.so

安装libdwarf

cd dwarf-20121130/
./configure
make
cp libdwarf.a $CMAKE_PREFIX_PATH/lib64/
cp libdwarf.h $CMAKE_PREFIX_PATH/include/
cp dwarf.h $CMAKE_PREFIX_PATH/include/

安装boost,在1.52.0时候编译hiphop失败,只有在1.50.0编译才成功

cd cd boost_1_50_0/
./bootstrap.sh --prefix=$CMAKE_PREFIX_PATH --libdir=$CMAKE_PREFIX_PATH/lib
./bjam --layout= system install
export Boost_LIBRARYDIR=/root/hiphop-php/include/boost/

安装jemalloc

tar xjvf jemalloc-3.0.0.tar.bz2
cd jemalloc-3.0.0
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

安装HIPHOP

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

运行

编译执行配置文件

/usr/bin/hhvm –mode daemon –user nobody –config /home/dev/hiphop-php/hhvm.hdf


标签: hhvmphp

作者:良玉 分类:HHVM 浏览:1082 评论:0
留言列表
发表评论
来宾的头像