2.3 CGIの設置方法

perl5が動作するWebサーバで、以下の (ステップ 1)〜(ステップ 12) の手順で設置してください。


(ステップ 1) ダウンロードしたCGI一式をサーバ内に置く


本サイトからダウンロードした配布パッケージの.tar.gzファイルを解凍すると、
 biscuit_pocket_1_*_*
というディレクトリが作成されます。

Webサーバの任意のパスにそのまま一式を置いてください。
CGIが実行できるパスであれば、どこでも結構です。
ディレクトリ名は biscuit_pocket_1_*_* から変えてもかまいません。
(ディレクトリ名の変更はセキュリティ上の効果があります)

biscuit_pocket_1_*_* ディレクトリ内の
 biscuit.cgi
というファイルが、本CGIの実行ファイルです。


(ステップ 2) perlの実行パスを指定する


上記の biscuit.cgi ファイルの1行目に、CGIを実行するperlのパスへの指定があります。
デフォルトでは、

#! /usr/bin/perl -T


となっています。
赤い文字の部分に、あなたのサーバでのパスを記入して、ファイルを保存しなおしてください。


(ステップ 3) もし必要ならばCGI名を変える


Biscuitポケット 1.1未満の場合は、このステップはスキップしてください。

Biscuitポケット 1.1以降では、上記のbiscuit.cgiのファイル名は、任意に変更可能です。
(CGI名の変更はセキュリティ上の効果があります)

もしCGI名を変更したい場合は、まず
 biscuit.cgi
というCGIファイルの名称を、任意の好きな名前に変更してください。
(.cgiという拡張子は維持することをお勧めします)

CGI名を変更した場合は、その新しいCGIファイル名を、本CGIの設定ファイルに記述します。
記述する場所は、biscuit.cgi のとなりの ./module の下にある ANCL/Biscuit/Setting.pm というァイルの中です。
以下の赤い文字の部分に、新しいCGIファイル名を書き込んで保存してください。

sub cginame
{
  my ($pkgname) = @_;
  return "biscuit.cgi";
}



(ステップ 4) CGIファイルの実行権限をつける


サーバのOSがLinuxやUNIX系の場合は、上記の biscuit.cgi ファイル(または名前を変更したファイル)に対して、
CGIとして実行可能なファイルパーミッションを設定してください。
サーバによって異なりますが、おそらく典型的には「755」をつければよいでしょう。
詳しくはそのサーバでの指示にしたがってください。


(ステップ 5) データ保管パスを決める


CGIがデータを読み書きするパス(=CGIの設定データや、ユーザから受け取ったファイルを実際に保管してゆく場所)
となるディレクトリを任意に決めてください。
マシン内で新規に作ってもOKです。

配布時のデフォルトでは、biscuit.cgi のとなりにあらかじめ用意してある ./dataディレクトリ が、このデータ保管パスになります。
これをそのまま使っても結構です。


(ステップ 6) データ保管パスにアクセス制限をかける


ステップ 5で決めたデータ保管パスは、第3者からブラウザなどで不正に見られることがないよう、
外部からの一切のhttpアクセスを禁止する制限をディレクトリ全体にかけてください。

制限をかける方法としては、たとえば
 (a) ブラウザからアクセスできるHTMLドキュメントルートとはまったく違うパスにする
 (b) Webサーバの設定ファイル httpd.confで、そのディレクトリにアクセス制限をかける
 (c) そのディレクトリに直接置く .htaccess ファイルで、アクセス制限をかける
などの方法があります。
サーバの設定によって、どの方法が適切かはケースバイケースになります。

もしレンタルサーバなどで、(a)のようなディレクトリを確保することができない場合、おそらく(c)による方法に
頼る場合が一般的でしょう。

配布時のデフォルトでは、./dataディレクトリにあらかじめ.htaccessを置いてあります。(->注1)

.htaccessによるアクセス制限の例
テキストエディタで以下の2行を記述した「.htaccess」という名前のファイルを作成して、そのディレクトリ直下におく。
これで、そのディレクトリに対するブラウザからのアクセスが一切できなくなります。
(必ず実際にブラウザでアクセスして結果を確認してください)
order deny,allow
deny from all

ただし、サーバの設定によっては、.htaccessがきかない設定になっている場合もあります。
そのような場合はサーバ管理者にお問い合わせください。


(どうしてもアクセス制限がかけられない場合)
データ領域にアクセス制限をかけないで運用してもCGI自体は問題なく動作しますが、
第3者による不正なデータ閲覧の可能性があることに十分注意してください。(->注2)
そういった場合は、たとえば、ファイルを平文でアップロードせず、たとえばBuiscuitクルーズ(クライアントソフトウェア)を使って
暗号化してアップロードするなどしてください。


(ステップ 7) データ保管パスに書き込み権限をつける


サーバのOSがLinuxやUNIX系の場合は、上記の データ保管パスのディレクトリに対して、
CGIがそのディレクトリ以下に読み書きをおこなえるようなパーミッションを設定してください。
サーバによって異なりますが、おそらく典型的には「777」をつければよいでしょう。(->注3)


(ステップ 8) データ保管パスをCGIに指定する


