第3回目?のサーバ引っ越しに向けて Nginx + HHVM な環境と戯れておく


待ちに待っていた「さくらのVPS」からのマイグレーション機能の復活だったのですが、最近はHHVMの導入や、Nginxにしようかな〜などと色々なことを考えていて、結局マイグレーションは使わない方向に行きそうです・・。
何のために待っていたのか\(^o^)/

HHVMを入れるのはHackが動作するのでこれからに備えてって感じです。
Webサーバをどうするかもまだ考え中で、って考えながら、ついさきほどこのサーバにもNginxのリバースプロキシを復活させました。

復活って言うのは、実は以前にも使っていた事があり。

関連記事
Nginxを導入

2012年の11月の記事w
余談になりますが、3年前の当時は1ヶ月2000PVほどだったみたい。
3年で3倍くらいになってました。
先月は9000PV超えてましたが、今月はまた下がりそうで、目標の3万まではまだまだ時間がかかりそうです。
リバプロは何で止めたんだっけな。。SSDにしたからかな。
まあいいや。

最近感じてることの1つに、環境を伝える、宣伝する、選択する、などなどの1つで、「うちはWebサーバにはApacheを使ってます!」な言い方ではなくて、「うちはNginx+HHVM+AWSなんですわー!」みたいにインフラとミドルウェアについて複数重ねるような言い方をしたりするのがこれから普通になってくるのかなぁと感じたりしています。選択肢が増えたというか、CMSを使う方が増えたというか。
Wordcampなんかでもやってるように、ものすごい勢いで利用者や利用している企業が増えてそうです。

エンドユーザ向けですが、サーバの選択について
ファーストサーバの村竹さんのスライドです。
日本のWordPressホスティングの動向とレンタルサーバーの選び方

だからなんだっていうと、びこーず、どんなサイトにするかって部分で、サーバをどんな構成するか?というのはかなり難しくなってきそう。クラウドサービスが増えているのでスケールアウトも簡単にできますし。
ってことでそのインフラをどうするのかっていう選択もまた更に難しいんじゃないかと思ったりします。
社内ではOpenstackを使って自社でソースをゴリゴリしてるってとこもあるし。
もう頭がとんがりコーンです。

それらを証明するかのように、ディザスタリカバリって言葉なんかも、ちょっと昔よりも有名になってきたような気がします。
会社も個人もリスク管理は大変です。

ってなもんで色々考えても答えはでないので、最終的には人と人の信頼関係なのかなと思ったり。

さて〜、あんまり難しいことを考えていると爆発してしまいますので、ぼちぼちNginxの話に戻ります。
当時調べてたことも3年前とかもう大昔すぎて、Nginxの設定やらも全く覚えておらずで、ちょっと時間がかかりましたがこの日記を書いている今はすでに設定完了しました。
体感で少しはキビキビ動くようにはなりましたが、もう一声キビキビして欲しいところ。
どちらの環境でも試してみてから決めるってことになりそうです。

前置きがめちゃくちゃ長くなってしまいましたが、やっとHHVMに戻ります。
インストールメモ。

前置きとしてはVmwareでDebianをつくっています。

apt-get -y install nginx

curl -s --head http://localhost | head -3
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Sat, 08 Aug 2015 13:13:18 GMT

Debianの場合はパッケージは既にあるので、インストールするともう起動まで完了しており、Curlで確認ができます。

続いてHHVMのインストールから起動までですが、本家サイトにDebianの手順が書いてますんでそのままで大丈夫です。

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.list

sudo apt-get update
sudo apt-get install hhvm


以下のパッケージが新たにインストールされます:
  hhvm libboost-context1.55.0 libboost-filesystem1.55.0 libboost-program-options1.55.0
  libboost-regex1.55.0 libc-client2007e libgflags2 libgoogle-glog0 libmcrypt4 libmemcached11
  libmemcachedutil2 libonig2 libunwind8 libzip2 mlock
アップグレード: 0 個、新規インストール: 15 個、削除: 0 個、保留: 0 個。



service hhvm restart

service hhvm status
hhvm.service - LSB: Starts The HHVM FastCGI Daemon

/usr/share/hhvm/install_fastcgi.sh

上のパスにセットアップファイルがあり、中を見てみるとApacheとNginx両方に対応しているみたいだ。
以下のようにモジュールを有効化してくれるみたい。

210 nginx_enable_module() {
211         echo "Enabling hhvm Nginx module"
212         insert_line "/etc/nginx/sites-enabled/default" 'server_name.*$' 'include hhvm.conf;'
213         echo "Finished enabling module"
214 }

実行するとこのようにサクッとやってくれます。

/usr/share/hhvm/install_fastcgi.sh
[ ok ] Starting hhvm (via systemctl): hhvm.service.
Checking if Apache is installed
WARNING: Couldn't find Apache2 configuration paths, not configuring
Checking if Nginx is installed
Detected Nginx installation
Checking for custom Nginx configuration
Enabling hhvm Nginx module
Finished enabling module
Restarting Nginx
Finished restarting Nginx

準備はこれだけで終わりです。
最近は実行結果ってものの大事さを思うようになってきました。

簡単なPHPを用意して動かしてみます。

curl -s http://localhost/helo.php
hello hhvm

php -v
HipHop VM 3.8.1 (rel)
Compiler: tags/HHVM-3.8.1-0-g3006bc45691762b5409fc3a510a43093968e9660
Repo schema: 253b3802ce1bcd19e378634342fc9c245ac76c33

HHVMが3.8.1ですね。
wordpressをインストールするその前に

echo phpinfo();

をするとどうなるの?
PHP5.6相当ってことが分かります。
ここでのポイントはPHPはインストールしてませんよってことです。

hhvminfo

ではWordpressをインストールしましょう
手順は割愛します。
あ、ab出来ないやん!と思ったらutilを入れればOKのようでした。
apt-get install apache2-utils

静的なページ
Requests per second: 3287.81 [#/sec] (mean)

WordPressトップページ
Requests per second: 27.98 [#/sec] (mean)

キャッシュ有り
Wordpressトップページ
Requests per second: 55.66 [#/sec] (mean)

のような結果となりました。

HHVMにする上で必要なことっていうか、気をつけるところは全てのプラグインが動くかはしらないぜってとこらしく、その辺はOSSらしくやればいいのかなと思います。
OSSっていうかGPL?

参考サイト

網元

Debian 7 でLAMP(Nginx+MySQL+PHP)インストールからWordPressを動かすまで(Nginx編)

GitのHHVMのページ

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

Webサーバ本体をNginxにするとしてもう1つの問題があって、いまはmod_dosdetectorを使っているわけですが、Nginxのものはないのです。

https://github.com/stanaka/mod_dosdetector

こないだ触ったmrubyのngx_mrubyを使ってdos対策を実装してみるってのも面白そうだけどね。

色々できることは多そうですね。
こんな個人が運営している1台ぽっちのサイトでも選択肢は山ほどありんす。
ではまたね。

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *