CGI雑記帖
〜 MakeBanを自分のPCで使う AnHTTPD+ActivePerl+GDインストール法 〜
最終更新日 2004.9.28
白砂が作ったCGIにMakeBan(KIF出力→PNG盤面出力CGI)というのがあるんですが、これはWeb上に設置することで、自分の好きなところに画像(将棋の盤面)を作れるというものです。
しかし、このCGIはGDライブラリというモノが必ず必要になります。なので、プロバイダにGDライブラリがない人は、MakeBanはWeb上で使えません。
しかし、自分のPC上であれば、Web上と同じような状態を構築できます。「仮想Web」でMakeBanを使って画像を作り、あとでファイルをアップロードすることで、MakeBanの画像作成機能を使えるのです。ここでは、そのための方法として、AnHTTPDとActivePerl、それとGDライブラリのインストール法を解説します。
ソフトをインストールするといっても、全部フリーソフトですからお金は掛かりません。ちょっと手間が掛かるかもしれませんが、やり方さえ覚えれば単純に感じるでしょう。
多分ウソが多いので(←ホント)、とりあえずこうやればCGIが使える、くらいの気持ちで読んで下さい。詳しい理論の方は素晴らしいサイトがいっぱいありますのでそちらをどうぞ。ここでは、「とにかく画像を作りてぇんだよとにかくよぉ!」という結果よければ全てよしさんを相手に解説します(笑)。
手順をいきなり解説してもいいんですが、それよりはまず「なにをするのか」を知っておいた方がいいでしょうから、最初にそれを解説しておきます。
正しいことよりも概要が伝わることを目的としていますので、現象として理解する分には結構ですが理論として理解しないで下さい。わざと、あるいは知識不足からのウソが多分に混じってます。
まず、自分のPC上でCGIを動かすためには、Web上でCGIを動かしているのと同じような仕組みを自分のPC上で作らないといけません。Web上でCGIを動かしているサーバ、WebサーバはUNIX/LINUXが多いようですが、大半の方はWindowsを使っているでしょうから、言い換えると、Windows上でCGIを動かすシステムを作る必要があります。
で、Webサーバの仕組みを作るのがAnHTTPというソフトで、CGI(Perl)を動かすソフトがActivePerlというソフトです。
あと、GDライブラリというのは、画像を生成するためのソフトです。DLLみたいなもんです。……と言って判ってくれる人であればばいいんですが、そうでなければ、とりあえず「画像を作るためのそういうソフトがある」と思っておいて下さい(笑)。
要するに、AnHTTPD、ActivePerl、GDライブラリ、この3つをインストールしてちょこちょこと設定をすれば、MakeBanを自分のPC上で使用できるようになるのです。
本気でやろうと思ったらいろいろ難しいのですが、ただ動きゃいいというのであれば、意外と簡単に環境は構築できます。できるだけ画像を豊富に用意して、判りやすく手順を解説していきますので、ゆっくり一つずつでいいからやってみて下さい。
なにはともあれ、ソフトを手に入れないと話になりません。
以下のサイトへ行って、ソフトをダウンロードして下さい(全て別窓で開きます)。
前準備というほど大仰なものではありませんが。
今回の作業では、皆さんが作っているWebページの同じ環境を構築しよう、というものです。Blogを使ってる人の環境は別として(笑)、普通にページを公開している人は、当然そのページのファイルを持っているでしょうし、それはどっかのフォルダにあるはずです。難しく聞こえるかもしれませんが「ページ作ってんだからそのページのファイルは持ってんでしょ」という当たり前の話をしているだけです。
で、MakeBanというCGIは、そのページの中に画像を作ります。かなりページやファイル構成と密接に関係してるんですね。
ですので、CGI構築環境の中に皆さんのページを取り込む形にしておいた方が、のちのち色々と便利なんです。
なので、みなさんが慣れ親しんでいるフォルダ構成ではあるのでしょうが、ここでその構成を変えるようにして下さい。
くどいようですが、フォルダ構成をわざわざ変えなくてもMakeBanを利用することはできます。めんどくさいからそんなのヤダ、という人、この構成を変えたくないんだという人は変えなくても結構です。以下の作業の際、ご自分でフォルダ名等を読み替えて作業を行って下さい。
まず、Cドライブ(ドライブは際DでもEでもXでもどこでもいいです)に、
wwwという名前でフォルダを作って下さい。
ここでは説明のためにCドライブに作りますね(下図)。
このwwwというフォルダが、仮想的なWeb領域になります。
インターネットと同じ、ということです。いや、もちろん、ここでネットができるというわけじゃなくて(笑)、HPでの見え方、フォルダ構成という意味ですが。
次に、wwwというフォルダの中に、
perlというフォルダを作って下さい。
このPerlというフォルダの中に、CGIを動かすプログラム、ActivePerlをインストールします。
今度は、wwwというフォルダの中に、
自分のHPのフォルダを入れて下さい。
ここでは例として、自分のHPのフォルダを「hakusa」としておきましょうか。フォルダ構成は下図のようになります。
HPの内容としては、表紙のindex.htmlがあり、kiji1、kiji2、kiji3という3つのコンテンツ(記事)がそれぞれある形になっています。一般的なHPの体裁だと思います。
ついでにもう一つ、ここで「画像用フォルダ」を作っちゃいましょう。
コンテンツのそれぞれに、imagesという画像用フォルダを用意ます。
そこまで管理するのはどうなのよ……という気がするかもしれませんが、MakeBanで作成する画像はそこへ入れる、としておいた方が、設定上も管理上もラクなんですね。ですので、面倒そうに見えるかもしれませんがこのようにして下さい。
こうしないと動かない、というわけではありませんので、必要を感じなければ作る必要はありません。その場合は、以下の説明のフォルダ名部分は適宜読み替えて下さい。
最終的には、こんな感じになります(下図)。
これでインストール前の準備は終了です。
要するに、仮想Web領域を作るために新しくフォルダを1コ作って、本物のWeb領域と同じにするために、その中に皆さんの書いたページをぶち込んだ、というだけです。あとは、MakeBanを使う時のために、それぞれのコンテンツごとにimagesというフォルダを用意した。これだけの作業です。
それでは、いよいよインストールに行きましょうか。
まずはAnHTTPDのインストールから行います。
先に説明した通り、これはWebサーバの仕組みを作るソフトです。仮想Web領域を作るソフトですね。ですので、他の何よりも先にまずはこれからインストールします。
インストールの方法は簡単です。
ダウンロードしたAnHTTPDのファイルを、wwwのフォルダに移して下さい(下図)。
移したら、このファイルをダブルクリックします。
すると解凍画面が立ち上がります(下図)。
ここで「Unzip」ボタンを押すと、解凍が始まります(下図)。
全てのファイルを解凍し終わると下図のようにメッセージが出るので、「OK」ボタンを押して下さい。
AnHTTPDがインストールされ、ファイルやフォルダがいっぱい増えてます(下図)。
蛇足ながら、この中のperlというフォルダはAnHTTPのものではありません。先程自分で作ったフォルダです。
AnHTTPDのインストールはこれで終了です。簡単でしょ?
……まぁ、ファイルを解凍しただけですからね(爆)。
今度はActivePerlをインストールします。
これも先の説明の通り、CGIを動かすために必要なソフトです。
ダウンロードしたファイルをダブルクリックして下さい。インストールが始まります。
Nextで次へ。
使用許諾を聞いてきますので、「I accept the terms in the License Agreement」を選んでNextで次へ。
次はインストール場所の選択です。
デフォルトではCドライブのPerlフォルダとなっていますが、今回はc:\www\perlにインストールをすると決めてフォルダを作っておきましたので、インストール場所を変更します。「Browse」ボタンをクリックして下さい。
最初はインストール先(Folder name)は「C:\Perl\」となっています(下図)。
これを、「C:\www\Perl\」と書き替えます(下図)。
OKボタンで戻ると、インストール先が「C:\www\Perl\」に変更されています(下図)。
確認したら、Nextで次へ。
……英語だよ……(泣)。なに書いてあんだか判んねーよ……(泣)。
どうも、PPM3というサービス(あとで説明します)を利用する際にプロフィール情報を送ってもいいかどうか? と聞いているらしい。
気になる人はチェックを外して下さい。たいして困らない、という人はそのままでどうぞ。
とりあえず上図では情報送付を許可する、というチェックを入れています。
次はパスを入れるかとかの細かい設定。
このままで次へ行きましょう。
これで設定終了。
「Install」をクリックすると、ActivePerlのインストールが始まります。
あとはインストーラが自動的にインストールしてくれます。
インストールが終わったら、perlフォルダの中を見てみましょう。
下図のように、わらわらファイルがあったら成功です(<いいのかそんないい加減で……)。
なんにしても、基本的にはインストーラが自動でやってくれます。
インストール先の設定だけ間違えなければ、多分うまく行くでしょう。
ここがなかなか難しいところです。
本来ならいろいろと理屈があるところなんですが、「とりあえず動けばオッケー」を目標にしているページなんで、
詳しい話は飛ばします。興味のある方、不安な方は自分で調べて下さい。
で、設定ですが、まずはAnHTTPDを立ち上げましょう。
スタートメニューから実行するなり、本体のexeファイルをダブルクリックするなりで立ち上がります。ちなみに、httpd.exeが本体です。
何も出てこない、もしくは出てきてすぐに消えてしまうように見えますが、心配は要りません。ちゃんとタスクバーに入ってます。黄色いアイコンを探して下さい。
そのアイコンを、右クリックして下さい。メニューが出てきます(下図)。
この中の、「オプション 一般(G)」を選んで下さい。
設定画面が出てきます。
設定する場所はいろいろあるんですが、本稿の目的は何度も言っているように「とりあえず動けばいい」です。
ですので、以下の項目
だけを、
ここに書かれている通りに変更して下さい。
- ドキュメントルート …… C:\www
- 「ポート」の下のチェック …… チェックしない
1は、仮想Web領域の大元のフォルダを指定します。今回は、c:\wwwというフォルダを作って、そこを仮想Web領域にすることに決めましたから、「C:\www」とします。
2は、URLでよく見る/~hakusaのような「~(チルダ)」を使うための設定です。今回は使いませんので、チェックを外して下さい。
次に、中央よりやや下にある、表の部分の設定をします。
「拡張子」の欄の一番上、「.pl..cgi」の部分をクリックして下さい。青く選択されます。
その状態で、「編集」をクリックします。
上図のような設定画面が出ますので、「実行プログラム」の欄に「perl.exe」と入力して下さい。既に入力されている場合は、そのままで結構です。入力したら、OKで終わりにします。
これで設定は終了です。
全ての設定を終えたら、下図のような再起動(Windowsの再起動ではなく、AnHTTPDの再起動)の確認ダイアログが出ますので、OKで再起動して下さい。
これで、設定が反映されました。
全ての設定が終わったら、ここで設定が正しいかどうかチェックしてみましょう。
白砂の場合、「http://127.0.0.1/hakusa/index.html」がトップページになりますから、これを表示させてみましょう。
下図のように表示されれば成功です。
もちろんこれは白砂だからこう表示されるわけで、みなさんはそれぞれお持ちのHPのトップページが表示されます。
最初にうんちく話を少ししましょう。
Perlという言語では「拡張ライブラリ」というものが有志によってたくさん作られていて、それを使うことによってActivePerl単体では難しかったことが簡単にできるようになります。今回追加でインストールするGDライブラリもその一つで、これを使うことで、画像が簡単に扱えるようになります。
で、そのインストールの方法なんですが、ActivePerlを作っている人(会社)は、その有志が作った拡張ライブラリを入手加工して、PPM(Perl Package Module)という「簡単にインストールできるモジュール」を用意してくれました。これを使うことによって、めんどくさいコンパイルやらなんやらという手間をかけずに、簡単に拡張ライブラリがインストールできます。
ActivePerlの最新版である5.8ではなく5.6をインストールしたのも実はこのPPMのためで、有志開発者が最新版を公開してからActivePerlがモジュールを用意するまでの時間差ができてしまうんですね。今回使用するGDライブラリもそうで、これを書いている現在、5.6にはPPMが用意されているのに5.8にはまだ用意されていません。
まぁ、能書きはこのくらいにして、具体的な作業に入りましょうか。
PPMはインターネット経由でGDライブラリを取得します。ですので、まずインストールするPCをネットにつないで下さい。もっとも、こんなこと言わなくても、最近はみなさん常時接続でしょうから最初っからつながってるんでしょうけど(笑)。
ここから少し話がややこしくなります。
自分のPCがプロキシ経由でネットにつながっている場合、そのプロキシの指定が必要になります。
プロキシを使用しているかどうかは、ブラウザやネットワークの設定を見れば判ります。これは個々で環境が違いますので、それぞれ判断して下さい。
簡単な判別法として、Internet Explorerで確認する方法を紹介しておきます。
IEのツール→インターネットオプションを開きます(下図)。
ダイヤルアップで接続している人は、「ダイヤルアップの設定」に何かしら入っています。その横の設定ボタンから設定画面を見て下さい。
LANで接続している人(ADSLやCATVインターネットなどがこれに当たると思います)は、一番下の「LANの設定」をクリックして設定画面を見て下さい。
ダイヤルアップ接続のプロキシ設定
|
LAN接続のプロキシ設定
|
ダイヤルアップ接続の場合、その性質上、あまりプロキシは使用しないと思います(電話回線でそのままプロバイダに繋ぐ接続方法なので、プロキシをかます場所がない)。LAN接続の場合、家庭内LANを設置していたりすると、プロキシが間に入っている場合がありえます。職場や学校のような環境でもプロキシはあるでしょうね。先に述べた通り、この辺りのことは個々で環境が違いますので、ご自分の環境に合わせて判断して下さい。
さて、プロキシ設定が判ったところで、GDのインストールを始めましょうか。
DOSプロンプトを起動して下さい。
Windows2000では、スタートメニューからプログラム→アクセサリ→コマンドプロンプトで起動できます。XPは持ってないし近くにないんで判りません。すいませんが自力で探して下さい。
起動したら、
プロキシを使用している人は、プロキシ設定をします。
プロキシを使っていない人は、この部分の処理はしません。しようとしても設定がないのでできないんですが(笑)
プロキシ設定は、「SET HTTP_Proxy=http://プロキシアドレス:ポート番号/」と入力します。
例えば、プロキシアドレスが172.16.50.15、ポートが8080の場合、
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\WINDOWS>SET HTTP_Proxy=http://172.16.50.15:8080/
|
と入力します。
ちなみに、この「C:\WINDOWS」の部分は、人によってそれぞれ違います。あんまり気にしないで下さい。例えば白砂の環境では「C:\Documents and Settings\Administrator」と出ます。
プロキシ設定ができたら、いよいよPPMの実行です。
PPMと入力して下さい。
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\WINDOWS>SET HTTP_Proxy=http://172.16.50.15:8080/
C:\WINDOWS>PPM
|
しばらくすると、こんなメッセージが出てきます。
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\WINDOWS>SET HTTP_Proxy=http://172.16.50.15:8080/
C:\WINDOWS>PPM
PPM interactive shell (2.2.0) - type 'help' for available commands.
PPM> _
|
出てきたら、
install GDと入力して下さい。
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\WINDOWS>SET HTTP_Proxy=http://172.16.50.15:8080/
C:\WINDOWS>PPM
PPM interactive shell (2.2.0) - type 'help' for available commands.
PPM> install GD
|
すると、PPMがインターネットに接続し、自動的にGDライブラリをダウンロードし、自動でインストールしてくれます。
一般的なブロードバンド環境であれば、ダウンロード1分以内、インストール10秒、といったところでしょうか。とにかくあっという間に、簡単に終了します。
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\WINDOWS>SET HTTP_Proxy=http://172.16.50.15:8080/
C:\WINDOWS>PPM
PPM interactive shell (2.2.0) - type 'help' for available commands.
PPM> install GD
Installing package 'GD'...
Downloading http://ppm.ActiveState.com/PPMPackages/5.6plus/MSWin32-x86-multi-thread/GD.tar.gz ... ←←この部分は実際は表示後消えます
Bytes transferred: 21603 ←←この部分は実際は表示後消えます。数字が刻々変わります。
Installing C:\www\perl\site\lib\auto\GD\GD.bs
Installing C:\www\perl\site\lib\auto\GD\GD.dll
Installing C:\www\perl\site\lib\auto\GD\GD.exp
Installing C:\www\perl\site\lib\auto\GD\GD.lib
Installing C:\www\perl\html\site\lib\GD.html
Installing C:\www\perl\site\lib\GD.pm
Installing C:\www\perl\site\lib\qd.pl
Installing C:\www\perl\site\lib\auto\GD\autosplit.ix
PPM> _
|
これだけです。簡単ですよね。
どうしてもうまくいかない、という人のために、自動的にファイルをダウンロードするのではなく、自分でファイルをダウンロードして、それをPPMにインストールさせる方法を紹介しておきます。
まず、ファイルをダウンロードしてきましょう。ActivePerlのファイル置き場は下記のアドレスです。
わざとGDそのものではなく、ファイル置き場一覧に飛ぶようにしてあります。これだけいろんなライブラリがあるんだなぁ……というのを見ておくのも面白いでしょう。将棋ソフトの思考ルーチンでよく使う、アルファ−ベータルーチンみたいなものまであります。驚きですね。ひょっとしたらPerlで将棋プログラムが作れるかな?(笑)←スピードが死ぬほど遅いので多分無理なのと、Webに公開するとCPUを占有しすぎてプロバイダに追ん出されるので無意味。
この中から、
GD.zipというのをダウンロード、解凍して下さい。
ファイルの準備はこれで完了です。インストールを始めましょう。
DOSプロンプトを開いて、コマンドを入れます。コマンドは、
install /location ダウンロードしたGDのフォルダ位置 GD
です。
「ダウンロードしたGDのフォルダ位置」ですが、フォルダ名に空白があるとうまくいかないようです。例えば、デスクトップにフォルダを置いておくと、フォルダ名は「C:\Documents and Settings\Administrator\デスクトップ\GD」となりますね。このフォルダ名には空白があります(C:\Documents△ and△Settings\Administrator\デスクトップ\GDの、△の部分)から、うまくPPMが作動しません。
解決方法もあるんでしょうが、ここはスパッと、空白がない場所──例えば「c:\www」など──にフォルダを置くことで対応しましょう。無用なトラブルはシンプルに避けた方が賢明です。
初めから順に解説すると、GD.pmをダウンロードしてきて、解凍したら、解凍したフォルダをc:\wwwに置きます。そして、DOSプロンプトを開いて、「install /location c:\www\GD GD」とコマンドを打ち込むと、自動的にインストールが始まります。
GDというフォルダをc:\wwwに置くので、c:\wwwに\GDの分がつきます。ここだけ注意して下さい。
今までの作業で、Windows内に仮想Web環境を構築し、その中でCGI(Perl)が使えるようにし、GDライブラリも使えるようになりました。あとは、WebにCGIを設置するのと同じように、CGIのパラメータを変えて実行すればおしまいです。
まず、MakeBan本体の置き場所ですが、これはHPのトップがいいでしょう。そうすることによって、HP内のどこにでも図面を作成することができます。付属のPNG画像とjcode.plもいっしょのフォルダに置いておきます。
これで、CGIをWebにアップロードしたのと同じような状態となります。
c:\wwwの中を、AnHTTPDによって仮想Web空間にしたからです。
ついでに言うと、パーミッションの変更の必要もありません。Windowsにパーミッションという概念がないからです。
なので、あとはCGI内部のパラメータを変更すればおしまいです。
判りやすく、最初に設定例を出してしまいましょう。
下のように変更します。実際に書き換えるのは、青い字で書いてある3つの部分だけです。
# jcode.plの位置
require './jcode.pl';
# CGIスクリプト自身をURLで指定
$script = 'http://127.0.0.1/hakusa/makeban.cgi';
# 管理用パスワード(英数字)
$pass = '0123';
# png画像名
$pngban = 'ban.png';
$pngkoma = 'koma.png';
$pngstr = 'str.png';
# ファイル出力ディレクトリ指定 一番下に「,」は不要
@writedir = (
'./kiji1/',
'./kiji2/',
'./kiji3'
);
|
一つ一つ見ていきましょう。
# CGIスクリプト自身をURLで指定
$script = 'http://127.0.0.1/hakusa/makeban.cgi';
http://127.0.0.1/は独特の指定法で、自分のPCを意味します。AnHTTPDでドキュメントルートを「c:\www」と指定しましたから、http://127.0.0.1/をc:\wwwと読み替えていただければ判りがいいでしょうか。
あとは、そこにMakeBanの階層を足しただけです。
よく判らない人は、白砂と全く同じようにフォルダを作って、上記そのままにパラメータを書いて下さい。動くはずです。
# 管理用パスワード(英数字)
$pass = '0123';
これはなんにも難しいことはないですね。パスワードを指定して下さい。
ローカルな環境(自分のPC)での話なんでパスワードは要らないんですが、CGIがそうなっているので我慢して下さい。セキュリティのことは考えなくてもいいので、別に0123のままでも構いません。
# ファイル出力ディレクトリ指定 一番下に「,」は不要
@writedir = (
'./kiji1/images/',
'./kiji2/images/',
'./kiji3/images/'
);
ここには、画像を書き込みたいフォルダ名を記入して下さい。
今回の説明では、kiji1/kiji2/kiji3という3つのコンテンツがあり、それぞれの中にimagesというフォルダがあるものとしています。
ですので、パラメータはその3つのフォルダを指定します。
注意書きをしてありますが、一番下の部分には「,」をつけないで下さい。ここの指定は「フォルダを「,」で区切って指定する」というものなので、一番最後にも「,」をつけてしまうと、空白という名前のフォルダ名があるものと誤認してしまうのです。実際のところ、誤認するだけで別に動作に影響はないんで、別に間違えたからどうというわけではありません。
以上で作業は全て終了です。
AnHTTPDを立ち上げ(タスクバーにアイコンが表示されているかどうかを確認して下さい)、ブラウザを立ち上げ、アドレスを入力して下さい。
アドレスは、「# CGIスクリプト自身をURLで指定」で指定したものです。http://127.0.0.1/hakusa/makeban.cgiですね。
下図のようにCGIが表示されれば、成功です。
これで説明を終わります。
なんだか判るような判んないような……と思われるかもしれません。手順重視で話を組み立ててきたので、大元の環境設定の話などがおろそかになった感もありますし……。
どうしても理解ができない、という方は、文中に何度も出てきている通り、とりあえずここに書かれた設定の通りにフォルダを作り、そこにAnHTTPDやActivePerlなどをインストールしてみて下さい。で、とりあえずMakeBanがきちんと動作するようになったところで、「自分の環境だとフォルダ名が○○○だから、ここの設定をこう変えて……」といった風に自分の環境に当てはめていく。そうすれば、手間は掛かりますが、確実に自分の環境で動くようになります。
この説明や各種のHPを見ても判りづらいかもしれません。しかし、まずはとにかくやってみて下さい。判らなくても、とりあえず書いてある通りにやる。失敗したところで、OSがブッ飛ぶほどの惨事にはなりません。ここに書かれた作業を書かれた通りにやるのであれば、失敗したとしても大丈夫、AnHTTPDとActivePerlのアンインストール、それとフォルダ削除で確実に元に戻ります。そしたら最初からやり直せばいいんです。
コンピュータの場合は特にそうなんですが、何かをやる時に大事なのは「知ってる人が言うことを黙ってマネする」ことです。これで大丈夫なの? ほんとにいいの? とごちゃごちゃ心配する前に、黙ってとっととやる。それが大事です。失敗したら、そこで改めて相談すればいいんです。完全にマネしているのですから、「これとこれをここまでやったらこうなった。どうして?」と、非常に具体的に質問できます。答える方も簡単です。
ヘンに頭を使わないこと。これが実は一番の近道だったりもします。
あ、もちろん、それは「信用ある人の言うことのみ」ですよ。でないと「まずはDOSを立ち上げて、delete ……」なんて話を真に受けることになります(笑)。
白砂を信頼していただけるかどうか判りませんが(<をい)、実際白砂の環境ではこうすれば動きました。
信用して下さい(笑)