Ubuntu Weekly Recipe

第318回 HackとPHPの実行環境HHVMをLXCで試す

この記事を読むのに必要な時間:およそ 3.5 分

今回は,LXCで用意したコンテナにHHVMをインストールし,PHP(言語)とHack言語を体験するレシピです。

HHVMとは

HHVM(HipHop Virtual Machine)とは,Facebook社によって開発されたOSSです。PHP(言語)のコードの実行を,現在標準的に使われているPHP(実行環境)よりも高速化することを目的としています。特徴は,PHPのコードを専用の中間表現のバイトコード(HHBC)に変換し,このバイトコードを専用の中間表現(HHIR)に変換して最適化を施した後,x86-64あるいはARM64のマシンコードにJust-In-Timeコンパイルする点です。

先日,このHHVMのバージョン3.0.0が公開され,合わせてHackという新しい言語も公開されました。HHVMはPHPに加え,このHackの実行環境にもなります。

Ubuntu用にHHVMのパッケージを提供するリポジトリがhhvm.comにありますので,今回はそれを利用します。12.04と13.10用のパッケージが用意されています。

コンテナの準備

今回はテスト環境にLXCを使います。詳細は本連載の第226回を参考にしてください。

まずLXCパッケージをインストールします。

$ sudo apt-get update
$ sudo apt-get install lxc

次にコンテナを作成します。名前はsaucyとします。環境変数MIRRORで日本のミラーサイトを使うように指定します。

$ sudo MIRROR=http://ubuntutym.u-toyama.ac.jp/ubuntu/ lxc-create -t ubuntu -n saucy
Checking cache download in /var/cache/lxc/saucy/rootfs-amd64 ...
installing packages: vim,ssh,language-pack-en,language-pack-ja
Downloading ubuntu saucy minimal ...
W: Target architecture is the same as host architecture; disabling QEMU support
I: Running command: debootstrap --arch amd64 --verbose --components=main,universe --include=vim,ssh,language-pack-en,language-pack-ja trusty /var/cache/lxc/trusty/partial-amd64 http://ubuntutym.u-toyama.ac.jp/ubuntu/
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
...
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##

これで,ubuntuというユーザー名,ubuntuというパスワードでログイン可能な「saucy」コンテナが作成されました。以下のコマンドを使ってコンテナを起動します。

$ sudo lxc-start --name=saucy
...
Ubuntu 13.10 saucy console

saucy login:

HHVMパッケージのインストール

コンテナにログインしてHHVMパッケージをインストールする作業を行います。まずwgetパッケージをインストールします。

$ sudo apt-get install wget

次にリポジトリのGPG鍵をインポートします。

$ wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add -

リポジトリをパッケージ管理システムに追加します。

$ echo deb http://dl.hhvm.com/ubuntu saucy main | sudo tee /etc/apt/sources.list.d/hhvm.list

最後にhhvmパッケージをインストールします。

$ sudo apt-get update
$ sudo apt-get install hhvm
...
アップグレード: 0 個,新規インストール: 88 個,削除: 0 個,保留: 0 個。
48.1 MB のアーカイブを取得する必要があります。
この操作後に追加で 117 MB のディスク容量が消費されます。
続行しますか [Y/n]?
...
hhvm (3.0.0~saucy) を設定しています ...
update-alternatives: /usr/bin/php (php) を提供するために 自動モード で /usr/bin/hhvm を使います
********************************************************************
* HHVM is installed. Here are some more things you might want to do:
*
* Configure your webserver to use HHVM:
* $ sudo /usr/share/hhvm/install_fastcgi.sh
* $ sudo /etc/init.d/nginx restart
* $ sudo /etc/init.d/apache restart
* $ sudo /etc/init.d/hhvm restart
*
* Run command line scripts with HHVM:
* $ hhvm whatever.php
*
* Use HHVM for /usr/bin/php even if you have php-cli installed:
* $ sudo /usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
********************************************************************
...

さて,hhvmをコマンドラインから実行してみます。

$ hhvm --version
HipHop VM 3.0.0 (rel)
Compiler: tags/HHVM-3.0.0-0-g59a8db46e4ebf5cfd205fadc12e27a9903fb7aae
Repo schema: 48906efe08d29a403bbe13414f32ccd256708e0b

hhvmはphpのalternativeとして登録されています。そのため,phpコマンドでも呼び出せます。

$ php --version
HipHop VM 3.0.0 (rel)
Compiler: tags/HHVM-3.0.0-0-g59a8db46e4ebf5cfd205fadc12e27a9903fb7aae
Repo schema: 48906efe08d29a403bbe13414f32ccd256708e0b

PHPのコードを実行してみます。

$ echo '<?php echo "hello hhvm\n";' > /tmp/hello.php
$ hhvm /tmp/hello.php
hello hhvm

PHP(言語)のインタープリターとしての役割を持つことがわかります。

著者プロフィール

坂本貴史(さかもとたかし)

Ubuntuのマルチメディア編集環境であるUbuntu Studioのユーザ。主にUbuntu日本コミュニティとUbuntu Studioコミュニティで活動。いつかユーザ同士で合作するのが夢。

コメント

コメントの記入