LoginSignup
9
9

More than 5 years have passed since last update.

HHVMをApacheにセットアップする

Last updated at Posted at 2014-12-27

HHVMをApache2.2(Ubuntu 12.04)とApache2.4(Ubuntu 14.04)にセットップしたときのメモ。

HHVMのインストール

以下を実行して、aptにHHVMリポジトリを追加する。

lsb_release -r|grep 12.04 >/dev/null && sudo add-apt-repository ppa:mapnik/boost

curl -L http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add -
echo deb http://dl.hhvm.com/ubuntu $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/hhvm.list

あとは、apt-get でインストールできる。

sudo apt-get install hhvm
hhvm --version

HHVMは、デフォルトでポート9000でサービスとして起動するが、ポート9000は、他のサービスや実験とよくぶつかるので、ここでは、/etc/hhvm/server.ini を編集してポート9955 に変更する。

hhvm.server.port = 9955

また、デフォルトではタイムゾーンが設定されていないが、実際に使い始めると、エラーログを出すようになるので、/etc/hhvm/php.ini にタイムゾーンを設定する。

date.timezone = "Asia/Tokyo"

HHVMサービスを起動する。

sudo service hhvm start

また、実行ログが /var/log/hhvm/error.log に記録されるが、時に大量にエラーが記録されることがあるので、別途、ログをローテートする設定をしておいたほうがよい。

Apache の設定をする (Ubuntu 12.04)

Ubuntu 12.04 は Apache 2.2 なので、FastCGIの少々手間と設定の理解がいる。
HHVM は、サービスとして起動しているので、fastcgiで接続するが、そのときに特定のディレクトリに対して、fastcgiを設定する。
まずは、必要なモジュールのインストールと有効化する。

sudo apt-get intall libapache2-mod-fastcgi

sudo a2enmod fastcgi
sudo a2enmod alias
sudo a2enmod actions

すでに phpを使っているときは、ぶつかることがあるので、無効化する。

sudo a2dismod php5

HHVMの設定は、/etc/apache2/mods-available/hhvm_proxy_fcgi.conf に行われているが、デフォルトは、proxy_fcgi のない Apache 2.2では動作しないので、デフォルトの内容を削除して、以下のようにする。

hhvm_proxy_fcgi.conf
  <IfModule mod_fastcgi.c>
    <FilesMatch \.php$>
      SetHandler hhvm-php-extension
    </FilesMatch>
    <FilesMatch \.hh$>
      SetHandler hhvm-hack-extesion
    </FilesMatch>

    Alias /hhvm /var/www/hhvm
    Action hhvm-php-extension /hhvm virtual
    Action hhvm-hack-extension /hhvm virtual
    FastCgiExternalServer /var/www/hhvm -host 127.0.0.1:9955 -pass-header Authorization -idle-timeout 300
  </IfModule>

一見すると、ブラウザで /hhvm にアクセスする必要がありそうだが、/var/www/hhvm に配置したスクリプトが、URLのルートからのアクセスで実行される( /hhvm からもアクセスできる)。
また、このモジュールを有効化しておく。

sudo ln -s /etc/apache2/mods-available/hhvm_proxy_fcgi.conf /etc/apache2/mods-enabled

Apacheを再起動する。

sudo service apache2 restart

Apache の設定をする (Ubuntu 14.04)

Ubuntu 14.04 の Apache は、Apache2.4なので設定は、非常に簡単で、proxy_fcgi モジュールをインストールして、hhvm_proxy_fcgi.confのパスとポートを見直して有効化するだけである。

sudo a2enmod proxy_fcgi
sudo ln -s /etc/apache2/mods-available/hhvm_proxy_fcgi.conf /etc/apache2/mods-enabled
hhvm_proxy_fcgi.conf
ProxyPassMatch /(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9955/var/www/html/$1

Apacheを再起動する。

sudo service apache2 restart

サンプルスクリプトの配置と実行確認

ここで、ディレクトリ /var/www/hhvm を作成し、そこにスクリプトを配置する。
拡張子は、.hh を使っているが .php も実行されるので、PHPのスクリプトをそのまま、配置してもよい。

sudo mkdir /var/www/hhvm
sudo chown www-data:www-data /var/www/hhvm

sudo -u www-data sh -c "ruby -e 'puts %Q{<?hh\necho "Hello Hack!";}' > /var/www/hhvm/hello.hh" 

HHVMは、スクリプト実行時に hh_client で文法チェックをするようだが、このとき、.hh_config というファイルがないと文法チェックに失敗するので、作成しておく。

sudo -u www-data touch /var/www/hhvm/.hh_config

アクセスして、動作を確認する。

curl -v http://localhost/hello.hh

結果がおかしい場合、実行時のログ /var/apache2/error.log や /var/log/hhvm/error.log を確認する。

以上、お疲れさまでした。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9