[Most contents are written in Japanese Language] [Always under construction]

[ PC系セットアップ覚書 Top]

PC系セットアップ覚書

2011年まで「俺的な非 UN*X 環境をめざして」という題でしたが、 「UNIX系」と「非UNIX系」の区別がだんだん難しくなってきましたので、 あれこれ区別しないことにしました(^_^;


[前] 近況‥ 2006/11a

持ち運んで使うWWWサーバ 2005 秋 2005/11a

[まえ::持ち運んで使うWWWサーバ 2005]
[Table of Contents]

はじめに

前のページで述べたような 環境でしばらく満足していたのですが、 やっぱり人間というのは欲深いものなのですね。 2005(平成17)年の秋くらいから、この環境にだんだん不満を感じる ようになってきました。

‥‥というか、私自身はそれで満足してたんですけど、 とある方面から「フラッシュメモリ等を使った、持ち運び Weblog サーバは可能か」という話が出てきたため、 Weblog が使えるように既存のパッケージを拡張することに したのです。

Weblog サーバとして Movable Type というやつを選択しました。 これは Perl 5 を要求しますので、 すでに作成したパッケージから Jperl 4 を抜いて、 Perl 5 (ActivePerl) with Berkley DB を追加し、 そのうえで Movable Type 3.2 を追加するという作業を行います。 作業の基本的な部分については、Google などで 「Movable Type インストール」なんて文字列で検索をかければ、 いろいろと親切に説明してくれてるサイトがかなりありますので、 そちらをご参照いただくとして。ここでは、それらのページでは 説明されていない「持ち運び Weblog サーバ」特有の 注意点についてのみ書いておきます。


[Table of Contents]

ActivePerl のインストールにおける注意点

ActivePerl をインストールするときのインストール先としては C:\WWW\Perl を指定した。本当はドライブ名の指定は避けたいんだけど、 それだとインストーラーが「うん」と言ってくれないので、とりあえず 泣く泣く C: ドライブを指定した。

こうしてインストールした後に、 DB_File パッケージの追加を忘れずに行っておく。 Movable Type は DB_File か SQL 系のライブラリがないと動かないので。 パッケージ追加方法は、C:\WWW\Perl\bin から ppm コマンドを実行した 後で、ネットワークに接続した状態で

PPM> install DB_File
というコマンドを入力するのが最も手っ取り早い。
参考: http://homepage1.nifty.com/yito/anhttpd/faq/movabletype.html

こうして Perl の準備ができたら、C:\WWW\Perl のフォルダごと、 既存の \WWW フォルダ に丸ごとコピーして使う。Perl のコマンドの位置は \WWW\Perl\bin\perl.exe となる。それとともに、使わないので あれば \WWW\Jperl4 のフォルダは消去する。 \WWW\Perl 使用の際における注意点だけど、 \WWW\Perl のファイル群のあちこちに、インストール時に使用した C:\WWW\Perl という文字列が埋め込まれていることがよくある。 perl の動作があやしい時は、まず C:\WWW\Perl という文字列が どっかに埋もれてないかチェックしてみるとよい。それを見つけたら、 片っ端から C: を除去して \WWW\Perl とするとよい。 (\WWW\Perl\bin 以下にあるバッチファイル群にはほとんど C:\WWW\Perl という文字列が含まれてるぜ! (^_^; なので、 このドライブ文字列を削除する作業は、かなり大変でした‥) 以上でだいたいうまくいくはず。ただし、何故か各ファイルから C: を 削ってしまった後では ppm コマンドがちゃんと動かなくなった。 これは今も何故かわからない。

ちなみに Perl 5 はパッケージのサイズが大きい。 Perl 5 だけで 50MB〜100MB 程度が占有されてしまうので、 Perl 5 を使う、今回のようなセットを置く フラッシュメモリ等の容量は最低 256MB は必要だろうね。


[Table of Contents]

Movable Type 3.2 の改変

Movable Type のサイトからパッケージをゲットして、その中身を とりあえず /WWW/htdocs/MT 以下に置く。mt.cgi は /WWW/htdocs/MT/mt.cgi だ。

各種 CGI ファイルについては、もう片っ端から一行目の Perl のパスを #! /WWW/Perl/bin/perl に書き直す必要がある。 念のために言っておくと、 一行目に何かオプションが付いてるときは、そのオプションもちゃんと 付けるようにしよう。たとえば #! /usr/local/bin/perl -w#! /WWW/Perl/bin/perl -w に書き直す。

ここまでの作業を行うと Movable Type を使ったページの Publishing が できてしまうので、何かすべてうまくいったかのような気がしてしまう んだけど、世の中そんなに甘くない。Weblog の初期設定を行うときの site URL の欄がどうしても気になる。あれこれ試してみてわかったんだけど、 ここでは必ず http://server-name/ のように、 プロトコル名とサーバ名を指定しないといけないようになってるらしい。 指定しないと Entry の Publish をしようとすると「なんか変」とか 言われて Publish ができない。かといってここでサーバ名を指定して しまうと、Publish した後にできる HTML ページの中のリンク先の ほとんど全部に対して http://server-name/ のような サーバ名が入ってしまう。 これだと、サーバのIPアドレスがその時の気分、というか環境で コロコロ変わることが当然の「持ち運び WWW サーバ」では使えない。 そこで、Publish (Build?) した後にできる HTML ページの中のリンク先の 中に、なるべくサーバ名が含まれないようにしよう、と考えた。 つまり Movable Type では href="http://server-name/blog/" なんて感じに site URL で指定したサーバ名がそのまま HTML ファイルの リンク先のところに自動的に埋め込まれてしまうんだけど、 そうじゃなくて、リンク先にはサーバ名などは記入されない、 href="/blog/" な感じにリンクを張るような HTML ファイルを Build してくれるように Movable Type を 改変しようと考えた。

まず書き換えるべき変数を知らないといけない。ここでは default_templates に移動したのち、以下のコマンドを (このコマンド実行部分だけは何故か unix 環境で)実行:

grep href *.tmpl | gawk '{sub(/^.*href=/,""); print; }' | sort | uniq
この結果の各行の行頭にならんだ変数(MTBlogURL など)が、 おそらく書き換え対象なんだろうな、という当たりをつけておく。

そのうえで、./lib/MT/Template/ContextHandlers.pm というファイルを 改変。スクリプトを見てみると‥

  • sub _hdlr_blog_url
  • sub _hdlr_blog_archive_url
  • sub _hdlr_entry_permalink
  • sub _hdlr_category_archive
  • sub _hdlr_archive_link
  • sub _hdlr_entry_link
  • sub _hdlr_ping_url
これらの関数がどうもサーバ文字列の HTML への埋め込みに影響してる ようなので、これらの関数が返すはずの文字列に対し、返す直前に細工を する。具体的には、これらの変数の返り値が変えされる前に、 返り値になるはずの文字列に s!https?://[^/]+/+!/!; を カマすような改編を行う。

こうすると Build された HTML ファイルの中の Blog サイトへの リンク文字列の中から http://server-name/ 部分が(だいたい)消えてくれて、 私がイメージしたとおりの結果が得られました! わーい! (^o^)

ただ私自身は Weblog を使うことがないので、 「これで本当に大丈夫ですね?」とか聞かれても答えられないですけどね。 たぶん「トラックバック」とか「メール」関連は全くダメだろうと思います けど、まあ、元の要求が「コメントが書込めるように」というのが ものすごく強かったということもあり、そのへんは現状では放置してます。


[Table of Contents]

Apache 起動とレジストリ

たぶん起動によってレジストリにヘンなゴミはたまらないだろうと 信じています。

ただ、この「2005 秋」バージョンのパッケージは、作ったのはいいんですけど、 ほとんど使ってません。もっぱら下の「2005」バージョンのものを使ってますね。



[次] 持ち運んで使うWWWサーバ 2005 2005/04a