# はじめに
みなさん、こんにちは。株式会社シオラボの小澤です。「KUSANAGIでいろいろ動かして速さを確認してみた!」も6回目となりました。
前々回の「baserCMS」、前回の「SoyCMS」と、過去2回は国産のオープンソースCMSをKUSANAGIで動かしてみました。いかがでしたか?
今回は一転、海外製のオープンソースCMS「October」を動かしてみます。
# October
「October」のキャッチコピーは「THE PLATFORM THAT GETS BACK TO BASICS(基本に戻るプラットフォーム)」。複雑化した構成から脱却し、ウェブサイトの作成、デザイン、編集をより迅速かつ直感的に行えるようにすることを目指して作られています。過去には、GitHubでWordPressに次ぐスター数を獲得したこともあるほど人気のあるCMSです。
Octoberは、フレームワークに「[Laravel」を採用しています。Laravelのキャッチコピーは「ウェブ職人のためのPHPフレームワーク」。PHPで書かれたWebアプリケーションフレームワークです。baserCMSを紹介した際に登場した「CakePHP」と人気を二分する、人気のあるフレームワークです。
Octoberの動作環境は、「PHP version 7.0 or higher」となっていますので、今回はPHP7を使用します。
KUSANAGIでは、PHPが常時2系統動いているので、以下のコマンドを発行してPHP7を使えるようにします。
“`
kusanagi php7
“`
これで、Apacheのドキュメントルート以下はPHP7で動作します。
ちなみに、PHPバージョンの確認には以下のコマンドを使います。
“`
php7 -v
“`
# 事前準備
今回も使用する仮想マシンは、AWS用の「KUSANAGI for AWS」です。「KUSANAGIの初期設定」、「KUSANAGIのプロビジョニング」を参考に、初期設定とプロビジョニングが完了しているものとします。
KUSANAGIの初期設定では、Octoberのシステム要件に従って、Webサーバに「Apache」を選択します。
また、データベースにはMySQLを使います。Octoberで使用するデータベースと、データベースユーザは事前に作成しておきましょう。ここでは、以下のように作成しました。(パスワードは適宜変更してください)
“`
mysql -u root -p
MariaDB> CREATE DATABASE october;
MariaDB> GRANT ALL ON october.* to october@localhost;
MariaDB> FLUSH PRIVILEGES;
MariaDB> SET PASSWORD FOR october@localhost=password('password');
“`
# 設置とインストール
それでは、Octoberを設置し、インストールしましょう。
1. インスタンスにsshログインし、rootになります。
2. Octoberのダウンロードページからダウンロードし解凍します。解凍したディレクトリごと、Apacheのドキュメントルートの下に移動しましょう。具体的には次のようにします。
“`
wget -O octobercms.zip http://octobercms.com/download
unzip octobercms.zip
mv install-master /var/www/html/octobercms
“`
3. Apacheを再起動します。
“`
systemctl restart httpd.service
“`
4. ブラウザで、 `http://(ホスト名)/october/install.php` にアクセスすると、以下のようにシステムチェック画面となります。
5. チェックが正常終了したら、規約に同意して次の画面に進み、データベース情報などの必要な事柄を入力します。さらに画面を進むと、「How do you want to set up your site?」と質問されるので、今回は「Start from scratch」を選択します。
6. 必要なファイルのダウンロードが始まります。楓が舞うアニメーションとともに、「Congratullations!」が表示されればインストールは完了です。インストールは3ステップで、非常に簡単です。
# パフォーマンス検証
Octoberの公開側のデフォルトページは以下のような画面です。この画面は、ページの作成方法が書かれたデモ画面ですので、実際に使用することはありませんが、今回はこの画面を使って、パフォーマンスを検証してみましょう。
パフォーマンス検証には、Apache Benchを使います。
比較検証するのは、KUSANAGIと非KUSANAGIの仮想インスタンスで、AWSのインスタンスタイプは、いずれもt2.medium、PHPなどのソフトウェアのバージョンは揃えてあります。
検証に使用するのは次のようなのコマンドです。このコマンドは、100ユーザ同時に、1ユーザあたり30リクエストを発行する、というものです。
“`
ab -n 3000 -c 100 http://(ホスト名)/october/
“`
# 検証結果
それでは検証結果です。
||KUSANAGI|非KUSANAGI|
|:–|:–|:–|
|Document Length|7697|7686|
|Complete requests|3000|3000|
|Failed requests|0|0|
|Requests per second [#/sec]|121.90|22.20|
|Time per request [ms]|8.203|45.049|
Requests per second は、秒間にさばけるリクエスト数です。数値が大きいほどよいです。KUSANAGIでは約122リクエストとなりました。対する非KUSANAGIは約22リクエストでした。
Time per request は、1リクエストあたりの処理時間です。こちらは逆に数値が小さいほどよいです。KUSANAGIの約8msに対して、非KUSANAGIは約45ms掛かります。
これらから、KUSANAGIでは、およそ5.5倍のパフォーマンスが出せるという結果が得られました。
# まとめ
今回は、はじめてPHP7を使いましたが、KUSANAGIインスタンスでは、5.5倍のパフォーマンスが出せるという結果となりました。KUSANAGIでは、PHPバージョンに関わらずパフォーマンスが出ることが分かりますね。
次回も、KUSANAGIでいろいろ動かしてみます。それではまた!