以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

HHVM(HipHop Virtual Machine)を入れて動かしてみる

f:id:abyssluke:20151129181239p:plain:w200:leftFacebookが開発している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でテストしてみるけど)