Usual Software Engineer

よくあるソフトウェアエンジニアのブログ

AWSのEC2インスタンスにHHVMをインストールする

最近業務の開発環境・サーバ環境が安定定着してきて
あまり新しいミドルウェアに触れたり新しい環境を構築することが少し減ったので
それなら、と思いずっとなかなか触れていなかったAWSのEC2をいじってみることにしました。
ついでにPHPも完璧でないJavaer?な俺ですがHHVMをインストールしてみることに。そしてついでにブログを書いてみる。

AWSのEC2でインスタンスを作成する

2015/03/10現在、AWSクラウド無料利用枠ってことで
特定の製品が今なら無料らしい!これは嬉しいので早速登録。
アカウント情報などは日本語で記入するとあとで別の画面で文字化けしてて面倒だったので
英語で記入しておいたほうが良さそうです。
登録が終わったらインスタンスを作成します。
こちらのサイトを参考にさせていただきました。

AWS EC2を使って無料枠でWebサーバを立ててみた(2014年11月版) - sometimes I laugh

AWSの管理コンソールって昔は使いにくかったみたいな話を聞いたことがあるのですが
今はそういう印象は受けませんでした。たぶん自社のクラウドサーバも同じように操作しているので
概念自体が理解しやすい脳になっているからというのもありますが。
ただ機能はめちゃめちゃあると思うので色々使っていかないとなあ自分のAWSの知識遅れてるし。

インスタンス作成した後に、そういえばVagrantでEC2のインスタンスを操作するプラグインあったなと思って
ドキュメント調べつつ色々試してはみましたが

mitchellh/vagrant-aws · GitHub

すでに作成したEC2のインスタンスvagrant sshするのは無理そうでした。。
.vagrant/machines/default/aws/id に作成済みのインスタンスIDを書いたら
無理矢理うまくできるかなーと思いきやエラーにさいなまれたので
yak shavingで小一時間ハマると予想されたのでやめておきました。

HHVMをインストールしてみる

さて無事インスタンスが用意できたので、あとはEC2だろうがVMだろうが変わらないですな、
とか言いつつCentOS以外のOSの知識が無い甘ちゃんです。
Amazon LinuxCentOSとさほど変わらないというので安心。

HHVMのインストールですがいくつか方法があるようで
一番簡単そうな方法でやってみました。
下記のGitリポジトリWikiにも載っていますね。

Amazon Linux · facebook/hhvm Wiki · GitHub

$ cd /etc/yum.repos.d
$ sudo wget http://www.hop5.in/yum/el6/hop5.repo
$ sudo echo 'priority=9' >> hop5.repo
$ sudo echo 'includepkgs=glog,tbb' >> hop5.repo
$ sudo wget http://yum.sexydev.com/sexydev-amazon.repo
$ sudo yum install hhvm
$ sudo /etc/init.d/hhvm start

はい、これでHHVMインストールできました。
あとはPHP5.6あたりをインストールしても良いのですが

$ sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60

ってやるとphpコマンドでhhvmが使えます。(表現あってるか怪しい)

$ php --version
HipHop VM 3.3.5-dev (rel)
Compiler: 1425439999_954070912
Repo schema: 954835134_1425439999
Extension API: 20140829

composerをインストールしたくなったら、
基本的に公式にインストール手順が載っているのですが

Composer

Amazon Linuxの問題か俺の問題かわかりませんが下記のようにする必要がありました。

# 適当に移動
$ cd /usr/local/src
$ sudo wget https://getcomposer.org/installer
$ hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 installer
$ sudo mv composer.phar /usr/local/bin/composer
$ sudo rm installer
$ composer --version
Composer version 1.0-dev (b296e654eb3e136ca6fa08fa3bcb1d4782c13f8b) 2015-03-09 11:13:01

さて、おもむろにNginxをインストールしてみます。

$ sudo yum install nginx
$ vi /etc/nginx/nginx.conf
# 下記のあたりを修正
# index index.php index.html index.htm;
# location ~ \.php$ {
#   fastcgi_pass   127.0.0.1:9001;
#   fastcgi_index  index.php;
#   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
#   include        fastcgi_params;
# }
$ /etc/init.d/nginx restart

適当にphpファイルを置いて

$ echo '<?php phpinfo(); ?>' > /usr/share/nginx/html/index.php

ブラウザからアクセスすると

f:id:innossh:20150311012137p:plain

HipHop!
HHVMの動作を確認することができました。

非常に投げやりなメモになってしまったので次回はLaravelについてちゃんと書こうかなと考えていたりいなかったり。