HHVM(HipHop Virtual Machine)は、PHPおよびHackのコードを効率的に実行するために開発された仮想マシンです。Nginxは、HTTPおよびリバースプロキシサーバーとして広く利用されている高性能なウェブサーバーです。これらを組み合わせて、Ubuntu 14.04でHHVMをインストールし、Nginxと連携させる手順を詳しく説明します。
1. HHVMのインストール準備
まず、Ubuntu 14.04に必要な依存関係をインストールします。これには、必要なリポジトリを追加するためにcurlやsoftware-properties-commonをインストールする作業が含まれます。

1.1 依存パッケージのインストール
ターミナルを開き、以下のコマンドを実行します。
bashsudo apt-get update sudo apt-get install -y software-properties-common curl
1.2 HHVMのリポジトリを追加
HHVMは、公式のパッケージリポジトリから直接インストールすることができます。まず、HHVMのPPA(Personal Package Archive)を追加します。
bashsudo add-apt-repository ppa:hhvm/ppa
リポジトリを追加した後、再度パッケージリストを更新します。
bashsudo apt-get update
1.3 HHVMのインストール
次に、HHVMをインストールします。以下のコマンドを実行します。
bashsudo apt-get install -y hhvm
インストールが完了したら、HHVMが正しくインストールされていることを確認します。
bashhhvm --version
このコマンドでHHVMのバージョン情報が表示されれば、インストールは成功しています。
2. Nginxのインストールと設定
次に、Nginxをインストールして設定します。まずはNginxのインストールから始めます。
2.1 Nginxのインストール
以下のコマンドでNginxをインストールします。
bashsudo apt-get install -y nginx
インストールが完了したら、Nginxが自動的に起動していることを確認します。
bashsudo systemctl status nginx
active (running)
と表示されていれば、Nginxが正しく起動しています。
2.2 Nginxの設定
NginxはPHPを直接実行することはできませんが、FastCGI経由でHHVMにリクエストを渡すことで、PHPファイルを実行することができます。以下の手順でNginxの設定を行います。
2.2.1 Nginxの設定ファイルを編集
Nginxの設定ファイルを編集して、HHVMをFastCGIとして使用するように設定します。/etc/nginx/sites-available/default
ファイルを開きます。
bashsudo nano /etc/nginx/sites-available/default
以下の内容を追加します。
nginxserver {
listen 80;
server_name example.com;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
この設定では、fastcgi_pass
でHHVMがリッスンしているポート(通常は9000番)にリクエストを渡します。
2.2.2 Nginxの再起動
設定を反映させるために、Nginxを再起動します。
bashsudo systemctl restart nginx
これで、NginxがHHVMと連携してPHPファイルを実行できるようになります。
3. HHVMの設定
HHVMはFastCGIでリクエストを受け取るために、適切な設定が必要です。デフォルトではHHVMはHTTPサーバーとしても動作しますが、FastCGIモードでの設定に切り替える必要があります。
3.1 HHVMの設定ファイルを編集
HHVMの設定ファイルを編集して、FastCGIモードを有効にします。
bashsudo nano /etc/hhvm/php.ini
このファイルに以下の行を追加します。
inicgi.fix_pathinfo = 0
この設定を追加することで、PHPスクリプトの実行がFastCGIモードで行われるようになります。
3.2 HHVMの再起動
設定を反映させるために、HHVMを再起動します。
bashsudo service hhvm restart
4. PHPファイルの配置
NginxとHHVMが正しく連携することを確認するために、PHPファイルを配置してテストします。
4.1 テスト用PHPファイルを作成
/var/www/html
ディレクトリにテスト用のPHPファイルを作成します。
bashecho "" | sudo tee /var/www/html/info.php
4.2 ブラウザでテスト
ブラウザでhttp://your-server-ip/info.php
にアクセスし、PHPの情報ページが表示されれば、NginxとHHVMの設定が正しく動作していることを確認できます。
5. セキュリティ設定
セキュリティを強化するために、公開する必要のないPHP情報を表示させない設定を行います。
5.1 PHPファイルの削除
テスト用のinfo.php
ファイルを削除します。
bashsudo rm /var/www/html/info.php
5.2 Nginxのセキュリティ設定
Nginxの設定ファイルにセキュリティ強化のための設定を追加します。例えば、/etc/nginx/sites-available/default
に以下のような設定を追加することができます。
nginxserver {
listen 80;
server_name example.com;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# ヘッダー設定
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options DENY;
}
}
これにより、セキュリティヘッダーが追加され、ウェブサイトがより安全になります。
6. 結論
これで、Ubuntu 14.04上にHHVMをインストールし、Nginxと連携させる設定が完了しました。これにより、高速なPHPおよびHackの実行環境が整い、ウェブアプリケーションのパフォーマンスを向上させることができます。