KUSANAGIでSoyCMSを動かしてみた!

小澤 昌樹

株式会社シオラボの小澤氏がオープンソースのCMS「SoyCMS」を調査。新バージョン「Ver.3.0.0」は、使いやすい管理画面などの特徴とともに、拡張機能「SoyAPP」によりさまざまな追加インストールが可能で、サイトの成長を図ることができます。さらに、「Apache HTTP Server(1.3,2.0,2.2)」と「PHP 5.2.0以降」が必須ながらも、データベースとしては「MySQL」か「SQLite」を選べます。また、KUSANAGIを使用すると約3.5倍のパフォーマンスが実現することが明らかに。

# はじめに
みなさん、こんにちは。株式会社シオラボの小澤です。「KUSANAGIでいろいろ動かして速さを確認してみた!」も、いよいよ5回目となりました。

前回は、福岡生まれの国産CMS「baserCMS」を動かしてみました。baserCMSはもともとパフォーマンスのよいCMSです。さらにKUSANAGIを使うことで、より一層のパフォーマンスを発揮できることが証明できました。

さて、5回目の今回は、「SoyCMS」です。こちらもオープンソースのCMSです。9月7日に「Ver.3.0.0」がリリースされ、話題となりました。どのようなCMSなのでしょうか。早速見ていきましょう。

# SoyCMS
SoyCMS(ソイシーエムエス)」は、「サイトをグーンと成長させられる国産CMS」として、株式会社Brassicaが開発しています。

大きな特徴は、「HTML完成から組込み完了までの工数がとても少なくなる」、「一度組み込んでからの修正がとても楽(HTMLだけ編集するコストとほぼ変わらない)」です。これを実現しているのは、ソースコードにおけるコメントタグと独自属性値による制御で、これによって、デザイナーとプログラマの間にある障壁が減り、両者が随時確認しながらサイト制作を進めることができます。

SoyCMSは、公開から約10年が経っているそうですが、2017年9月7日にリリースされた「3.0.0」は、Bootstrap系のCSSフレームワークであるSBAdmin2を採用し、スマートフォンでも操作しやすい管理画面となりました。

また、SoyCMSには、各種の拡張機能を追加インストールして使用できる「SoyAPP」という機能を備えていて、サイトを成長させられるというイメージにもマッチします。拡張機能には、本格的ショッピングカートシステムの「SOY Shop」や、簡単お問い合わせフォームの「SOY Inquiry」などがあります。

SoyCMSの動作環境ですが、「Apache HTTP Server(1.3,2.0,2.2)」と「PHP 5.2.0以降」が必須です。データベースには、「MySQL」か「SQLite」を使えますが、今回は、SQLiteを使ってみることにしましょう。

# 事前準備
今回も使用する仮想マシンは、AWS用の「KUSANAGI for AWS」です。KUSANAGIの初期設定KUSANAGIのプロビジョニングを参考に、初期設定とプロビジョニングが完了しているものとします。

KUSANAGIの初期設定では、SoyCMSのシステム要件に従って、Webサーバに「Apache」、アプリケーションサーバに「PHP5」を選択します。

# 設置とインストール
それでは、SoyCMSを設置し、インストールしてみましょう。

1. SoyCMSのダウンロードページから、Ver.3.0.0をダウンロードし、ローカルで解凍します。解凍したディレクトリごと、インスタンスにアップロードしましょう。アップロードしたディレクトリは、Apacheのpublic_htmlの下、例えば、 `/var/www/html/soycms` となるように配置します。

2. インスタンスにsshログインし、rootになります。

3. 一旦、Apacheを再起動します。

“`
systemctl restart httpd.service
“`

4. ブラウザで、 `http://(ホスト名)/soycms/` にアクセスすると、以下のように、「致命的なエラーが発生しました」というメッセージが表示されることがあります。これは、単にパーミッションが与えられていないことが原因ですので、メッセージに従ってパーミッションを変更します。

“`
chmod 777 /var/www/html/soycms/admin/cache/
“`

5. パーミッションを適切に設定して、画面をリロードすると、初期管理者作成の画面となります。管理者のIDをとパスワードを入力し、作成します。作成できたら、画面の指示に従って、SoyCMSにログインします。

6. ログインすると、以下のような画面となります。非常にシンプルです。

7. 続いて、サイトの作成に移りましょう。「サイトの作成」ボタンを押して、サイトの作成画面に遷移します。サイトIDとサイト名を入力し、「実行」ボタンを押すと作成されます。サイトIDは公開画面のURLにも使われます。

8. サイトが作成されると、サイト一覧に表示されます。そこで、作成したサイトにログインしてみましょう。ただし、初期状態のサイトには何も含まれていないので、サンプルデータを読み込んでサイトを作ってみましょう。

9. サンプルデータを読み込んで、公開画面にアクセスすると、以下のような画面が表示されます。

# パフォーマンス検証
それでは、公開サイトを使って、パフォーマンスを検証してみましょう。

パフォーマンス検証には、今回も、Apache Benchを使います。

比較検証するのは、KUSANAGIと非KUSANAGIの仮想インスタンスで、AWSのインスタンスタイプは、いずれもt2.medium、PHPなどのソフトウェアのバージョンは揃えてあります。

検証に使用するのは次のようなのコマンドです。このコマンドは、100ユーザ同時に、1ユーザあたり30リクエストを発行する、というものです。

“`
ab -n 3000 -c 100 http://(ホスト名)/kusanagi/
“`

# 検証結果
早速、検証結果です。

||KUSANAGI|非KUSANAGI|
|:–|:–|:–|
|Document Length|1953|1953|
|Complete requests|3000|3000|
|Failed requests|0|0|
|Requests per second [#/sec]|116.99|33.94|
|Time per request [ms]|8.548|29.460|

Requests per second は、秒間にさばけるリクエスト数です。KUSANAGIでは約117リクエストとなりました。対する非KUSANAGIは約34リクエストでした。

Time per request は、1リクエストあたりの処理時間です。KUSANAGIの約8.5msに対して、非KUSANAGIは約29ms掛かってしまいました。

今回のSoyCMSでも、KUSANAGIを使用すると、およそ3.5倍という圧倒的なパフォーマンスが出るという結果となりました。

# まとめ
今回のSoyCMSは、データベースに、MySQLではなく、SQLiteを使ってみました。それでも、KUSANAGIインスタンスでは、3.5倍近いパフォーマンスを出せました。

ちなみに、今回のSoyCMSは、前回のbaserCMSと同等程度のパフォーマンスが出ていますね。コンテンツがシンプルだったとはいえ、比較的、高速なCMSと言えるでしょう。KUSANAGIを使うことで、より一層のパフォーマンス向上も期待できます。

次回も、KUSANAGIでいろいろ動かしてみたいと思います。それではまた!

<< KUSANAGIでbaserCMSを動かしてみた!KUSANAGIでOctoberを動かしてみた! >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解