DB 不要の CMS である pluck を試してみたが…。
DB が使えないサーバーで使える CMS を探してたところいくつか良さ気なのが見つかったので、実際にサーバー上で試してみた。
試した pluck のバージョンは、4.7.15 です。
結果(私の環境での)
私の環境では採用が難しいかも。
独自ドメインを使用 & .htaccess で RewriteCond を使ってるのが、pluck との相性が良くないのかもしれない。
pluck の一部コード書き換えと .htaccess 無効化で使えるようにはなったんだけど、これだと pluck 自体のアップデートで上書きされちゃうんで採用は難しいかなと。
pluck のプラグインで対応するか(対応できるかは分からない)私が PHP や .htaccess に詳しければなんとかできるのだろうか。
もうちょっと様子を見てみよう。
DB 不要の CMS を使うメリット・デメリット
WordPress と比較したメリット・デメリットをざっくり挙げます。
メリット
- DB を使えないサーバーで CMS を利用できる -> 安いサーバーで稼働できる -> コスト減
- 動作が軽い
デメリット
- ルーティングの自由度が低い
- ユーザーの概念がないので複数人で運用するサイトには向かない
- SEO が弱い説あり(弱いというか WordPress が強い。pluck のテーマをゴリゴリ作ればなんとかなるのか?)
課題(私の環境での)
ルーティングがおかしい
ドキュメントルートが 108nen/www
で pluck を 108nen/www/nekonium/pluck
にインストールしたとする。
pluck.nekonium.com
の Web 公開フォルダとして 108nen/www/nekonium/pluck
を設定する。
この状態で pluck.nekonium.com
にアクセスすると pluck.nekonium.com/nekonium/pluck
にリダイレクトされて 404 になってしまう。
原因
pluck では、pluck 自体のルートを関数やサーバー変数で設定してるようで、ここが私の環境では悪さしているようだ。
修正手順
data/inc/variables.all.php
の下記を書き換える。
修正前
//Site base directory (/var/www/pluck)
define('SITE_DIR', str_replace('\\', '/', rtrim(realpath(rtrim(dirname(__FILE__), '/\\') . '/../..'), '/\\')));
//Site base URL (/pluck)
define('SITE_URL', str_replace('\\', '/', substr(SITE_DIR, strlen(rtrim(realpath($_SERVER['DOCUMENT_ROOT']), '/\\')))));
修正後
//Site base directory (/var/www/pluck)
define('SITE_DIR', '');
//Site base URL (/pluck)
define('SITE_URL', '');
dirname(__FILE__)
と $_SERVER['DOCUMENT_ROOT']
の部分なのですが、ここがドメインの設定ではなく、生の設定(ドキュメントルートの基にした)を返すので、ルーティングがチグハグになってしまってる。
なので、ここは空の文字列を返すように変更する。
この時点で pluck.nekonium.com
にアクセスすると pluck で作成されたページが表示される。
…表示されるが、なにかおかしい。
白紙の HTML ファイルにテキストエディタで適当に文字列を入力したかのような、どシンプルな画面が表示されている。
テーマのスタイルシートが読み込まれない
Chrome の DevTools で確認するとテーマのスタイルシートdata/themes/default/style.css
が読み込まれていないことが分かった。
しかし、ルーティング問題が解決したのに何故ファイルが読みこまれないのだろう。
よくよく DevTools を確認するとエラーの内容が 500 であることに気づいた。
修正手順
ここらへんは、私の勉強不足で理由がわからないのだけど、下記のファイルを削除したところスタイルシートが正常に読み込まれるようになった。
data/themes/.htaccess
原因不明
.htaccess
の中身は下記のようになっているんだけど、何が原因だったからお分かりの方がいらっしゃいましたら教えて下さい。
<FilesMatch \.php$>
SetHandler None
</FilesMatch>
<FilesMatch \.phtml>
SetHandler None
</FilesMatch>
Options -ExecCGI
php_flag engine off
まとめ
一応、稼働するようにはなったんだけど、ソースコード修正の影響で今後どういう副作用が出るか分からないのでやはり採用は難しい。
勉強も含めて pluck プラグインの開発やっちゃうのか?(多分やらない)
WordPress の URL を最初に入力させるのは設計的に正解だと思いました。流石 WordPress。