Translate: 
EnglishFrenchGermanItalianPolishPortugueseRussianSpanish

HipHop for PHP – Instalacja na CentOS 5.x

W jednym z poprzednich artykułów opisałem jak przeprowadzić instalację kompilatora HipHop for PHP na systemie Fedora.

Wspomniałem też wtedy o problemach, jakie miał z tym kompilatorem system CentOS 5.5.

W niniejszym artykule pokażę, jak pokonać te trudności i poprawnie zainstalować na tym systemie kompilator HipHop for PHP

Skąd pobrać dystrybucję CentOS?

System dostępny jest do ściągnięcia tutaj (obraz ISO).

Dla ludzi chcących po prostu poeksperymentować z HipHop for PHP, proponuję pobranie VMware Playera oraz gotowego obrazu CentOSa.

Jak zainstalować?

Na początek należy dołączyć dodatkowe repozytorium EPEL (zależnie od konfiguracji systemu ścieżka do niego może być inna) oraz doinstalować brakujące pakiety poleceniem yum:

rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
 
yum -y install git cmake pcre-devel libmcrypt-devel mysql-devel gd-devel libxml2-devel libcap-devel binutils-devel flex bison expat-devel patch gcc44 gcc44-c++ gcc gcc-c++ bzip2 bzip2-devel memcached openldap openldap-devel readline-devel libc-client-devel pam-devel wget ncurses-devel

Następnie stworzyć katalog projektu, oraz sklonować do niego HipHop PHP z repozytorium git:

mkdir hiphop
cd hiphop
git clone git://github.com/facebook/hiphop-php.git

Teraz pozostało nam już tylko ściągnięcie oraz rozpakowanie dodatkowych bibliotek, które pominęliśmy w poleceniu yum, gdyż potrzebne są nam ich konkretne wersje:

wget "http://downloads.sourceforge.net/project/re2c/re2c/0.13.5/re2c-0.13.5.tar.gz?use_mirror=cdnetworks-us-2"
wget "http://www.threadingbuildingblocks.org/uploads/77/142/2.2/tbb22_20090809oss_src.tgz"
wget http://curl.haxx.se/download/curl-7.20.0.tar.bz2
wget http://www.monkey.org/~provos/libevent-1.4.14-stable.tar.gz
wget http://launchpad.net/libmemcached/1.0/0.48/+download/libmemcached-0.48.tar.gz
wget http://download.icu-project.org/files/icu4c/4.6.1/icu4c-4_6_1-src.tgz
wget http://www.geocities.jp/kosako3/oniguruma/archive/onig-5.9.2.tar.gz
wget "http://downloads.sourceforge.net/project/boost/boost/1.46.1/boost_1_46_1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2Ffiles%2Fboost%2F1.46.1%2F&use_mirror=ignum"
wget http://php.webtutor.pl/wp-content/uploads/2011/04/libcclient2007-devel.tar.gz
 
tar xvjf curl-7.20.0.tar.bz2
tar xvzf libevent-1.4.14-stable.tar.gz
tar xvzf re2c-0.13.5.tar.gz
tar xvzf tbb22_20090809oss_src.tgz
tar xvzf libmemcached-0.48.tar.gz
tar xvzf icu4c-4_6_1-src.tgz
tar xvzf onig-5.9.2.tar.gz
tar xvzf boost_1_46_1.tar.gz
tar xvzf libcclient2007-devel.tar.gz

Po rozpakowaniu bibliotek, należy je załatać dodatkowymi patchami dostarczonymi przez Facebooka, oraz skompilować do katalogu projektu (nie chcemy nadpisywać bibliotek systemowych CentOS). W tym celu musimy się jednak posłużyć nowszym kompilatorem GCC 4.4+

export CC=gcc44
export CMAKE_PREFIX_PATH=`pwd`/local
 
cd tbb22_20090809oss
gmake
cp -Rp include/tbb/ /usr/include/
cp `pwd`/build/*_release/*.so /usr/lib/
cp `pwd`/build/*_release/*.so.2 /usr/lib/
ldconfig
cd ..
 
cd re2c-0.13.5
./configure --prefix=`pwd`/../local
make install
cd ..
 
cd libevent-1.4.14-stable
cp ../hiphop-php/src/third_party/libevent-1.4.14.fb-changes.diff .
patch < libevent-1.4.14.fb-changes.diff
./configure --prefix=`pwd`/../local
make install
cd ..
 
cd curl-7.20.0
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .
patch -p1 < libcurl.fb-changes.diff
./configure --prefix=`pwd`/../local
make install
cd ..
 
cd libmemcached-0.48
./configure --prefix=`pwd`/../local
make install
cd ..
 
cd icu/source
./configure --prefix=`pwd`/../../local
make install
cd ../..
 
cd onig-5.9.2
./configure --prefix=`pwd`/../local
make install
cd ..
 
cd boost_1_46_1
./bootstrap.sh --prefix=../local --libdir=../local/lib
./bjam --layout=system install
export Boost_LIBRARYDIR=../local/include/boost/
cd ..
 
cp -r imap local/include/
cp /usr/lib/libc-client.so.2007 local/lib/libc-client.so

Po zbudowaniu własnych bibliotek naszedł czas na skompilowanie samego HipHop PHP:

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

Podsumowanie

Instalacja na systemie Centos jest o wiele bardziej skomplikowana, niż w przypadku systemu Fedora. Wiele z bibliotek należało skompilować ręcznie, gdyż nie istniały w repozytorium EPEL/Centos lub dlatego, że były przestarzałe.

Tak jak w przypadku instalacji na systemie Fedora, należy mieć pamiętać, że HipHop for PHP stworzony został wyłącznie dla systemów 64-bitowych. Choć wsparcie dla architektury i386 zostało już w pewnym stopniu zaimplementowane, to jednak nadal jest w fazie eksperymentalnej i nie gwarantuje stabilnej pracy skryptów PHP.

Tagi: , , , ,

Dodaj odpowiedź