hgot07 Hotspot Blog

主に無線LANや認証連携などの技術についてまとめるブログです。ネコは見る専。

軽量フラットファイル型CMSのGravがよい感じ

研究室やプロジェクトなどのウェブサイトを充実させるのに、さすがにHTML手打ちでは管理的にも見栄え的にも苦しいので、手頃なCMS (Content Management System)がないかと探し始めて、はや三千年。

無茶な要求を並べているわけではないと思うのですが、合致するものが意外にないものですね_('、3」∠)_

メジャーどころのWordPressも触りかけたのですが、なによりデカいのと、セキュリティ問題が度々あって、これは管理しきれないなと。軽量CMSでは、Typesetter CMSやOneThird CMSなども触ってみたものの、どうも自分にはしっくりこない (あくまで個人の感想です)。面倒くさくなってしばらく投げていたところで、すっかり重くなった腰を上げて触ってみたら良さそうだったのが、Gravでした。

getgrav.org

他のCMSと比べると日本語の情報が少なくて、とっつきにくい印象はありますが、世界的には人気の軽量CMSらしいです。

 

CMSに欲しかった機能・仕様

どのCMSを使おうかと探し始めると、「ぼくのかんがえたさいきょうのCMS」みたいなのが検索にワンサカ引っかかってきて、くじけそうになりませんか……、ぇ、そんなことはない?そうですか。

私がCMSに求めていたのは、以下のような機能や仕様です。数多あるCMSでも、一つクリアするごとに候補がバサバサ減っていきます。もし「お前は俺か?」と思った人は、Gravを試してみることをお薦めしておきます。そうでない人は、この先読む必要はなさそうです。

  • DB不要で、導入が容易な、軽量CMS
  • XREAのようなウェブホスティングにも簡単に導入できること
  • 自分以外にもコンテンツをいじらせたいが、サーバにログインさせたくはないので、ウェブ画面上でコンテンツ管理できること。
  • ページの記述はなるべく標準的なフォーマットがよく、できればMarkdown対応のエディタがあるとよい
  • 自動生成された英数字の羅列などがURLに含まれないように、管理者が手動で命名・固定したURLが使え、他サイトから各ページを参照しやすいこと。
  • トップページをCMS管理下に置いても、既存コンテンツのツリーをできるだけ維持し、共存させられること。(過去に別のCMSを使っていた場合はこの限りではない)
  • ファイルのツリー構造がURLと対応付けられた、フラットファイル型CMSであること。
  • CMSのトップページの位置をサイト内で変更しても、コンテンツ内の内部参照リンクを変更しなくても済むこと。
    (例えば example.com/cms/ から example.com/home/ にリネームするような場合)
  • コンテンツのバックアップがとりやすく、ファイルシステム上でコンテンツの抽出や修正が可能なこと。(コンテンツがDBの奥底で触りにくいようなシステムは論外)
  • 軽量といっても、それなりに拡張性があると嬉しい。
  • 静的コンテンツの生成ができると、なお嬉しい。
  • 外国人でもコンテンツ編集できるように、海外でもメジャーなものだと嬉しい。日本語の情報もそれなりに欲しい。
  • 最近でもきちんとメンテナンスされていること。

どうでしょう。二分木みたいに、候補が急速に減ったのではないでしょうか。

 

インストールは容易 (のはず)

XREAの場合

XREAへの導入は恐ろしいほど簡単でした。

https://getgrav.org/downloads にある Grav Core + Admin plugin のURLをコピーしておき、XREAのサーバにsshでログイン、

 $ wget <コピーしたURL>

を実行すると、バージョン名のファイル (例えば 1.7.9) ができます。これはZip形式なので、

 $ unzip ファイル名

で展開し、ディレクトリ名を適宜変更すれば、ファイル一式の導入は完了です。XREAのコントロールパネルからPHP74を有効にして、展開したディレクトリに対応するURLの後ろに admin/ を付けてブラウザからアクセスすれば、初期設定画面が現れます。

Linuxの場合

Linuxというか、Apache2の場合ですが、環境によって千差万別なので、マイ備忘録だけ残しておきます。

openSUSE Leap 15.2に導入してみましたが、落とし穴が幾つか。

まず、Apache2がインストールされていても、PHP7は別パッケージなので、zypper install apache2-mod_php7 が必要です。他のディストリビューションでは、使うツールが違います (aptなど)。

yastHTTPD設定ツールは、折角設定したvhost.dを壊してしまうなど、色々と面倒くさかったので、使わない方が無難です。PHP7を有効にするには、/etc/sysconfig/apache2 の中の APACHE_MODULESに php7 を追加します。

バーチャルホストの設定で、PHP7の設定ファイル /etc/apache2/conf.d/mod_php7.conf をIncludeする必要があります。

<Directory ...> セクションの中で、

  AllowOverride All
  Options FollowSymlinks

の設定が必要です。このFollowSymlinksを忘れていたら、管理画面がブランクのままで、かなりの時間を溶かしました_(゚。3」∠)_

「私はドキュメントをよく読みませんでした」の札を首から下げている……

 

設定の色々

テーマとカスタマイズ

気に入ったテーマをインストールして、そのまま使ってもよいでしょう。もし少しカスタマイズしたければ、下の「参考になったサイト」を参照して、ベースになるテーマの複製を作り、それをいじるとよいでしょう。(こういった方向性を示してもらえるだけで、ありがたいのです)

タイトルの設定

真っ先にサイトのタイトルを変更したいと思いますが、これは管理画面のスパナのアイコンから、Configuration - Siteで設定できます。

ロゴとfaviconの設定

ヘッダーがGravのロゴのままでは恥ずかしいので、変更します。これは、テーマ設定の中にある Header Defaults, Custom Logoに画像をアップロードすれば変更できます。Mobile Custom Logoにも画像を入れておかないと、スマホで閲覧したときにGravのロゴのままになってしまいます。

ブラウザが使うアイコン、つまり favicon.ico も、すぐに変更したいでしょう。user/themes/<テーマ名>/images/favicon.png があるので、32×32画素のPNGファイルを作って、上書きすればよいようです。管理画面でキャッシュをクリアして反映。別の名前のファイル名にしたければ、templates/partials/base.html.twig を編集して、ファイル名を変更すればOK。(管理画面のどこかに、faviconを変更するところがあるかもしれませんが、未確認)

既存ファイルの同居

Grav管理下のディレクトリに、適当にサブディレクトリを掘ったりして既存のHTMLファイルなどを置けば、従来のURLのままでアクセスできるようです。Gravのファイル名やディレクトリ名とぶつかるとダメですが。

 

参考になったサイト

以下のサイトが参考になりました。

 

感想

日数も浅く、まだあまり使い込んでいないのですが、率直な感想は「ちょっと動作がトロいかな」といった程度です。静的コンテンツはまだ試していません。