MovableTypeの最近のブログ記事

概要

robots.txtにsitemap.xmlを記述してSEO対策」 で作成したサイトマップ・ファイル sitemap.xml を検索エンジンのクローラーに参照してもらい、効率よくサイト内を巡回してもらえる。

肝心の sitemap.xml は MovableType や MTOS なら自動生成できる。
MovableType で Google Sitemap に対応する」にて sitemap.xml 自動生成に成功した。
その後、sitemap.xml をカスタマイズし、最終的に次の内容になった。

sitemap.xml の作成手順

  • MTOS の管理画面から [デザイン] → [テンプレート] を選択する。
  • 「インデックステンプレートを作成」をクリックする。
  • タイトルに「sitemap.xml」と入力する。
  • 内容に次の内容を入力する。
  • 出力ファイル名に「sitemap.xml」と入力する。
  • [保存] ボタンを押す。

最後に

MovableType(MTOS) で sitemap.xml を自動生成し、robots.txt と組み合わせることで、安価に効果の高いSEO対策を実施できる。

MTOSまとめ

| | コメント(0) | トラックバック(0)
MTOS(MovableType Open Source) をしばらく使ってきて、これまで分かったことをまとめ。

MTOSとは

MovableType のコア部分が、GPL として公開された。
シックス・アパート社は、MTOS と同等のコアをベースに、ビジネスニーズを満たす商用パッケージを開発していく。

詳細はこちらが詳しい。

商用利用可能か?

可能。MTOSの利用やインストール作業で対価を得てよい。

GPLなので、ソースを改変した物を組織外・他人に使ってもらう場合は、ソース公開の義務が発生。
例えば、次のようなパッチを公開する。

日本語対応状況

MTOSのダウンロードページから英語版(MTOS-4.1-en.zip)をダウンロードできるが、初回インストール時の画面が英語である他は、完全に日本語対応している。

日本語版ダウンロード

こちらに日本語版が用意されている。MTOS-XXX-ja.zip をダウンロードする。
インストール画面が英語で分からなかった人にオススメ。

MTOSの特徴

mod_fcgid 対応
管理画面(mt.cgi)や検索機能(mt-search.cgi)の高速化に mod_fcgid を使える。というより、これを使わないと遅くて自分には耐えられない。
php対応(ダイナミック・パブリッシング機能)
ブログ記事作成時に再構築をせずに済む。
ブログ設定で「すべてのテンプレートをダイナミックに構築する」を選択する。
他、自分が気に入った特徴:

記事作成すると、短時間で google に反映される。
ブログ設定で「更新通知」のところの「google」にチェックを入れるだけでよいので、初心者でもこの機能を利用しやすくなっている。
反映にかかる時間は5分くらい?
Yahoo! など他の検索サイトはデフォルトで列挙されていないので、自分で ping リストを追加する。

自分の ping リスト(2008-04-01)
http://ping.ask.jp/xmlrpc.m
http://ping.namaan.net/rpc/
http://ping.blo.gs/
http://rpc.blogrolling.com/pinger/
http://api.my.yahoo.co.jp/RPC2
http://blog.goo.ne.jp/XMLRPC
http://ping.bloggers.jp/rpc/
http://ping.blogoon.net/
http://ping.blog360.jp/rpc
http://ping.namaan.net/rpc/
http://ping.myblog.jp
http://ping.rss.drecom.jp
http://ping.fc2.com
http://ping.ask.jp/xmlrpc.m
http://rpc.reader.livedoor.com/ping
http://r.hatena.ne.jp/rpc
http://blogsearch.google.co.jp/ping/RPC2
http://ping.rss.drecom.jp/

SEO対応

検索エンジン対策という点では、次の機能をサポートしている。
ping 送信機能
記事タイトルを URL に持ってくる
標準では英数字のみ対応。
パッチをあてると、日本語対応できる。

環境構築時のメモ

  • 自分が mysql に熟達していないせいかもしれないけど、mod_fcgid と組み合わせている際、ときどき管理画面が文字化けしてしまう。

    /etc/my.conf に次の記述を追加する。
    default-character-set = utf8
    skip-character-set-client-handshake
    

    postgresql を利用した方が、文字化けトラブルを回避できたかもしれない。

概要

聞くところによると、SEO対策でURLに日本語でキーワードを含めるのがはやっているとか。
そこで、MTOS(MovableType Open Source) でそれができるかどうか試してみた。
ちょっとファイルを修正すると実現できた。

修正箇所

