CGI設置 
CGI(Common Gateway Interface)は、ブラウザからの要求に応じて、プログラムを起動するための仕組みです。
代表的なCGIスクリプトは、掲示板、アクセスカウンタ、メールフォーム、アンケートなどがあります。
これらを自分のホームページに設置したい場合は、CGIを導入する必要があります。
HPのCGI設置許可の有無 
まず、自分の借りているサーバーが、CGIを許可しているかどうかを調べます。
初めは、契約しているプロバイダのホームページ開設サービスを利用している方が多いと思います。
大抵サーバーにはFAQやヘルプがあり、そこにCGIの設置を許可しているかどうか書かれています。
許可していない場合は、CGIは設置出来ません。
次に、自分のサーバーのCGI設置場所を調べます。
設置場所は主に以下の2つに分かれます。
- どこにでもCGIを置けるサーバー
- 「cgi-bin」など特定の名前のディレクトリ(フォルダ)にしか置けないサーバー
CGIを設置する→プログラムファイル(cgiスクリプト)をサーバに置いて、サーバで実行させる事です。
大概、フリーのCGIスクリプトを自分でダウンロードして、自分のHP(サーバー)に転送すると思います。
まずは、サーバーのチェックです。サーバーのCGI設置有無は、以下の表でいくつか挙げます。
(詳しくは、各サーバーでご覧下さい)
| サーバー名 | CGI 許可の有無 | CGI設置場所 | 備考 |
| isweb (ライト) | 〇 | cgi-bin | CGIに関して |
| Yahoo!ジオシティーズ | × | - | サービス一覧 |
| @nifty:@homepage | 〇 | cgi-bin | 自作CGI利用方法 |
| OCN (Page ON) | × | - | 自作CGI利用不可(詳細) |
| So-net (U-Page+) | × | - | CGIライブラリのみ設置可 |
| plala | 〇 | cgi??.plala.or.jp | オプションサーバ、ぷらら提供CGI |
| hi-ho | 〇 | cgi-bin | CGIについて |
| WAKWAK | 〇 | cgi-bin | 自作CGIの設置 |
| BIGLOBE | 〇 | どこでもOK | サーバーの仕様について |
| interQ (OFFICE) | 〇 | user-cgi-bin (上記以外も可) | CGIスクリプトの設置について |
| ASAHIネット | × | - | 提供CGI有、ユーザーCGI実験 |
| さくらインターネット (ライト) | 〇 | どこでもOK | 機能一覧、オンラインマニュアル |
| XREA (XREA Free) | 〇 | どこでもOK | 仕様 |
以上は一部のみ抜粋して掲載しました。他にも沢山のサーバーがあります。
設置前準備 
CGIを設置する上で準備するものを、以下で挙げてみます。大体、Vector でフリーのソフトを使用します。
CGIスクリプトを選ぶ 
設置したいCGIスクリプトを決めます。(自分でCGIプログラムを書ける方は除きます)
Web検索すると、様々なフリーのCGIスクリプトが存在します。
掲示板、チャット、カウンター、投票、アンケート、メール、ゲームなど沢山あります。
手っ取り早くそれらをを探せるサイトが、CGI-Searchです。(もちろん他のサイトも沢山あります。)
いろいろなサイトのCGIから選びたい時は、このサイトが良いと思います。
上記サイトで見つけた有名なサイトは、
この2つのです。もちろん他にも沢山のサイトがあります。
当ページでは「Kent Web」様のCGIで説明していきます。
CGIファイルのダウンロード 
使いたいCGIを探せたら、そのファイルをダウンロードします。
(ここでは、「Kent Web-Day Counter-EX」を例にします)

1をクリックします。「dayx.zip」と書かれている所です。そうすると「ファイルのダウンロード」が出ます。
2をクリックし、ダウンロードします。「ファイルのダウンロード」の保存をクリック。「名前を付けて保存」と出ますので、ご自分のPC内(ローカル内)に保存して下さい。
保存すると、
こんな形のフォルダで保存されていると思います。
保存したら、次は解凍します。
を右クリックして、「全て展開」をすると
こんなファイルの形になったと思います。これで解凍できました。
解凍したら、中身の確認です。

