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

レンタルサーバー 【ヘテムル】に、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 のシンボリックリンク)
- admin.haz.jp/(管理用)
MTOSをインストールしたいディレクトリを作り、サブディレクトリ「mt」へ、MTOSのファイルを展開する。
サブディレクトリ「mt」の中の「mt.cgi」だけを管理ディレクトリのルートへ移動する。
そのディレクトリに管理用サブドメインを割り当てる。(例:admin.haz.jp)
MTOSで構築するサイトの公開用ディレクトリを作り、公開用のドメインを割り当てる。(例:www.haz.jp)
公開用のディレクトから、管理用ディレクトリ/mt へのシンボリックリンクを作成。
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の出力結果をフックか書き換えて変えれないかな。