MOVABLE TYPE

レンタルサーバー heteml へMovable Type 5.01をインストール

複数のドメインをひとつの Movable Type で管理するインストール方法。hetemlで実証。

MOVABLE TYPE レンタルサーバー 【ヘテムル】に、Movable Type Open Source 5.01(以下 MTOSと記)をインストールした。

いちびって、heteml公式サポートページのマニュアル通りにインストールしなかった理由は下記 2点。

  • 複数のドメインを、一つの MTOSで管理したい。

  • 公開用ドメインからは、管理画面用 CGIである mt.cgiにアクセスさせたくない。

  • その他、公開用としては不要なファイルにアクセスさせたくない。

インストール情報

ディレクトリ構成とファイルの配置

  • web/
    • admin.haz.jp/(管理用)
      • mt.cgi( mtから移動)
      • mt/ (mt.cgi以外のMTOS-5.01-ja のファイルを置く)
    • www.haz.jp/(公開用)
      • mt/ (admin.haz.jp/mt のシンボリックリンク)
  1. MTOSをインストールしたいディレクトリを作り、サブディレクトリ「mt」へ、MTOSのファイルを展開する。

  2. サブディレクトリ「mt」の中の「mt.cgi」だけを管理ディレクトリのルートへ移動する。

  3. そのディレクトリに管理用サブドメインを割り当てる。(例:admin.haz.jp)

  4. MTOSで構築するサイトの公開用ディレクトリを作り、公開用のドメインを割り当てる。(例:www.haz.jp)

  5. 公開用のディレクトから、管理用ディレクトリ/mt へのシンボリックリンクを作成。

  6. SPAM対策として、mt-comments.cgiと、mt-tb.cgiはリネームする。この時、頭に「mt」が付かない名前にリネームする。

mt.cgiファイルの修正

mt.cgiを移動すると、「Can't locate MT/Bootstrap.pm in @INC (@INC contains: /」と、エラーが発生するので、mt.cgiファイルの先頭に 3行書き加える

修正前

use strict;
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';

修正後

BEGIN {
  $ENV{MT_HOME} = 'mt';
}

use strict;
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';

mt/mt-setting.cgiファイルの修正

mt/mt-config.cgiの修正を行う。

MTOSファイルをインストールしたディレクトリを記述

CGIPath        /mt/
StaticWebPath  /mt/mt-static/
StaticFilePath ユーザーディレクトリへのフルパス/admin.haz.jp/mt/mt-static

mt.cgiを移動したので追加

AdminCGIPath /

mt-comments.cgiと、mt-tb.cgiをリネームしたので追加

CommentScript mt-comments.cgi
TrackbackScript mt-tb.cgi

公開側Dir/.htaccess

<FilesMatch "mt(?!-search|-feed).*?\.cgi">
  Order deny,allow
  Deny from all
  Allow from サーバーの IPアドレス
</FilesMatch>
<FilesMatch "\.(pm|pl|yaml|mtml)">
  Deny from all
</FilesMatch>

公開ドメインからは、mt-search.cgi以外の「mt(.*).cgi」にアクセスされたくないので、公開側ディレクトリの.htaccessに上記構文を追加。

公開ドメイン経由で、リモート側から直接実行できる CGIは、名前を変えた mt-comments.cgiと、mt-tb.cgi及び条件式で許可した mt-search.cgi のみとなる。

RSDを使いたい場合は、おそらく FilesMatch条件式を以下の様にする。

<FilesMatch "mt(?!-search|-feed|-xmlrpc|-atom).*?\.cgi">

(恐らく多くの)RSD使わないって人や、RSDって美味いの?って人は、各テンプレートの <head>内から RSD記述を削除しておいた方が良い。

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="<$mt:Link template="rsd"$>" />

参考

シンボリックリンク作成コマンドは、lnコマンドで行う。シンボリックリンクの削除は普通に rmコマンドで削除しても、リンク元は削除されない。

ln -s リンク元 リンク先

修正

  • 2010/03/25 アクセスできる CGIに、mt-search.cgiに加え、mt-feed.cgiを追加。

やりかけメモ

管理画面には共有SSLでアクセスする様にしてみる

その方がクールなんじゃないかと。

共有SSLの場合、https://ssl{nn}.heteml.jp/{ユーザーID}/になる。

出力される mt-staticへのパスが「/mt/mt-static/」なので、https://ssl{nn}.heteml.jp/mt/mt-static/となり、エラーというか、同じssl{nn}に、ユーザー[mt]がいたらヤバイかもしれない。

mt-config.cgi の StaticWebPathを「./mt/mt-static/」にするって人もいるけど、出力したサブディレクトリ内のファイル(http://www.haz.jp/10/01/hoge.html)にも「./mt/mt-static/」なんて出力されるわけでダメ。

StaticWebPathを絶対URLで記入する方法は、複数ドメイン管理では適用できない。mt-config.cgiの中じゃ<$mt:WebsiteURL$>タグも使えない。→StaticWebPath出力関数辺りをどうこうすればいいんじゃない?テンプレートの修正じゃなくて、StaticWebPathの出力結果をフックか書き換えて変えれないかな。

この記事のトラックバックURL:

http://diary.haz.jp/trackback/147

この記事と関連性の高い記事