「MovableType」タグアーカイブ
Movable Type 6 へアップグレードした。
MovableType6から OpenSource版はなくなったが、個人無償ライセンスがあるのでダウンロードした。
Movable Type 6 へのアップグレード に従ってアップグレードする。
ログインしようとしたら Internal Server Error が出たが、これは cgi のパーミションが 707 になっていなかったため。
※ サーバー環境によって cgi のパーミションが規定されているので注意。
管理画面にログインするとアップグレードが始まり、問題なく完了した。
これでしばらく使ってみよう。
その他、ちょっとした備忘録
cgi のソースがそのまま表示されて perl のスクリプトとして実行されない。
Perl が入っているならば、httpd.conf が正しく設定されていない可能性がある。
以下の一行が有効になっているか?
1 |
AddHandler cgi-script .cgi .pl |
Options に ExecCGI が指定されているかを確認。
1 2 |
<Directory "/var/www/html"> Options FollowSymLinks ExecCGI |
設定したら、apache をリスタート。
Perlの追加モジュールのインストール
先ずは CPAN をインストール。
1 |
yum install perl-CPAN.x86_64 |
CPANコンソールを立ち上げてモジュールをインストールする。
1 2 |
# cpan cpan [1]> install DBD::SQLite |
その他情報
動作要件 | Apache HTTP Server 2.0以上 |
MySQL Server 5.0以上 | |
Perl 5.8.1以上(5.14+を推奨) | |
PHP 5.0以上(5.3以上を推奨) ダイナミック・パブリッシング利用の場合のみ必要 |
|
承認ワークフロー | 標準では持っていない。 CheckRelease for Movable Type \80,000 導入で対応可能だが投稿にしか対応していない。 ここから45日仕様版ダウンロード可能 ウェブページにも対応しているのはあるんだろうか。 |
WordPressからMovableType への移行
対象:WordPress 4.3 から MovableType 5.2.10
準備:MovableType に Sandbox というテスト用のブログを作成。
手順:
- WordPressの管理画面 → [ツール] → [エクスポート] → ◎すべてのコンテンツ → [エクスポートファイルをダウンロード]
- MovableTypeのSandboxの管理画面 → [ツール] → [記事のインポート] → インポート元:WordPress eXtended RSS(WXR) / ファイルを選択でエクスポートしたファイルを設定 / テキストフォーマット:改行を変換 残りはデフォルト値 → [記事のインポート]
- すべてのファイルを再構築
補足:
一回目のインポートで途中でエラーになった。トラックバックが原因らしい。
1 |
インポートの途中でエラーが発生しました : トラックバックを保存できませんでした: Failed to execute INSERT INTO mt_tbping (tbping_blog_id, tbping_blog_name, tbping_created_by, tbping_created_on, tbping_excerpt, tbping_ip, tbping_junk_log, tbping_junk_score, tbping_junk_status, tbping_last_moved_on, tbping_modified_by, tbping_modified_on, tbping_source_url, tbping_tb_id, tbping_title, tbping_visible) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) with blog_id, blog_name, created_by, created_on, excerpt, ip, junk_log, junk_score, junk_status, last_moved_on, modified_by, modified_on, source_url, tb_id, title, visible: DBD::mysql::st execute failed: Column 'tbping_ip' cannot be null at /.../extlib/Data/ObjectDriver/Driver/DBI.pm line 393. at /.../SAX.pm line 101 at /.../plugins/WXRImporter/lib/WXRImporter/Import.pm line 121 。インポートファイルを確認してください。 |
二回目以降のインポートでは問題なく全記事読込めた。
再構築したらテンプレートに不備があったので修正して再構築。
所感:
- 元のサイトの画像は、ほぼ Flickr か Picasa にリンクしているので特に問題はなかった。
インポート中に、既存のWordPressで公開されているブログからAttachment(画像やファイル)をダウンロードする機能はあるが、そちらは未検証。 - WordPress は改行 = <br> になるが、MovableType ではつながってしまった。
「改行を変換」を選択してもだめだった。Wordpress 側で <br> を記述するなどの対策が必要?
一度記事を消してから再度インポートしたら改行は変換された。 - WordPress のエクスポートも MovableType のインポートも カテゴリで絞り込める。特定の分野だけ移行したい場合は、カテゴリでまとめておく必要がある。
移行元サイトはカテゴリが大分類になっているので見直しが必要。 - 当然のことながらショートコードは全滅
どうやら MovableType でもショートコードを使う Plugin は作れるらしい。
MovableType:ウィジェットの追加
[デザイン] → [ウィジェット] → ウィジェットテンプレートの作成
テンプレート名と内容を記入して [変更を保存]
[デザイン] → [ウィジェット] → ウィジェットセットの既存のセットをクリック
先ほど作ったウィジェットを利用可能からインストール済みに移して[変更を保存]
再構築
MovableType サーバ配信
Movable Type で生成したコンテンツを、外部サーバーと同期する方法。
以下の様なスクリプトをどこかに置いて、cron 実行することで実現できる。
sync.sh
1 2 3 4 5 |
#! /bin/sh lftp -u ユーザ名1,パスワード1 -e "mirror --delete --only-newer --verbose リモートDIR1 ローカルDIR;quit" サーバ1 find ローカルDIR/* -type f | xargs sed -i 's!変換前サイトURL!変換後サイトURL!g' lftp -u ユーザ名2,パスワード2 -e "mirror -R --delete --only-newer --verbose ローカルDIR リモートDIR2;quit" サーバ2 |
解説
lftp は ftp クライアント。Windows でも cygwin 版が使える。
最初の lftp で、サーバ1 の リモートDIR1 から ローカルDIRにファイルをコピーする。
mirror コマンドは指定ディレクトリ以外を一括転送。–delete は消えているものはローカルでも消す。– only-newer は新しいものだけコピー。–verbose は詳細表示。
サーバ1 で処理する場合はこの処理は不要。
コンテンツ内部は、作成環境のURLが残っているので一括で置換。
ローカルディレクトリ内の全ファイルの変換前サイトURL を sed を使って、新しいサーバ2 のURLに置き換える。
mirror -R はアップロードミラーリング
サーバ2 で処理する場合はこの処理は不要。
ちなみに、内部リンクのURLを相対パス化して置けば、真ん中の置き換え処理が不要になる。
相対パスにするには BlogRetativeURL とかを使う。
1 2 3 |
<a href="<mt:BlogURL />">トップ</a> ↓ <a href="<mt:BlogRelativeURL />">トップ</a> |
MovableType vs WordPress
ほとんど、どこの無料ホームページスペースも(PHP + MySQL が使えれば)WordPress が動く。
セーフモードでも関係なく、それこそ節操なく動く(笑)。
PHPのバージョン 5.2.4 以上 (PHP 5.4 以上推奨) だが、多少古くても動く。
(古いバージョンの WordPress を使う。セキュリティ的にはお奨めしない。)
最悪、MySQL がなくても、PostgreSQL か SQLite があれば、プラグインを使ってなんとか動かせる。
何かと人気の高い WordPress だけれど、
いまだに「MovableType 知ってる?」とか「MovableType 使いたいんだけれど・・・」という話を聞く。
ということで MovableType を使ってみると、もうアーキテクト(設計思想)から違っているので、確かにニーズがあることが判るね。
MovableType は 一連の html ファイル群を生成する。
最初に設定すれば ヘッダー、フッター、画面レイアウトなどは、以降 MovableType にお任せできるので、コンテンツ作成だけに注力できる。
出来た成果物は html なので、サイトに置くだけで動作する。PHP も データベースも要らないし、携帯向けサイトなどアクセスが集中しやすいサイトでもそれなりに動くと思われる。
もちろん生成するファイルの拡張子を php や cgi にすれば、コンテンツ内にスクリプトコードも記述できる。
一方 WordPress は動的に記事を生成するので、PHP と MySQL が必ず動作する環境でなければならない。
非力なサーバや記事が増えてくると、加速度的に負荷がかかる。
前に GoogleDrive などのクラウドストレージでホームページを公開する実験をしたけれど、そういったところは、cgi が使えないので、MovableType などでコンテンツを管理すると楽かもしれない。
自宅でプロバイダ契約すると、cgi も使えないおまけのホームページスペースが付いてくることがあるけれど、そういったところでも使えるかもしれないね。
MovableType に新しい Theme を追加
テーマ 辺りからダウンロードする。
インストールディレクトリ/themes の下に、解凍して出てきたフォルダごとアップロード。
これで [デザイン] → [テーマ] から選択できるようになる。
そこで、Bootstrap 3 をダウンロードして入れてみたところエラーが発生。
[code language=”text”]
日付アーカイブ「Monthly20150701000000」の再構築中にエラーが発生しました: テンプレート「月別ブログ記事リスト」の再構築中にエラーが発生しました: <mtInclude>タグでエラーがありました: <mt:StatsSnippet>は存在しません(16行目)。
[/code]
mt:StatsSnippet は Google Analytics を表示するもの。 設定していないのでエラーになったのかな?
そのまま で該当ファイル(HTMLヘッダー)を開くので、16行目の <mt:StatsSnippet> をコメントアウトして保存。
エラーが出なくなった。
ちなみに font-awesome を適用するには、[デザイン] → [テンプレート] → スタイルシート(style.css) の先頭に以下の一文を追記。MT6 なら blog_css ?
1 |
@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"); |
その後
テーブルを使うと、その前にすごく空間が開いてしまう現象が発生。でも bootstrap 対応の MovableType テーマを見ると、MovableType6 対応や有料や・・・。
MTOS(OpenSource) は MovableType 6 からなくなっているので、無償版にアップしてしまった方が良いのかもしれない。