サーバーに設置しよう!
- カウンタを設置するファイルはトップページ (index.html) の場合に「countディレクトリ」を作成します。
- さらにその下に、データを置く「dataディレクトリ」、ロックファイル用の「lockディレクトリ」、カウンタ画像を格納するディレクトリとして、gif1, gif2, ...と「サブディレクトリ」を作成します。
- 全体のディレクトリ構成例は以下のとおりとなります。(かっこ内はアクセス権の設定値です)
- また、GIF画像ディレクトリはいくつあっても構いません。追加するに従って、gif3ディレクトリ, gif4ディレクトリ、というように連番にして増やしていって下さい。
画像は、各種素材サイト等で探してください!たくさん良いのが出ていますのでがんばって探しましょう。
【ディレクトリ構成例】
yume / index.html(トップページ)
|
+-- count / dream.cgi [705]
| drmgr.cgi [705]
| drinit.cgi [604]
| gifcat.pl [604]
|
+-- data [707] / index.dat [606]
|
+-- lock [707] /
|
+-- gif1 / 0.gif ... 9.gif a.gif c.gif d.gif p.gif
|
+-- gif2 / 0.gif ... 9.gif a.gif c.gif d.gif p.gif
: :
|
- dream.cgi 及び drmgr.cgi を エディタ で開き、以下の個所を修正します。
- #!/usr/local/bin/perl
- (プロバイダで定められたPerlへのパスを指定します)
- drinit.cgi を エディタ で開き、以下の個所を修正します。
- $pass = '0123';
- (編集画面の入室用のパスワードです。英数字で指定してください)
- $ip_chk = 0;
- (IPアドレスをチェックし、連続する二重カウントを防止する機能です。この機能を使用する方は
1 としてください)
- $id_creat = 0;
- (ログファイルの自動生成の許可を設定します。タグを記述するだけでログを自動生成したい場合は「1」とします)
- $datadir = './data/';
- (ログデータを置くディレクトリを指定します。構成例のとおり、dream.cgiのあるディレクトリの下にある場合にはこのままでOKです)
- $rename = 0;
- (ログ更新に一時ファイルを生成してからrename関数で正規ログに更新する方式の場合には「1」とします。ログの破損が起こりにくくする方式です。ただし、「1」とした設置で「Can't
Rename」というエラーが出る場合には「0」とします)
- $lockkey = 2;
- (ログ消滅防止策としてのファイルロック機構の設定です。サーバでsymlink関数が使用可能であれば「1」を、使用できない場合又はよく分からない場合には「2」とします。
- $lockdir = './lock/';
- (ロックディレクトリを指定します。構成例のとおり、dream.cgiのあるディレクトリの下にある場合にはこのままでOKです)
- $base_url = "http://〜〜/index.html";
- (他サイトからのカウンタ利用を拒否するセキュリティ機能です。この機能を使用する場合は、dream.cgiを設置するWEBページのURLをhttp://から正確に記述します)
- $gifdir = './gif1/';
- (画像のあるデフォルト(初期値)のディレクトリを指定します。構成例のとおり、dream.cgiのあるディレクトリの下にある場合にはこのままでOKです)
最後に、カウンタを取り付ける index.html 内のお好きな場所に以下のような記述をします。(以下はログファイル名が、index.dat
のとき)
- 【記述例】
- <img src="http://〜〜/count/dream.cgi?id=index">
エディタ及びファイル圧縮・解凍ソフトなど、お持ちでない方はベクター等で、入手してください。
ファイルの転送
- スクリプトファイル及びログファイルは「テキストモード」で、カウンタ(GIF)画像は「バイナリモード」でFTPファイル転送します。参考にしてください。
- 転送後、以下のとおり パーミッション を設定します。
| ファイル名 |
パーミッション |
転送モード |
| 一般サーバ |
suEXECサーバ
CGIWrapサーバ |
| dream.cgi |
755 or 705 |
701 or 700 |
アスキー |
| drmgr.cgi |
755 or 705 |
701 or 700 |
アスキー |
| index.dat |
666 or 606 |
600 |
アスキー |
| drinit.cgi |
644 or 604 |
600 |
アスキー |
| gifcat.pl |
644 or 604 |
600 |
アスキー |
| dataディレクトリ |
777 or 707 |
701 or 700 |
- |
| lockディレクトリ |
777 or 707 |
701 or 700 |
- |
| *.gif |
- |
- |
バイナリ |
- 転送とアクセス権の設定がうまくいったら、ブラウザを立ち上げてURL欄に、
http://〜〜/dream.cgi?mode=check と、URLを直接打ち込んでみましょう。エラーのある場合にはその旨表示されます。
- 総カウント数を途中から開始する場合
- これは編集ファイル (drmgr.cgi) から簡単に行うことができます。
- ブラウザのURL欄に、http://〜〜/drmgr.cgi と打ち込み、直接アクセスします。
- アクセスされるとパスワード画面が現われますので、指定したパスワードを入力すると編集画面となります。その後、IDファイルのID名を指定し、修正したいカウンタ値を入力してください。その場でカウンタ数値が修正されます。
- 複数ページに設置する場合
- ホームページにページ毎にカウンタを取り付けたい場合や、また複数のプロバイダにホームページを持っている方で、もう1方のホームページにカウンタを供給したい場合、「夢カウンタ」ではそれが簡単にできてしまいます。
- ログ自動生成機能をONにしている場合 ($id_creat=1;)
- 設置はきわめて簡単です。取り付けるページ毎に、
- <img src="http://〜〜/dream.cgi?id=ログファイル名">
(ログファイル名は必ず英数字で)
- とするだけでOKです。各ページ毎のログは、***.datというファイル名で、countディレクトリ内に自動生成されます。
- ログ自動生成機能をOFFにしている場合 ($id_creat=0;)
- ページ毎にログファイルを作成します。
- idファイルの生成は、前項で解説する編集ファイル (drmgr.cgi) から行うことができます。
- idファイルが生成できたら、カウンタを取り付けるページには、
- <img src="http://〜〜/dream.cgi?id=ログファイル名">
(ログファイル名は必ず英数字で)
- とタグを記述して下さい。
バーミッション
- 通常のUNIX系のWWWサーバの場合、HTTPとして動作するCGIプログラムの所有者権限は nobody で動作します。
- これに対して、SuExec環境やCGIWrap環境のWWWサーバの場合には、CGIプログラムはそのファイルの所有者権限
(ユーザ権限) でプログラムが起動し、ファイルの読み書きや実行がそのユーザ権限で実行できるため、セキュリティ的に安全になります。
- どうしてファイルの所有者権限で動作させたほうが安全かというと、例えば一般サーバでは、掲示板のログファイルはパーミッションを666又は606に設定します。この3番目の数字が
nobody の実行権限を意味しますが、これを「6」、つまり「読み書き可能」にする必要があります。(ブラウザ上の操作が nobody
であるため)
| オーナー |
自分 (owner) |
グループ (group) |
その他 (nobody) |
| パーミッション |
6 |
0 |
6 |
読む ( r ) = 4 書く ( w )
= 2 実行 ( x ) = 1
(例) 読み書きが可能 = r + w = 4 + 2 = 6
- しかしながら、このような環境では、例えばログファイルのURLを直接指定することでダウンロードさせることができたり、あるいは同一のサーバ内のID所有者などからもログファイルの読み書きが可能になってしまう危険性が考えられます。
- そこで、CGIプログラムの実行を nobody ではなく owner 権限で動作させるようにして、ログファイルのパーミッションを 600
に指定可能にすれば、このような危険性がなくなることになります。
【パーミッション例】
| 種別 |
一般サーバ |
suEXECサーバ CGIWrapサーバ |
| CGIファイル |
755 or 705 |
701 or 700 |
| ログファイル |
666 or 606 |
600 |
読出専用ファイル (ライブラリ,HTML等) |
644 or 604 |
600 |
ファイル生成ディレクトリ (ロックディレクトリ等) |
777 or 707 |
701 or 700 |
KENT さんの開設書そのままですけど!KENTさんありがとうございました。 詳しくはここ
|