Facebookが開発しているHHVM(HipHop Virtual Machine)を試してみた。JITコンパイルによってPHPの実行速度が高速化したり、同じFacebookが考案したHack言語のプログラムが動くそうな(Facebookは殆どHack言語のプログラムで動いているらしい)。
前もらったさくらのクラウドの無料クーポン残額がまだあるので石狩リージョン上に2-Core/メモリ2GB、Ubuntu Server 14.04 LTS amd64(SSD 20GB)の環境を構築しnginxと組み合わせて動かしてみる。
続きを読むから。
目次
インストール
レポジトリを追加してnginxと一緒にインストール。nginxは非公式PPA版を使う(nginx公式レポジトリ版は後述の設定スクリプトがうまく動かない)。
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 $ sudo add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main" $ sudo add-apt-repository ppa:nginx/stable $ sudo apt-get update $ sudo apt-get install nginx hhvm
設定
HHVMが自動起動されるようにし、PHP,HackがHHVMで動くようにnginxを設定する。
nginxの設定がデフォルト設定の場合はHHVM付属の設定スクリプトが使えるので使わせてもらう。
設定スクリプトにより/etc/nginx/hhvm.confが作成され/etc/nginx/sites-available/defaultにinclude hhvm.conf;の行が追記される。
$ sudo update-rc.d hhvm defaults $ sudo /usr/share/hhvm/install_fastcgi.sh
その後UnixドメインソケットでHHVMと通信するように設定する。
$ sudo vi /etc/hhvm/server.ini ;hhvm.server.port = 9000 ←コメントアウトし hhvm.server.file_socket = /var/run/hhvm/hhvm.sock ;←これを追加する $ sudo vi /etc/nginx/hhvm.conf #fastcgi_pass 127.0.0.1:9000; ←コメントアウト fastcgi_pass unix:/var/run/hhvm/hhvm.sock; #←追加 $ sudo service hhvm restart $ sudo service nginx restart
またデフォルトだと利用メモリ制限が17GBらしい?ので利用するメモリを制限する(別に制限しなくても大丈夫かも?)。設定値はサーバーのメモリ容量と相談して決定する。その他の設定はお好みで。
$ sudo vi /etc/hhvm/php.ini ;以下を追記(メモリ制限設定は調整すべし) memory_limit = 1200M default_charset = "UTF-8" mbstring.language = Japanese mbstring.internal_encoding = UTF-8 expose_php = Off session.hash_function = 1 $ sudo service hhvm restart
動作確認
$ php --version HipHop VM 3.10.1 (rel) Compiler: tags/HHVM-3.10.1-0-g689b4969a141620ee5a282ce0dbf72278c84d44b Repo schema: 6c99ee1f98340f6f3ef397a332583f0e843a627d $ sudo vi /var/www/html/phpinfo.php <?php phpinfo(); ?>
http://(サーバーのIP)/phpinfo.phpにアクセスしてバージョン情報とか出てきたらOK。
蛇足
実はこれとMariaDBを組み合わせてownCloudを動かそうと思った。ただインストールまではできたのだがログインできない(エラーメッセージすら出ない)…
どうやらHHVM上では不具合があるらしい?(明日php-fpmでテストしてみるけど)