HHVM導入備忘録

Hackとかもでたので、
バージョン2.2.0がリリースされたHipHop Virtual Machine for PHP(以下HHVM)をCentOS6.4にインストールして動かしてみた際の備忘録

HHVMをざっくりと説明すると、これはFacebookが開発したPHPのJIT(Just In Time)コンパイラとのこと。
詳細についてはHipHop for PHP – Wikipediaとかで確認してもらえばと。

2010年あたりにHipHopPHPが出た時にちょっと弄って以来、全く情報に入っていなかったのだけど、どうやらそれ以降も開発は順調に進んでいたらしく、
今回の2.2.0ではLinuxディストリビューションとしてUbuntu 12.04/ 13.04/13.10、Mint 15、Debian 7、Fedora 19のそれぞれに対応したパッケージが用意されたり、PHP.iniに対応したり、Pharファイル対応したり、FWにも対応したりと、なんか手軽にアプリを作れそうな感じがしてきたのでまた弄ってみることにした。

インストール

インストールはパッケージからのインストールソースからのインストールの2つが用意されているらしい。
今回はCentOS6.4にインストールしようと思っていたので、オフィシャルではないけどHHVM Pre built packages for Centos 6.4を利用してみる

# Install epel repository
sudo yum install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
# download the hop5 repository configuration file
cd /etc/yum.repos.d
sudo wget http://www.hop5.in/yum/el6/hop5.repo
# Install hhvm
sudo yum install hiphop-php

インストールつまづいた

yumからインストールしようとするとlibeventがインストールできなくてエラーになる。これは、CentOS6系で提供しているlibeventは1.4.13までらしく、それ以上のバージョンはソースからインストールするあるらしい
※古いやつは削除する!!
※依存モジュールmemcachedとかを削除してしまうので注意

コマンドラインから動作確認

hhvm hoge.php

エラーが出た

上記のコマンドを叩くと、「hhvm: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory」なエラーが出た。メッセージのままlibjemalloc.so.1へのパスが通っていないようなので、サーバーに既に存在するのならばそこにパスを通す。

export LD_LIBRARY_PATH=/usr/lib64/fluent/jemalloc/lib

HHVMをサーバーとして立ち上げて動作確認

# 一番簡単な立ち上げ方
hhvm -m server
# deamonで立ち上げる
hhvm -m server --config ~/path/to/hhvm.hdf
# curlで動作確認
curl localhost:8080/sort.php

簡単なテスト

ここの辺りで確認できる

ちなみに2013年末にはapacheに対応する予定らしいので、その辺りでもう一度試してみようかな。