はじめに
みなさん、こんにちは。株式会社シオラボの小澤です。「KUSANAGIでいろいろ動かして速さを確認してみた!」の2回目です。
前回は、オープンソースCMSの「MODX」をKUSANAGIにインストールしてパフォーマンスを確認してみました。およそ5.4倍という驚異的な結果が出ましたね。
さて、2回目の今回もオープンソースCMSです。「Joomla!」を取り上げます。
Joomla!
Joomla!は、オープンソースのサイト管理ツール(CMS)です。スワヒリ語の”Jumla”を語源としており、ジュームラと読みます。PHPで動作します。データベースはMySQLのほか、PostgreSQL、SQL Serverも使えます。
世界的には、3,328の政府関連サイトで使用されているそう(JoomlaGov Sites(https://joomlagov.info/))で、海外ではメジャーなCMSです。
Joomlaの最新バージョンは、Joomla! 3.7。このバージョンでは、カスタムフィールド、ワークフローの改善などがおこなわれているようです。[GitHub](https://github.com/joomla/joomla-cms)で公開されているリポジトリを見ても、頻繁にコミットされていることが分かります。
事前準備
使用する仮想マシンは、AWS用の「[KUSANAGI for AWS](https://kusanagi.tokyo/cloud/kusanagi-for-aws/)」です。[KUSANAGIの初期設定](https://kusanagi.tokyo/document/kusanagi-init/)、KUSANAGIのプロビジョニング](https://kusanagi.tokyo/document/kusanagi-provision/)を参考に、初期設定とプロビジョニングも完了しているものとします。
また、Joomlaのインストール(https://docs.joomla.org/J3.x:Installing_Joomla/ja)の動作環境を踏まえて、KUSANAGIの初期設定では、Webサーバに「Apache」、アプリケーションサーバに「PHP5」を選択しておきます。
さらに、MySQLには、Joomla!で使用するデータベースとユーザもあらかじめ作成しておきます。
インストール
それでは、Joomla!をインストールしましょう。
- インスタンスにsshログインし、rootになります。
- Joomla!のダウンロードページから最新版をダウンロードし、joomlaディレクトリを作りながら解凍します。
“`
wget -O joomla.zip https://downloads.joomla.org/cms/joomla3/3-7-0/joomla_3-7-0-stable-full_package-zip?format=zip
unzip joomla.zip -d joomla
“`
- joomlaディレクトリを、ドキュメントルートの下にコピーします。
“`
cp -r joomla /var/www/html
“`
- パーミッションを変更しておきます。(本来は、十分に検討してパーミッションを付与してください)
“`
cd /var/www/html
chmod -R 777 joomla
“`
- Apacheを再起動します。
“`
systemctl restart httpd.service
“`
- ブラウザで、 `https://(ホスト名)/joomla/` にアクセスすると、以下のようなインストーラー画面が表示されます。
なお、画面が表示されず、 `PHP Fatal error: Call to undefined function simplexml_load_file() in /var/www/html/joomla/installation/application/web.php on line 262` のエラーが出る場合は、以下でパッケージのインストールをしてください。
“`
yum install php-xml –enablerepo=remi-php56
“`
- あとはインストーラの指示に従って、インストールを進めましょう。
「Joomla! は正常にインストールされました。」が表示されれば完了です。
installationディレクトリを削除するとシステムが使用できるようになりますが、その前に、言語の追加インストールもしておいたほうがよいでしょう。
(ちなみに、パーミッションが適切に設定されていないと画面に通知が出ます。)
- 「管理画面」ボタンを押すと管理画面へのログイン画面となります。
パフォーマンス検証
サンプルでインストールした公開サイトをパフォーマンス検証してみましょう。今回はサンプルにブログサイトをインストールしました。
パフォーマンス検証には、今回もApache Benchを使います。
比較検証するのは、KUSANAGIと非KUSANAGIの仮想インスタンスで、AWSのインスタンスタイプは、いずれもt2.mediumとし、PHPなどのバージョンは揃えてあります。
以下のコマンドを発行して検証を行います。このコマンドは、100ユーザ同時に、1ユーザあたり30リクエストを発行する、というものです。
“`
ab -n 3000 -c 100 http://(ホスト名)/joomla/index.php/ja/
“`
# 検証結果
早速、検証結果です。
||KUSANAGI|非KUSANAGI|
|:–|:–|:–|
|Document Length|11134|11141|
|Complete requests|3000|3000|
|Failed requests|0|0|
|Requests per second [#/sec]|37.81|14.37|
|Time per request [ms]|26.447|69.578|
Requests per second は、秒間にさばけるリクエスト数です。KUSANAGIでは約38リクエストとなりました。対する非KUSANAGIは約14リクエストです。
Time per request は、1リクエストあたりの処理時間です。KUSANAGIの約26msに対して、非KUSANAGIは約70ms掛かっています。
これにより、今回のJoomlaでのKUSANAGIのパフォーマンスは、非KUSANAGIに比べて、およそ2.6倍という結果が得られました。
まとめ
今回検証したJoomla!でも、KUSANAGIと非KUSANAGIを比較すると、KUSANAGIのパフォーマンスの良さは圧倒的でした。
ただ、前回のMODXでは、Time per request(1リクエストあたりの処理時間)の値は約1msでしたので、Joomla!に改善の余地が多く残されているかもしれません。
次回も、KUSANAGIでいろいろ動かしてみたいと思います。それではまた。