上の画像の様に、8つのファイルがあります。(もし無い方はもう一度ダウンロードして下さい。)
CGIファイルの設定 
CGIを使うには、CGIプログラムを修正する必要があります。
この修正には、テキストエディタのソフトを使用します。
まず、ファイルを修正する前に 、解凍したフォルダをコピー(バックアップ)しておきます。
基本的な操作は、テキストエディタでCGIファイルを開き、そのファイルを修正という手順です。
テキストエディタは、TeraPad
を使用し説明します。
大抵、この修正には、CGI作者さんからの指示がありますので、それに従って修正します。
Kent Web-Day Counter-EX では、3つのファイルを修正します。
dayx.cgi の修正
テキストエディタをCGIファイルと同じフォルダに持ってきます。
「dayx.cgi」を左クリックで押しながら、TeraPadに当てます。
当てたら、クリックしている指を離します。(ドラッグ & ドロップ)
この操作で、CGIファイルを開きます。
→
「dayx.cgi-TeraPad」という新しいウィンドウが出てきたと思います。
ここから、実際に修正していきます。(CGIファイルに詳細が記述されています)
- 1行目「#!/usr/local/bin/perl」の確認
↑の様なのを、「perlのパスの確認」と言います。
このような注意書きは必ず、各サーバーに記載してあるので確認しましょう。
前の「#!」は絶対に変えない事。変えてしまうとエラーになります。
これが1行目の設定の確認になります。 - 56行目、総カウンタ桁数の設定
$digit1 = 6; と書かれている行があります。
これは、総カウント数の桁数=6桁という事です。
「6」を「3」にすれば、百の位までのカウンタという事になります。これは好みで変えて下さい。 - 59行目、今日昨日のカウンタ桁数の設定
$digit2 = 3; と書かれている行があります。
これは、今日、昨日のカウント数の桁数=3桁という事です。 - 80行目、ファイルロック機構
$lockkey = 0; と書かれている行が見つかると思います。
0を「1又は2」に変えます。
ログ消滅防止策としてのファイルロック機構の設定です。
サーバでsymlink関数が使用可能であれば「1」を、
使用できない場合、又はよく分からない場合には「2」とします。
dayxmgr.cgi の設定
先程と同じ様に、TeraPad で dayxmgr.cgi を開いて下さい。
- 1行目、perlのパスの確認
#!/usr/local/bin/perlという所を先程と同じ様に確認して下さい。
(dayx.cgi と同じにして下さい。) - 32行目、集計一覧からの戻り先の設定
$home = "../index.html";と書かれていると思います。
通常は、自分のHPを戻り先とします。例えば私のHPを戻り先とするなら
$home = "http://homepage-builder.org/"; となります。
dayx.dat の設定
- 変更前:15<>0<>0<>0<>Mon<><>
本日の日にち<>昨日のカウント数<>本日のカウント数<>総カウント数<>本日の曜日 を意味します
- 変更例:20<>0<>0<>3200<>Sat<><>
例えば、本日が、20日(土曜日) で、総カウント数を3200カウントから始めたい場合には上記のように修正して下さい
ディレクトリの作成 
ディレクトリ(フォルダ)とは、ファイルを分類・整理するための階層構造(ツリー構造)を持つグループ名。
上のCGI設置の有無で、指定のフォルダ(cgi-bin など)にCGIを置かなければいけない場合は、この指定されたフォルダを作り、そこへCGIファイルを置きます。
これはファイルを転送する前にやっておきます。
ディレクトリ構成例(Kent Web-Day Counter-EX の場合)
public_html / index.html ... (ここにカウンタを設置)
|
cgi-bin--- dayx / dayx.cgi [705]
| dayxmgr.cgi [705]
| gifcat.pl [604]
| dayx.dat [606]
| day.dat [606]
| mon.dat [606]
| blue.gif(月別集計結果のグラフ)
| red.gif(月別集計結果のグラフ)
|
+-- gif1 / 0.gif .. 9.gif(カウンターの画像)
|
+-- gif2 / 0.gif .. 9.gif(カウンターの画像)
|
+-- lock / dayx.lock.txt [777]「public_html」は、自分のHP(ホームページ)を表します。
これは、ホームページのトップの階層(.index.html など)とします。
「public_html」の下の「cgi-bin」は、自分のサーバーの中に「cgi-bin」フォルダを作ります。
(上で説明したように各サーバーによって変わります。)
「cgi-bin」右横に「dayx」があります。その点線の下には、「gif1」「gif2」「lock」があります。
「dayx」の右横には、dayx.cgi、dayxmgr.cgi などのファイルがあります。
これは、「cgi-bin」フォルダを開くと、「dayx」フォルダがあります。
「dayx」フォルダを開くと、「gif1」「gif2」「lock」の3つのフォルダがあり
さらに、dayx.cgi、dayxmgr.cgi などのファイルもあります。という事です。
「gif1」フォルダの中には、0.gif ~ 9.gif の画像ファイルがあります。
「gif2」フォルダの中には、0.gif ~ 9.gif の画像ファイルがあります。
同様に、「lock」の中には、dayx.lock.txtというテキストファイルがあります。
これが、ディレクトリの説明です。では実際に、このディレクトリを作ります。
ディレクトリは、まずは自分のPC内(ローカル内)で作ります。
では前に解凍した「dayx」というフォルダがあります。![]()
その横に新規作成で、「cgi-bin」フォルダを作って下さい。
(フォルダの名前を変える時は、半角で変えて下さい。全角だとエラーになります。)
「cgi-bin」フォルダに、「dayx」フォルダを入れて下さい。(ドラッグ&ドロップで)
そうすると、「cgi-bin」フォルダの中に「dayx」フォルダが入ります。
次に「dayx」フォルダ内に新規作成で、「gif1」「gif2」「lock」の3つのフォルダを作って下さい。
「gif1」フォルダには、0~9までのカウンタ用の画像を入れます。(総カウンタ用)
「gif2」フォルダにも、0~9までのカウンタ用の画像を入れます。(昨日今日のカウンタ用)
カウンタ用の画像の名前は、「1」のカウンタ画像なら、「1.gif」として下さい。
カウンタ画像は、自分で素材を見つけてくるか、KentWeb様のカウンタ画像例を使って下さい。
最後に、「lock」の中に新規作成で、「dayx.lock」という名前でテキストファイルを作って下さい。
これで、ディレクトリの作成は、完了です。
サーバーに転送 
実際に自分のサーバーへ転送(アップロード)します。
ここでは、ホームページ・ビルダーのFTPソフトで、説明していきます。
FFFTPをお使いの方は、KentWeb様の解説ページをご覧になって下さい。
まず、転送モードを確認します。
スクリプトとログファイル(dayx.cgi, dayxmgr.cgi, gifcat.pl, dayx.dat, day.dat, mon.dat) は「テキストモード」で転送。
画像ファイル (*.gif) は「バイナリモード」で転送します。
ホームページ・ビルダーのFTPの場合は、自動で判別して転送モードを切り替えてくれるので
先程作成した「cgi-bin」フォルダを丸ごと転送します。