MTOS-4.1-ja を次のように修正した。
diff -r MTOS.orig/lib/MT/Util.pm MTOS/lib/MT/Util.pm
609c609
<     $s = xliterate_utf8($s);      ## convert two-byte UTF-8 chars to 7bit ASCII
---
>     #$s = xliterate_utf8($s);      ## convert two-byte UTF-8 chars to 7bit ASCII
613c613
<     $s =~ s![^\w\s]!!gs;          ## remove non-word/space chars.
---
>     $s =~ s![^\w\s\x80-\xff]!!gs;          ## remove non-word/space chars.
diff -r MTOS.orig/mt-static/mt.js MTOS/mt-static/mt.js
958c958
<     s = s.replace(/[^-a-z0-9_ ]/g, '');
---
>     s = s.replace(/[^-a-z0-9_ \u3041-\u30ff\u4e00-\u9fbb]/g, '');
MTOS 4.1 でブログ記事を書くとき、「本文」タブの横に「続き」タブがある。
ブログ記事一覧には本文が表示され、「続きを読む」リンクをクリックすると、続きを含めた全文を読むことができる。

ところが、ブログ記事作成時のフォーマットを「なし」にしているにもかかわらず、「続き」にhtmlで文章を入力すると、各行に勝手に <br /> タグが挿入されてしまう。
テーブルを表示したいときなどに、これでは困る。

解決方法

  1. 「デザイン」メニューの「テンプレート」にアクセスし、画面右側の「テンプレートモジュール」をクリックする。
  2. 「ブログ記事の詳細」をクリックする
  3. 12行目付近の convert_breaks="0" を取る。
    修正前
    修正後

背景

MTOS を mod_fcgid 上で動かすと高速化できるが、しばらくすると画面が文字化けしていた。
データベースは mysql 5.2.4 を使用している。

再現方法

# service httpd reload
# service mysql restart

原因

Apache 起動後しばらくするとデータベースとのコネクションが切れる。
その後再接続するときに、MovableType内部で「set names utf8」が実行されないため、発生する。

対策

/etc/my.conf に次の記述を追加した。
default-character-set = utf8
skip-character-set-client-handshake

考察

本当は mt-config.cgi やMTOSの修正で対策できるのが良かったが、うまくいかなかった。

mt-config.cgi に次の記述を追加するのは、効果がなかった。
SQLSetNames 1

また、lib/MT/ObjectDriver/Driver/DBD/mysql.pm の 72行目付近に次の行を追加したところ、DBから取得したデータ以外の画面上の日本語が文字化けした。
$dbd->{mysql_enable_utf8} = 1;

自前のブログ用に MovableType(MT4) のオープンソース版である MTOS をインストールしました。
また、mod_fcgid を使い、管理画面や検索機能を高速化しました。

MTOS (MovableType Open Source)

導入環境
項目 内容
OS Fedora 8
perl 5.8.8-32.fc8
httpd 2.2.8-1.fc8
php 5.2.4-3

MTOSが必要とする perl モジュール

次の rpm をインストールします。
  • perl-DBI
  • perl-DBD-MySQL
  • perl-Image-Size
  • perl-HTML-Parser
  • perl-Crypt-DSA
  • perl-Archive-Zip
  • perl-Archive-Tar

MTOS ファイル展開

/opt/MTOS にファイルを置きます。
mkdir /opt/MTOS
cd /opt
unzip ~/MTOS-4.1-en.zip
mv  MTOS-4.1-en MTOS

Apache 設定

/etc/httpd/conf.d/mtos.conf を作成します。 Apache をリロードします。
service httpd reload

mysql データベース作成

create database mt character set 'utf8';
grant all on mt.* to mt@localhost identified by '任意のパスワード';

MTOS 初期設定

ブラウザで http://ホスト名/cgi-bin/mt/mt.cgi にアクセスし、画面の指示に従いながら設定を進めていきます。

mod_fcgid 対応

mod_fcgid に対応するには、次の rpm をインストールします。

RPM名 Fedora 8 でのダウンロード先
mod_fcgid ftp://ftp.riken.jp/pub/Linux/fedora/releases/8/Everything/i386/os/Packages/
perl-FCGI ftp://ftp.riken.jp/pub/Linux/dag/fedora/8/en/i386/dries/RPMS/

Apache をリロードする。
service httpd reload
http://ホスト名/cgi-bin/mt/mt.cgi にアクセスしてみます。高速化されていたら成功。

IPCCommTimeout の値を調整

MovableType で mod_fcgid を使うときは IPCCommTimeout を大きめに設定しておいた方がいいです。

特に、Apache の error_log に次のエラーが記録されたときは、値を大きくする必要があります。

[warn] mod_fcgid: read data timeout in 40 seconds
/etc/httpd/conf.d/fcgid.conf に次の記述を追加。
IPCCommTimeout 180

参考情報

mod_fcgid

2012年4月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30