Ubuntu 13.10 VPSにHHVM(HipHop仮想マシン)をインストールする方法
序章
この記事では、 Digital OceanVPS上のUbuntu13.10にHHVMをインストールするために必要な手順について説明します。 この記事では、以下を作成してHHVMを使用する方法についても説明します。
-
PHPのコマンドライン「HelloWorld」スクリプト
-
PHPで記述され、HHVMサーバーによって提供されるWebベースの「HelloWorld」スクリプト
前提条件
このチュートリアルの唯一の前提条件は、 Ubuntu 13.10×64がインストールされたVPSです。 HHVMは32ビットオペレーティングシステムをサポートしておらず、32ビットオペレーティングシステムのサポートを追加する予定はないことに注意してください。
コマンドラインからコマンドを実行する必要があります。これは、次の2つの方法のいずれかで実行できます。
-
SSHを使用してドロップレットにアクセスします。
-
Digital Ocean DropletManagementPanelの「ConsoleAccess」を使用する
HHVMとは何ですか?
HipHop Virtual Machine(HHVM)は、PHPで記述されたプログラムとスクリプトを処理および実行するために、Facebookによって開発およびオープンソース化された仮想マシンです。 FacebookはHHVMを開発しました。これは、通常のZend + Apacheの組み合わせが、PHPで構築された大規模なアプリケーションを提供するのにそれほど効率的ではないためです。
彼らのウェブサイトによると、HHVMは、ZendPHPエンジン+APC(これはPHPアプリケーションの大部分をホストする現在の方法)。
HHVMのインストール
HHVMのインストールは非常に簡単で、数分以上かかることはありません。 コマンドラインから次の4つのコマンドを実行すると、HHVMがインストールされ、準備が整います。
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -
echo deb http://dl.hhvm.com/ubuntu saucy main | tee /etc/apt/sources.list.d/hhvm.list
apt-get update
apt-get install hhvm
HHVMがインストールされていることを確認するには、次のコマンドを入力します。
hhvm --help
これにより、コマンドラインからhhvm
コマンドを使用する方法の詳細が表示されます。 これを示すサンプルスクリーンショットは次のとおりです。
HHVMを使用してコマンドラインからPHPで「HelloWorld」スクリプトをテストする
コマンドラインで次のコマンドを入力します。
cat > hello_world.php
これにより、hello_world.php
という名前のファイルが作成され、その内容を入力できるようになります。 次のコードを入力(またはコピーアンドペースト)してから、Ctrl + D
を押してファイルを保存します。
<?php
echo "\nHello World\n\n";
ノート: nano
やvim
などのエディターに精通している場合は、それらを使用してこのファイルを作成および保存できます。
このファイルが作成されると、hhvm
を使用して、次のコマンドを使用してファイルを実行できます。
hhvm hello_world.php
これは、このHelloWorldスクリプトの作成と実行を説明するスクリーンショットです。
HHVMサーバー(ブラウザーからアクセス可能)を使用して、PHPで「HelloWorld」スクリプトをテストします。
まず、パブリックフォルダーとして機能し、PHPファイルを含むディレクトリ(public
)を作成します。 このディレクトリには任意の名前を付けてどこにでも配置できることに注意してください。 次のコマンドを実行してこのディレクトリを作成し、入力します。
mkdir public
cd public
次に、コマンドラインで次のコマンドを入力します。
cat > hello.php
これにより、public
ディレクトリにhello.php
という名前のファイルが作成され、その内容を入力できるようになります。 次のコードを入力(またはコピーアンドペースト)してから、Ctrl + D
を押してファイルを保存します。
<?php
echo '<h1>Hello World</h1>';
ノート: nano
やvim
などのエディターに精通している場合は、それらを使用してこのファイルを作成および保存できます。
このファイルが作成されると、コマンドラインからhhvm
を使用して、次の方法でサーバーを起動できます。
hhvm -m server
これは、このHelloWorldスクリプトの作成と実行を説明するスクリーンショットです。
このコマンドはサーバーを(ポート80で)起動し、hello.php
ファイルにブラウザーからアクセスできるようになります。 ドロップレットのIPアドレスが128.199.212.7の場合、この新しく作成されたファイルには次の場所からアクセスできます。
http://128.199.212.7/hello.php
ノート: 128.199.212.7
を、ドロップレットで使用されているIPアドレスまたはドメイン名に置き換えます。
このURLにアクセスすると、次のスクリーンショットのようなWebページが表示されます。
PHPアプリケーションをHHVMに移植する
ポート80(Webサイトの標準ポート)でZend / Apacheの代わりにHHVMを使用してPHPアプリケーションの提供を開始するには、Apacheサービスを停止する必要があります。 これは、次のコマンドを使用して実行できます。
service apache2 stop
このコマンドはApacheを停止し、HHVMが使用できるようにポート80を解放します。 次のステップは、PHPアプリケーションのルートディレクトリでHHVMサーバーを起動することです。 Ubuntuでのこのルートディレクトリの最も一般的な場所は/var/www
です。
次のコマンドを使用して、このディレクトリに切り替えます。
cd /var/www
このディレクトリに移動したら、HHVMサーバーを起動するだけです。
hhvm -m server
このコマンドはHHVMサーバーを起動し、現在のディレクトリからPHPアプリケーションの提供を開始します。
FastCGIモードでのHHVMの使用
バージョン3.0以降、HHVMはサーバーモードで使用できなくなりました。 このセクションは、ApacheおよびNginxサーバーを使用してFastCGIモードでHHVMを構成するのに役立ちます。
Apacheを使用
ApacheでFastCGIモードで動作するようにHHVMを構成するのは非常に簡単です。 次のスクリプトを実行するだけです。
/usr/share/hhvm/install_fastcgi.sh
このスクリプトを実行すると、PHPコードの処理にHHVMの使用を開始するようにApacheが構成されます。 また、Apacheサーバーを再起動するため、他に何もする必要はありません。
Nginxを使用
PHP-FPMでNginxを使用している場合は、構成ファイルを変更してPHP-FPMの使用を無効にする必要があります。 このファイルは通常/etc/nginx/sites-available/default
にあります
次のセクションを探して、すべてコメントされていることを確認します(各行の先頭に#
を追加して)
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}
これを行った後、次のスクリプトを実行します。
/usr/share/hhvm/install_fastcgi.sh
このスクリプトを実行すると、PHPコードの処理にHHVMの使用を開始するようにNginxが構成されます。 また、Nginxサーバーを再起動するため、他に何もする必要はありません。
Apache/NginxがHHVMを使用していることの確認
HHVMの使用を開始するようにサーバーを構成した後、サーバー(ApacheまたはNginx)が実際にHHVMを使用してPHPを処理していることを確認することをお勧めします。
これを行うには、テストPHPファイルを作成し、たとえばinfo.php
をサーバーのパブリックフォルダー(通常、Apacheの場合は/var/www
、Nginxの場合は/usr/share/nginx/html
)に配置します。 次に、このファイルに次のコンテンツを入れます。
<?php
echo defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';
これで、すべてが正常に設定されている場合、ブラウザでこのファイルにアクセスすると、次のメッセージが表示されます。
HHVMの使用
重要な注意点
HHVMには、一般的に使用されるPHP拡張機能が多数組み込まれているため、多くのアプリケーションを簡単に移植できます。 ただし、アプリケーションがまだ組み込まれていないPHP拡張機能を使用している場合、HHVMを選択するとアプリケーションが破損します。 HHVMに移植されたPHP拡張機能の完全なリストは、ここにあります。
最後の言葉
ここまで到達した場合は、HHVMを使用してPHPベースのWebサイトにサービスを提供する準備が整っています。 HHVMは、通常のZend PHPエンジンとAPCの組み合わせよりも数倍効率的であるため、ハードウェア要件がはるかに低く、Webサイトへのより多くの訪問者にサービスを提供できます。