Home

ChaichanPapa-World !

超重要!!カウンタ/掲示板設置方法の基礎知識

◆ はじめに

CGIを設定するには、最低以下の知識の習得が必要です。

逆をいうと、これらを知らないとカウンタ/掲示板の設置はできません。

これらが理解できて、後、プロバイダー指定の設定ができれば、CGIが動くはずです。 プロバイダー指定の設定も以下が理解できていれば、問題なく出来るはずです。

◆ もくじ

◆ ブラウザとWWWサーバ の関係

ブラウザから 場所又はアドレス(http://WWWサーバ名.ドメイン名/~ユーザ名/パス名/HTMLファイル名)を入力すると、ブラウザは入力されたWWWサーバ(プロバイダ)と通信を開始し、WWWサーバはサーバ内のHTMLファイルを読み込んで、そのデータをブラウザに返し、これを表示します。

つまり、HTMLファイルやCGIプログラムファイルは、ご自分のPC内でなく、WWWサーバ内(プロバイダ)にあります。

◆ ディレクトリの階層構造とファイルのパス指定

WWWサーバ内のHTMLファイルやCGIプログラムファイルはプロバイダ指定のディレクトリに格納されています。 これらのファイルを指定する場合はパス名であらわします。

パス名

あるディレクトリの中にあるファイルの位置を

/home/chaichan/public_html/index.html

のように表したものをパス名と呼びます。

これは、homeディレクトリの中の、chaichanディレクトリの中の、public_htmlディレクトリの中の、index.html というファイルを示します。

絶対パス名

パス名がスラッシュ( / )で始まる場合はルートディレクトリからの絶対位置を示します。 これを絶対パス名呼びます。

例えば、/home/chaichan/public_html/index.html

相対パス名

パス名がスラッシュ( / )以外で始まる場合はカレントディレクトリからの相対位置を示します。 これを相対パス名と呼びます。

例えば、以下のディレクトリ構造で、

□はディレクトリ、◇はファイル

□ home
├□ chaichan
│├□ public_html
││├◇ index.html
││├□ img
│││├◇ xxx.gif
│││└◇ yyy.gif
││├□ bin
│││├◇ aaa.cgi
│││└◇ bbb.cgi

カレントディレクトリが/home/chaichan の時に、public_html/index.html のように相対パスの記述すると、/home/chaichan/public_html/index.htmlの絶対パスと同じものを示す事になります。

また、public_html/index.htmlに似た表現で ./public_html/index.htmlがあります。これも同じものを示す相対パス名です。つまり、相対パス名は二つの記述の仕方があるわけです。

また、「.」はカレントディレクトリを意味し、「..」は親(一つ上の)ディレクトリを意味します。 今回の場合、「.」は/home/chaichanと等価で、「..」は/homeと等価です。

URLと仮想パス名

URLの"http://サーバー名.ドメイン名/~ユーザ名/パス名"の"/パス名"の部分を仮想パス名と呼びます。

または、"http://サーバー名.ドメイン名/パス名"の「/パス名」の部分です。

例えば、http://www.parkcity.ne.jp/~chaichan/src/howtoftp.htm

このURLの場合の仮想パスは、/src/howtoftp.htm になります。

仮想パス名は、あくまでも、URL(ホームページのアドレス)を表現する一部で、CGIでのログファイル入出力(I/0)等のパスとは全く関係がありません。

結構、勘違いされる人がいるみたいなので注意して下さい。さらに、ファイルI/Oと同じくURLも相対パスでの表現が出来ますので、相対パスを見た時は、ファイルI/Oの相対パスか、URLの相対パスかをつねに意識しないと、痛い目にあいます。

ファイルI/Oの相対パスとは、CGI(掲示板等)プログラムが、ログデータなどをサーバー上に書き込んだり、読み込んだりするときのログファイル等への相対パスです。

URLの相対パスとは、a要素等で指定するWebページへのアドレスの相対パスです。

おさらい

index.htmlの絶対パス名は

/home/chaichan/public_html/index.html

index.htmlから見たaaa.cgiの相対パス名は

./bin/aaa.cgi

aaa.cgiから見たxxx.gifの相対パス名は

../img/xxx.gif

aaa.cgiの仮想パス名は、/home/chaichan/public_html/ が、WEBサーバの設定によって /~chaichan/ とマッピングされている場合、

/bin/aaa.cgi

となります。

とにかく、パス名指定は、似ているけど、サーバOS(ファイルI/O)としてのパス名とURLとしてのパス名の2種類があります。しかも、まぎらわしいことに、どちらも相対パス指定があり、同じ名前の相対パス名になることがほとんどです。つまり、相対パスの時は、つねに、サーバOSとしてのパス名かURLとしてのパス名を意識しないとなりません。

◆ ftp(ファイル転送)とファイルのパーミッション

PC上で作成したHTMLファイルやCGIプログラムファイルは、WWWサーバのご自分のディレクトリへファイル転送しなければなりません。 そのファイルを転送するプログラムが ftp です。

また、転送後、CGIプログラムはパーミッションを変更する必要があります。これも ftp が担当します。

パーミッションは日本語で「許可」です。 つまり、ファイルパーミッションとは、そのファイルを読み込んだり、更新したり、実行したりする「許可」のことです。

その「許可」の表現として rwxr-xr-x などの9文字の文字列や、755などの数値で表します。 9文字の文字列は r(リード権), w(ライト権), x(実行権), ハイフン(権利なし)からなり、それぞれ次の意味をもちます。

rwxr-xr-x の 左から

r オーナーが読込可能なら r
w オーナーが書込可能なら w
x オーナーが実行可能なら x
r グループメンバが読込可能なら r
w グループメンバが書込可能なら w
x グループメンバが実行可能なら x
r その他の人が読込可能なら r
w その他の人が書込可能なら w
x その他の人が実行可能なら x

で、権利なしの時は各々 - になります。

オーナー、グループメンバ、その他の人の表現は、UNIXから来ていて、詳しくはUNIXを勉強してください。 とにかく、ファイルアクセスに関してこの3者がいると理解して下さい。

また、755表現は、2進数の3桁で表し、 7は111、5は101、5は101で rwxr-xr-x と左から対応しています。

111101101
rwxr-xr-x

1は各権利が有ることを表し、0は-に対応します。

つまり、755とは111101101に展開されrwxr-xr-xのことを表します。

補足説明:10進数と2進数の対応

10進数2進数
00
11
210
311
4100
5101
6110
7111

◆ CGIとパールスクリプト

プロバイダで動かすCGIプログラム(カウンタ/掲示板)はセキュリティの関係でパールスクリプトがほとんどです。

パールスクリプトのヘッダー部を各プロバイダーの環境やご自分の環境に合わせてカスタマイズしなければいけません。 ヘッダー部はデータファイル等のパス指定がほとんどなので、上記を理解できて、メモ帳(WIN95)等が扱えればできるはずです。たぶん。

以下は、CGIとパールスクリプトを知りたい人のための講座です。

◆「はまらない」ためのアドバイス

これから、CGIを設定/プログラムされる方に”はまらない”ためのアドバイスが3点あります。

  1. ブラウザーのキャシュ機能にだまされるな!!

    CGI開発中はブラウザーのキャシュ機能をオフにすることをお勧めします。いくら、サーバーのプログラムを入れ替えても、ブラウザー(PC)内部で入れ替え前の処理をしてしまう。

  2. 常に、実行権があることを確認すべし!!(ftpの"dir *.cgi" コマンドで)

    デバック中は前回の良い状態を保存のためにリネームしたりして、そのあと、同名のCGIプログラムをアップロードすると初回になり、実行権が付かない。本人は前回動いたので、気づかない。

  3. CGIプログラムはコード変換あり(アスキーモード)でftpすべし!!

    たぶん、サーバとPCの改行コードの違いで、Perlがエラーするものと思われます。

◆ おわりに(まとめ)

つまり、カウンタ/掲示板を設置するには、WWWサーバのディレクトリ階層構造とファイルのパス指定/パーミッションが理解できて、ftpソフトが使いこなせる力が必要です。

どうしても、上手くCGIが設定できず動かない場合は、以下でヘルプしてください。

◆ おまけ(パークシティーのCGI設定方法)

パークシティーにおいてのCGIの設定方法です。

以下にparkcityのCGIの設定方法手順を示します。

  ・PCのメモ帳(エディター)で htaccessファイルに以下の2行を書き込みます。 
  
          # .htaccess 
          AddHandler cgi-script .cgi 

  ・ftpで htaccessファイルをサーバのpublic_htmlディレクトリの中に転送します。 

           ftp> cd public_html 
           ftp> put htaccess 

  ・ファイル名を変更します。PC上だとポツ(.)はじまりのファイル名ができないため。 
  
           ftp> rename htaccess .htaccess 
  

  ・ファイルに属性を付けます。オーナーは6(リードライト)、グループ、その他は4(リード)。 

           ftp> quote site chmod 644 .htaccess 

  ・CGIファイルの拡張子は .cgi とします。 

  ・CGIファイル転送後、CGIファイルに実行の属性を付けます。 
    オーナーは7(リードライト実行)、グループは0(何もなし)、その他は1(実行のみ) 

           ftp> quote site chmod 701 sample.cgi 
  

  ・parkcityでの利用可能なプログラムとパスは以下の通りです。 

                     プログラム名 
                                               パス 
             perl5 (Version 5.005_02) 
                                         /usr/local/bin/perl 
             awk (GNU Awk 3.0.3) 
                                         /usr/local/bin/awk 
             csh 
                                         /bin/csh 
             sh 
                                         /bin/sh 
             Network Kanji Filter Version 1.62 
                                         /usr/local/bin/nkf 

   ・parkcityからのお願いの抜粋です。

      CGI はお客様の UID(オーナー)で実行されます。 
      またCGIの実行には以下の条件を満たす必要があります。(一番が一番超重要、ネェいしぼーさん) 

        1.CGIが実行されるディレクトリ(public_html)は Group(グループ) や Other(その他) 
           による書き込みができないこと。 
  
           ftp> ls -l public_html 
                drwxr-sr-x 19 chaichan   parkcity     1536 Nov  7 10:01 public_html 
                    ↑ ↑   矢印に  w があってはいけない。 
  
        2.CGIファイルは実行されているコマンドは Group や Other による書き込みができないこと。 
  
        3.システムに負荷をかけるようなものは御遠慮願います。 
           特に CGI によるチャットは、不必要にシステムに負荷を かけますので御遠慮願います。 

Home