2008年3月 7日

Windows XP のローカルサーバ環境(ジャンクション利用)への Movable Type 4.1 のインストールで「mt-staticがみつかりません」という警告が表示される場合の対処

Windows XP で、XAMPP + XAMPP addon Perl のローカルサーバ環境を色々試していたら、次のような事象が発生することが分かりました。

1.問題

Perlインタプリタのパス解決のために、ジャンクション(後述)を設定し、Movable Type 4.1 の新規インストールを開始すると、次のような警告画面が表示されます。

エラー画面

もちろん、mt-static はフォルダ名も変更しておらず、アプリケーションディレクトリ直下にあります。

この状態で、フォームに表示された(正しい)データのまま「開始」をクリックしても、次のような同じ画面が表示され、無限ループに陥ります。

エラー画面

PCを変えても同じ事象が発生したので、100%発生するのではないかと思われます。

ちなみに、本当に mt-static フォルダがみつからない場合は、次のように正しいレイアウトで表示されます。

正常なエラー画面

最初の画面のように、2つの画面が重なったような、妙なデザインで表示されている場合は、ほぼ今回の問題に遭遇していると考えて間違いないでしょう。

2.原因

冒頭に記述した通り、Perl インタプリタのパス解決に使用した「ジャンクション」という機能に起因しているようです。

ジャンクションとは、Linux の「シンボリックリンク」のようなもので、XAMPP addon Perl のインストールパス¥xampp¥perlを¥usrとして、仮想的なフォルダを作成することができます。Movable TypeのCGIファイルのデフォルト設定は、¥usr¥bin¥perlをインタプリタのとして認識するため、このような設定が必要です。

なお、ジャンクションの設定には、下記のツールを使いました(「ツールが良くない」という意味ではありませんので、誤解なきよう)。

リンク作成シェル拡張for Windows 2000/XP

そもそも、Movable Type のインストール開始時には、mt-staticの中にある mt.js ファイルを取得して、さらにその中に「function openManual」という文字列があることをもって、mt-static パスの取得を成功と判定していますが、この処理が正常に動作しないようです。
エラーになる時のHTTPレスポンス($response->status_lineを出力)を見てみると、

500 Can't locate object method "configure" via package "Net::HTTP"

となっていました。

ジャンクション以外の方法で Perl インタプリタのパスを解決した場合はmt-static パスのエラーにはならないので、ジャンクションがこの問題の原因と考えます。

3.対処(その1)

環境設定ファイル、mt-config.cgiを作ってからアクセスすれば、この無限ループに入ることなくインストールできます。もともと mt-config.cgiは、MT3.x 前期の時代には、インストール前に手動で設定していたファイルです。

作り方は、アプリケーションディレクトリに mt-config.cgi-original がありますので、このファイルをコピーするか、リネームしてmt-config.cgi の元ネタを作ります。

次に、任意のエディタで mt-config.cgi を開き、下記の青色の部分を設定します。

    :
# The CGIPath is the URL to your Movable Type directory
CGIPath    http://www.example.com/cgi-bin/mt/
 
# The StaticWebPath is the URL to your mt-static directory
# Note: Check the installation documentation to find out 
# whether this is required for your environment.  If it is not,
# simply remove it or comment out the line by prepending a "#".
StaticWebPath    http://www.example.com/mt-static
 
#================ DATABASE SETTINGS ==================
#   REMOVE all sections below that refer to databases 
#   other than the one you will be using.
 
##### MYSQL #####
ObjectDriver DBI::mysql
Database DATABASE_NAME
DBUser DATABASE_USERNAME
DBPassword DATABASE_PASSWORD
DBHost localhost
 
##### POSTGRESQL #####
ObjectDriver DBI::postgres
Database DATABASE_NAME
DBUser DATABASE_USERNAME
DBPassword DATABASE_PASSWORD
DBHost localhost
 
##### SQLITE #####
ObjectDriver DBI::sqlite
Database /path/to/sqlite/database/file

