歡迎您光臨本站 註冊首頁

Ubuntu Server 11.10 安裝 Hiphop-php

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

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上要順利編譯,還要對源代碼做一些簡單的修改。

 

第一步,安裝各種軟體和庫,索性的這些東東都不用編譯,省卻了不少麻煩。

  1. 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,並配置環境變數

  1. #在用戶目錄下創建一個目錄,用來儲存hiphop-php   
  2. mkdir dev   
  3. cd dev   
  4. #使用Git來獲取源代碼   
  5. git clone git://github.com/facebook/hiphop-php.git   
  6. cd hiphop-php   
  7. #配置環境變數   
  8. export CMAKE_PREFIX_PATH=`/bin/pwd`/../   
  9. export HPHP_HOME=`/bin/pwd`   
  10. export HPHP_LIB=`/bin/pwd`/bin   
  11. cd ..   

 

第三步,編譯第三方庫

libevent 庫

  1. #下載解壓   
  2. wget http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz   
  3. tar -xzvf libevent-1.4.14b-stable.tar.gz   
  4. cd libevent-1.4.14b-stable   
  5. #打補丁   
  6. cp ../hiphop-php/src/third_party/libevent-1.4.14.fb-changes.diff .   
  7. patch -p1 < libevent-1.4.14.fb-changes.diff   
  8. ./configure --prefix=$CMAKE_PREFIX_PATH   
  9. make   
  10. make install   
  11. cd ..   

 

curl

官方有個提示:首先確定你的系統時間是正確的,否則configure會失敗。

  1. wget http://curl.haxx.se/download/curl-7.21.2.tar.gz 
  2. tar -xvzf curl-7.21.2.tar.gz 
  3. cd curl-7.21.2 
  4. cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff . 
  5. patch -p1 < libcurl.fb-changes.diff 
  6. ./configure --prefix=$CMAKE_PREFIX_PATH 

在這裡要停下來,別著急make,需要先修改2個文件。

第一個文件:libcurl目錄下的lib/ssluse.c

找到

req_method = SSLv2_client_method();  

在上面增加代碼:

  1. #ifdef OPENSSL_NO_SSL2   
  2.     failf(data, "openSSL was compiled without SSLv2 support");   
  3.     return CURLE_SSL_CONNECT_ERROR;   
  4. #endif   
  5. req_method = SSLv2_client_method();   

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

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

把上面的內容改成

  1. //ASSERT(s_registered_extensions);   
  2. if (s_registered_extensions == NULL) {   
  3.     s_registered_extensions = new ExtensionMap();   
  4. }   
  5. for (ExtensionMap::const_iterator iter = s_registered_extensions->begin();   

搞定上面兩項以後,就可以編譯了

  1. make   
  2. make install   
  3. cd ..   

 

第三個庫 libmemcached

  1. wget http://launchpad.net/libmemcached/1.0/0.49/+download/libmemcached-0.49.tar.gz   
  2. tar -xzvf libmemcached-0.49.tar.gz   
  3. cd libmemcached-0.49   
  4. ./configure --prefix=$CMAKE_PREFIX_PATH   
  5. make   
  6. make install   
  7. cd ..   

OK,至此一切準備工作已經就緒。

 

開始編譯Hiphop-php

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

接下來是漫長的編譯過程,但是Hiphop-php做的比較人性化的一點是編譯過程中有進度的百分比提示,所以當進度正確走到100%的時候,代表編譯成功了。

 

編譯好以後的程序是

$HPHP_HOME/src/hphp/hphp

可以執行這個命令,然後查看它的幫助。

 

 



[火星人 ] Ubuntu Server 11.10 安裝 Hiphop-php已經有476次圍觀

http://coctec.com/docs/net/show-post-68185.html