上図の1→2をクリックすると、赤線のように、サーバー側に「cgi-bin」フォルダが作成されます。
次は、パーミッションの変更です。
KentWeb 様のサイトを参考に、以下の表通り、パーミッション値をその数字にします。
(パーミッション値は、一般サーバーを例にします)
| ファイル名 | パーミッション値 |
| dayx.cgi | 755 or 705 |
| dayxmgr.cgi | 755 or 705 |
| dayx.dat | 666 or 606 |
| day.dat | 666 or 606 |
| mon.dat | 666 or 606 |
| gifcat.pl | 644 or 604 |
| dayx.lock.txt | 777 or 707 |
| *.gif | - |
これらのパーミッション値に変更する為に、サーバー側のファイルを指定します。
dayx.cgi を例に説明します。dayx.cgi のパーミッションは「705」です。
(サーバーによっては、755でも良いです)
dayx.cgi を右クリックし、アクセス権の変更をします。
(アクセス権=パーミッション値)

アクセス権を「705」に変更します。

残りのファイルを同様にパーミッション値を変更していきます。
パーミッションについて、詳しく知りたい方はKentWeb 様のページでご確認下さい。
全て、変更したら、実際にCGIが動作しているか確認します。
方法は、URLを入力して確認します。URLは
http://あなたのURL/cgi-bin/dayx/dayx.cgi?check
(cgi-bin を作っていない方は、cgi-binを抜いて下さい)
これで全てOKと表示されているなら、正常に動作しています。
次は実際にHP上に表示させます。HTMLタグで以下のように記述します。
- <img src="/cgi-bin/dayx/dayx.cgi?gif">→総カウント
- <img src="/cgi-bin/dayx/dayx.cgi?today">→今日のカウント
- <img src="/cgi-bin/dayx/dayx.cgi?yes">→昨日のカウント
カウンタ設置は、これで全て終了です。
エラーの対処法 
CGIを正しく設置したつもりでも、エラーで動かない事があります。
エラー表示で、大まかなエラーの原因は分かります。(全て原因が分かるわけではありません。)
エラー表示の種類を挙げてみると
- 404 File Not Found
- ソースが表示される
- Forbidden You don't have permission・・・
- 500 Server Error
大体、この4つが表示されると思います。
- 404 File Not Foundの場合
こちらのページで指定したURLの間違いです。そのURLにはCGIがないですよ、という意味。 - ソースが表示される
自分のサーバーがCGI設置を許可していない場合に多いです。 - Forbidden You don't have permission・・・
パーミッションの設定が自分のサーバーの指定に合っていないと出ます。
ディレクトリの作成で、パーミッションが「755」か「705」のどちらかにする、で
もし、「755」にしていたら「705」に変更して試してみて下さい。 - 500 Server Error
これが一番厄介です。これは2つの原因が考えられます。- サーバーに転送する際の転送モードの間違い
サーバーへ転送で転送モードを確認。 - CGIファイルを書き換えの間違い
CGIファイルの設定で確認。
- サーバーに転送する際の転送モードの間違い
もし、どこを直して良いか分からない場合は、あらかじめコピーしてあるCGIファイルの必要な設定変更部分だけ変えてみて試してみる。
もし自分で解決出来ない場合は作者のサイトの質問掲示板などで尋ねる。
Attach file:
| Page Info | |
|---|---|
| Page Name : | CGI |
| Page aliases : | None |
| Page owner : | hpb |
| Can Read | |
| Groups : | All visitors |
| Users : | All visitors |
| Can Edit | |
| Groups : | 登録ユーザ |
| Users : | No one |

