クラウド版MTをちょっとさわってみた
公開日 : 2014-04-30 16:51:47
本当は、"DynamicMTMLをクラウド版MTで動かす"というエントリにする予定だったけど、今のところ途中までしか確認できていない。ので題名変えた(><。
動きました。追記した。
現在公開されているDynamicMTMLはMTOSをターゲットとしていたのでGPLv2なので、MT6で動かすためには色々調整(大人の事情も含めて)が必要なのですが、MTクラウド版の仕様やPHPまわりのメモ的に書いておきます。
確認したのはS4100iプラン。確認したのはPowerCMS4.0に同梱のDynamicMTML2.0の最新版で、公開しているGPL版とは少し異なります。
クラウド版のMTでは、addonsが設置できないので、plugins以下にアップする
DynamicMTML.packはplugins以下に設置しても動作自体には問題ないようです。 クラウド版MTにFTPSでアクセスすると、以下のようなディレクトリ構成になっていますので、DynamicMTML.pack を plugins以下にアップします。
追加したプラグインを認識させるには、システム全般設定を保存する
プラグインを追加するだけでは、クラウド版MTはプラグインを認識してくれません。(nginx+PSGIなので常駐している)
追加したプラグインを認識させるには、システム全般設定を保存します。以下の画面ですね。何も設定変更は必要ありません。ただ、この画面を開いて「保存」してください。これでプラグインが認識されるようになります。
クラウド版のMTでは、mt-config.cgi を編集できない
システムスコープで、「クラウドサービス」→「MT環境変数」を選択して必要な環境変数をここに追加する必要があります。DynamicMTMLを動かすのに必要な最小限の設定は、PowerCMSFilesDir環境変数です。これがないと、app/movabletype以下に powercms_filesディレクトリを作成しにいって、ここでコケます(パーミッションがないので)。
このMT環境変数画面で設定できるようにするためには、プラグイン側に修正が必要です。DynamicMTML.pack/config.yaml の config_settings: 以下に、PowerCMSFilesDir、updatable: 1を追加します。
config_settings:
PowerCMSFilesDir:
updatable: 1
追加した後は、システム全般設定を保存し直してください。
FTPSでアクセスした時に見えているディレクトリは、/data/file 以下のようです。よって、FTPSで /mt-static/support/powercms_files を作成し、 PowerCMSFilesDirには /data/file/mt-static/support/powercms_files を指定します(plugins以下でもいいのですが。本当は、こういう用途向けに任意のディレクトリを作成できるか、それ向けのディレクトリがあるといいと思うのですがね)。
クラウド版のMTでは、PHPファイルの更新時にも全般設定の保存が必要
これ、常駐しちゃうんですよね。nginx経由で、PHPハンドラを指定して動かしている? みたいで、PHPのプラグインや、そもそも拡張子を.phpにしたファイルも更新しただけでは表示させてみても表示内容が変わらないです。
<?php
echo 1;
?>
というファイルをtest.phpとして設置して表示、結果は「1」。
<?php
echo 2;
?>
に変更して保存、表示、結果は「1」。変更されません。 全般設定を保存すると更新されます。これ、MTからphpを出力して動的に動かすサイトなどによっては、色々問題がありますね。回避する方法があるのでしょうか。
これも、追記
上記のPHPの更新ですが、管理画面にインデックステンプレートを作って更新したら即時反映されますね。何か謎が多いぞ(試行錯誤するより聞いたほうが早いという気になってきた)。
クラウド版MTでは phpinfo は使えないっぽい
尚、上記の通り、phpinfoは使えないっぽいです。PHPの設定とかバージョンとかはどっかにありまっしたっけ?
.htaccessについては注意が必要
MTのダイナミックパブリッシング用の .htaccessはちゃんと動きます。ただ、DynamicMTML用の存在するファイルをリライトするところが動いていません。なので、(きっと)続く
追記。動いた。.htaccessをとりあえずそのまま貼っておきます。
##
## DynamicMTML generated this part; don't remove this line! ##
## <version>2.01</version>
## <bootstrapper>.mtview.php</bootstrapper>
Options -Indexes
DirectoryIndex /.mtview.php
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
# RewriteCond %{REQUEST_FILENAME} !/mt-static/html/editor-content\.html$ [NC]
# RewriteCond %{REQUEST_FILENAME} !/mt-static/html/blank\.html$ [NC]
RewriteCond %{REQUEST_FILENAME} ^[^.]+$|\.(html|mtml|HTML|MTML)$ [NC]
RewriteRule ^ /.mtview.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
Order Deny,Allow
Deny from all
<FilesMatch (^(|[^.]+)|.mtview.php)$>
Allow from all
</FilesMatch>
ErrorDocument 403 /.mtview.php
ErrorDocument 404 /.mtview.php
</IfModule>
php_flag short_open_tag off
## DynamicMTML generated this part; don't remove this line! /DynamicMTML ##
さらに追記
クラウド版MTで、DynamicMTMLが吐き出した.htaccessが動かなかった原因が、わかった!
ウェブサイトの設定が、
http://xxxxxxx.xxx.jp
最後に、/ がなかったのでした。ハマりがちなので、注意、ね。
さらにもう一つ追記
PowerCMSFilesDir を /mt-static/support/powercms_files にすると、Webアクセスで見えてしまうので、ドキュメントルート以下にしてBasic認証をかけるか(Basic認証は管理画面でかけられる)、/data/file/backup/powercms_files とかにしたほうが良いかもしれない。ただ、backup 以下の挙動がわかんないので(いつファイルができて、ひょっとして、削除されたりするんかいな)、やっぱりそういう用途のディレクトリがあったほうがいいね。