(ステップ 5)〜(ステップ 7) によって決定されたパスを、CGI中に直接書き込むことで指定します。
もしデフォルトの./dataパスのままであれば、このステップは必要ありません。

指定を書き込む場所は、biscuit.cgi のとなりの ./module の下にある ANCL/Biscuit/Setting.pm というァイルの中です。
以下の赤い文字の部分に、自分で決めたパスを書き込んで保存してください。

このパスは、biscuit.cgi からの相対パス、またはマシン内での絶対パスで記述してください。
デフォルトでは biscuit.cgi のとなりの dataパスになっています。

(注意)パスの最後はスラッシュで終わるようにしてください。


sub basepath
{
  my ($pkgname) = @_;
  return "./data/";    #戻り値の文字列はスラッシュで終わること
}


(ステップ 9) SSLで運用する場合はSSLフラグをたてる


Biscuitポケット 1.1未満の場合は、このステップはスキップしてください。

Biscuitポケット 1.1以降で、もしBiscuitポケットをSSL環境で運用する場合(=ブラウザからhttps://でアクセスする場合)は、
CGIに対してSSL指定をします。これによってSSLに適した内容でCGIが動作します。
もし通常のHTTP環境で運用するのであれば、このステップは必要ありません。

指定を書き込む場所は、biscuit.cgi のとなりの ./module の下にある ANCL/Biscuit/Setting.pm というァイルの中です。
以下の赤い文字の部分を、"true"に上書きして保存してください。

sub using_SSL
{
  my ($pkgname) = @_;
  return "false";     # "true"または"false"
}


(ステップ 10) 必要であればモジュールを移動する


このステップは、一読して意味がよくわからない場合はスキップして結構です。

biscuit.cgi のとなりにある./moduleディレクトリ内に、本CGI専用のモジュール群(本CGIの実質的本体)があります。
もし、perlモジュールの置き場所をサーバ内で特定のパスに決めているとか、
あるいはperlの標準ライブラリパスに置きたい場合などは、
このmodule内のANCL以下を、この構成のまま移動してください。
(ただしCGIからみて、そのパスがperl実行時の@INCに含まれサーチ可能な場所である必要があります)

例)/usr/lib/perl5/site_perl/ANCL/Biscuit/....

 プログラムからは、次のようにモジュールを検索します。

 use ANCL::Biscuit:: .. ;
 use ANCL::Biscuit: .. ;


(ステップ 11) モジュールのディレクトリにアクセス制限をかける


(ステップ 10)でモジュールを移動しなかった場合は、このステップをおこないます。

biscuit.cgi のとなりの./module に対して、外部からの一切のhttpアクセスを禁止する制限をディレクトリ全体にかけてください。
(ステップ 6)でデータ保管パスにアクセス制限をかけたのと同じ要領でおこなってください。
理由は、(ステップ 8)で自分が記入したパスを外部からの不正アクセスで見られないようにするためです。

配布時のデフォルトでは、./moduleディレクトリにあらかじめ.htaccessを置いてあります。

アクセス制限の例
テキストエディタで以下の2行を記述した「.htaccess」という名前のファイルを作成して、moduleディレクトリ直下におく。
これで、moduleディレクトリに対するブラウザからのアクセスが一切できなくなります。
(必ず実際にブラウザでアクセスして結果を確認してください)
order deny,allow
deny from all


(ステップ 12) Jcode.pmモジュールをサーバ環境に用意する


Biscuitポケット 1.0.2以下のEUCソース版およびSJIS版の場合は、このステップは必要ありません。

Biscuitポケット 1.1以降(UTF8版、EUC版)、またはBiscuitポケット1.0.2(UTF8版)の場合は、
本CGIの他に、perl用ライブラリとして 「Jcode.pmモジュール」 が別途必要です。
いま本CGIを設置しているサーバ環境にJcode.pmがない場合は、CPAN等から入手してインストールしてください。

もし、
- この文章の意味がよくわからない場合
- いまのサーバにJcode.pmがインストールされているかどうか不明な場合
- perlのモジュールをサーバにインストールする権限がない場合
- モジュールのインストールが技術的に難しい場合
は、
本サイトのダウンロードページに用意したコピーを入手して
本CGIと同じ場所に単純に置くだけも結構です。
「Jcodeモジュール」 というファイルをダウンロードして解凍し、
解凍した各ファイルの置き場所は、同封の「readme-UTF8.txt」または「readme-EUC.txt」という指示書を読んでください。


以上で終わりです


お疲れ様でした。
次の章にうつり、CGIの動作確認を兼ねて、さっそくストレージとして動かしてみましょう。
->3.1 初めてのCGIの動作時--Biscuitポケットの管理者を設定する


(注1) ドットで始まるファイル名は、シェルを「 ls 」しただけでは見えません。「 ls -a 」すれば見えます。

(注2) いわゆる「サーバからのデータ流出事故」は、こういった場合から発生するケースが数多くあります。

(注3) 777以外の設定を推奨するサーバやレンタルホストもあります。
あるいはディレクトリのownerまたはgroupを適切に変更しないとCGIが書き込めない場合もあります。
詳しくはサーバ管理者にお問い合わせください。

[目次へ戻る] [前へ] [次へ]



(C) copyright 2006 ANCL, Inc. All Rights Reserved