CGIPath は Movable Type をインストールしたパス、StaticWebPath は、今回問題となっているスタティックディレクトリのパス(mt-staticまで含む)を記述します。

その下はデータベースの設定です。MYSQL/SQLITE はいずれか一方のみ、必要な項目(MySQLであればデータベース名・ユーザ名・パスワード、SQLiteはデータベースのパスのみ)を設定して、不要な方は削除してください。
赤色の POSTGRESQL は最初から削除してください(使うのであれば他のDB設定を削除)。

保存して、ブラウザから Movable Type のインストールディレクトリにアクセスします。

ログイン画面

「ログイン」をクリックすれば、mt-static の検証はおろか、途中のデータベース設定などのウィザードを一気にスキップして、アカウント作成画面に進みます。

アカウント

これで、インストールを最後まで進められます。

4.この対処による懸念事項

インストール後も、HTTP経由でローカルホストにアクセスする機能が一部、使えない可能性があります(下)。

テーマのURLでローカルホストを指定

Feedウィジェット

Feedウィジェットでローカルホストを指定

Feedウィジェット

5.対処(その2)

ジャンクションを使わずに、全 CGI の shebang 行(1行目の #!/usr/per/bin という部分)を

#!/xampp/perl/bin/perl

に変更するなど、他の方法で Perl インタプリタのパスを解決します。

Comments [0] | Trackbacks [0]
2008年3月 6日

Movable Type でサブドメインを利用する場合の設定

March 6,2008 2:02 AM
Tag:[, , ]
Permalink

インストールした Movable Type で複数のブログを作成し、各ブログに異なるドメインを設定した場合の対処方法です。
以前質問を頂いたので、情報展開しておきます。

結論から申し上げますと、mt-config.cgi のパスを変更する必要があります。

インストール後の mt-config.cgi の CGIPath(アプリケーションディレクトリを示す)と StaticWebPath(スタティックディレクトリを示す)のパスは、次のようなドキュメントルートからの記述になっています。

#======== REQUIRED SETTINGS ==========
 
CGIPath        /cgi-bin/mt/
StaticWebPath  /cgi-bin/mt/mt-static/

本来のドメインが

foo.com

である場合、mt.cgi のパスは

http://foo.com/cgi-bin/mt/mt.cgi

となりますが、サブドメイン sub.foo.com では、mt.cgi のパスを

http://sub.foo.com/cgi-bin/mt/mt.cgi

と認識してしまい、(サブドメインの物理パスはドメインと異なるため)CGI が正常に動作しません。これはドメインの部分に、ブログの「サイトパス」を結合しているのが原因です。

ということで、サブドメインなど、本来のドメインと異なるドメインから、正しいアプリケーションディレクトリやスタティックディレクトリを参照させるには、FTP ツールで mt-config.cgi をダウンロードして、CGIPath と StaticWebPath をそれぞれ、

CGIPath        http://foo.com/cgi-bin/mt/
StaticWebPath  http://foo.com/cgi-bin/mt/mt-static/

と、ドメインを加えた URL に書き直す必要があります。

実際に、ページに出力されて影響がある部分は、CGIPath については、いわゆるCGI(コメント・トラックバック・検索・XMLRPCなど)の起動部分や、mt.js が該当します。
StaticWebPath(mt-static)については、デフォルトテンプレートでは、クレジットバナーやフィードアイコンなどへの参照があるようです。

デフォルトテンプレートのテーマファイルの参照は、MTStaticWebPath タグが使われているので、この変更ですべて対処されると思ってますが、他にも適用箇所があるとか、プラグインとかで対処できるといった認識誤りがありましたらご指摘ください。スタイルを切り替えた場合に影響があります。

上記を含めた、サブドメインについての詳細は、「Movable Type 4.2 パーフェクトガイド」の7.1に解説しています。

Movable Type 4.2 パーフェクトガイドMovable Type 4.2 パーフェクトガイド
荒木 勇次郎

毎日コミュニケーションズ 2008-07-31
売り上げランキング : 1457

Amazonで詳しく見る
by G-Tools
Comments [6] | Trackbacks [3]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3