<このページは?>
ここはアクセスカウンタを自分のページに移植するための簡単解説ページです
UNIXを使わずにアクセスカウンタを移植するCGI初心者のためのコーナーなのです
文字数は多いけど、それだけ親切丁寧で、カウンタ移植は簡単ですよ!
2005/10/26版速報・Biglobeサーバ変更に伴い、npc.cgiファイルと、&I=指定のnpc.idxファイル位置がまたまたまた変わりました。
私(www2a.biglobe.ne.jp)の場合、
/home2x/bgfs13b/www2a/035/seikofan/public_html/cgi-bin/npc.idx
から、
/public_html/cgi-bin/npc.idx
になりました。
また、サーバがSun OSから、Red Hut Linuxに変更になりました。
以下のLINUX用が使えますので、npc.cgiを交換してください。
2004/5版速報・Biglobeサーバ変更に伴い、npc.cgiファイルと、&I=指定のnpc.idxファイル位置がまたまた変わりました。
私の場合、
/home2/www2a/035/seikofan/public_html/cgi-bin/npc.idx
から、
/home2x/bgfs13b/www2a/035/seikofan/public_html/cgi-bin/npc.idx
になりました。皆さん。必ず下記のpwd.cgiにて調べてください。
2001/9版速報・Biglobeサーバ変更に伴い、npc.cgiファイルと、&I=指定のnpc.idxファイル位置がかなり変わりました。
私の場合、
/home2/seikofan/public_html/cgi-bin/npc.idx
から、
/home2/www2a/035/seikofan/public_html/cgi-bin/npc.idx
になりました。皆さん。必ず下記のpwd.cgiにて調べてください。
<にあさんのカウンタとは?>
にあさんが開発し、一般公開されているフリーソフトnpc.cgiの事です。
極めて有能でカッコ良いWWWアクセスカウンタを、あなたも使うことができます。
すでに500名を超えるBiglobeユーザーから移植成功の嬉しい報告が届いています。
(このページは基本的にBIGLOBE会員用に書かれています、Rimnet会員もどうぞ。)
アクセスカウンタプログラムnpc.cgiの特徴
●動く回転式カウンタ(静止画も可) ●豊富な4書体内蔵 ●前景/背景に好きな色/透明色が使える
●初期値の自由設定が可能 ●複数のページ&別サーバでプログラムの共有可能 ●一体化GIFで桁が崩れない などなど
<このページの意義>
本来なら、開発者であります、にあさんのマニュアルが
npc.cgiオンラインマニュアル(オンライン読み用 Separated 版)
npc.cgiオンラインマニュアル(オフライン読み用)
という、立派な物が有るのです。
では、なぜ私、Takaちゃんがこんな解説ページを作るのかと言えば、
UNIXは持ってないけど、このカウンタを移植して使いたい!
というCGI初心者のための、特別解説ページなのです。
「UNIXなんてバリバリだぜ〜」という方は、この私のページではなくて、直接にあさんのページへどうぞ。
BIGLOBE (Biglobe)以外のサーバをご利用の方へ このページは基本的にBIGLOBE の会員を対象に書いております。
BiglobeではCGIが使えます。また、サーバのOSがSunOS(一部はHP-UX、Linux)です。したがいまして、
他ネットの方もサーバーがSunOS(又はHP-UX、またはLinux)で動いているなら、このページの方法で移植出来ます。
SunOSは商業用インターネットサーバで最も使われているUNIX OSですが、UNIXには数多くのOSが存在するのも事実です。
一方、 にあさんのページにあります、コンパイル(要UNIX機またはUNIXシェル開放サーバ)
から行なう方法をとれば、ほとんどのプラットホームで使用が可能です。
ここではUNIX機によるコンパイルを必要としないバイナリ移植方法をとっております。
BiglobeはSunOS4.1.3上(これは随時変更されています。ページトップの更新情報を確認ください)
で動いておりますので、同じSunOSで動いているサーバ上では
このページの通りにすれば問題なく動くという事になります。
他ネットではrim.or.jp、ask.or.jp、nsknet.or.jp、mahoroba.or.jp等で動いたという報告が来ています。移植成功ページリストをご参考下さい。
他OSでは、バイナリライブラリも一部用意されています。
バイナリとは、つまり、UNIXでは、それぞれのOS用にコンパイル(変換)する必要があるのですが、
UNIXが出来ない方の為に、既にコンパイルされたファイルを供給するものです。
凡例から変更箇所を推察できると思いますので、やってみてください。
machinecgi.txt( 動いているOSを調べるCGIスクリプト)
ファイル名をmachine.cgiに変更して実行権705を付け、ブラウザでアドレスを入力してください(実行権の付け方はステップ4を参照)。shへのコマンドのパス(#!/bin/sh)も必要に応じて変更してください。パスの位置は、シェルモードが使えるサーバでは、which shと入力すればOKです。シェルモードが使えないサーバは、管理者に問い合わせて下さい。
私(Biglobe)の場合はこうなります。machine.cgi(クリックするとCGIが実行されます)
さあ、はじめましょう!
次のステップへジャンプ
1(準備) |
2(ダウンロード) |
3(初期設定) |
4(アップロードと実行権) |
5(動作確認) |
6(ファイルの位置) |
7(HTMLへの書き方) |
8(おまけ・画像の種類) |
移植成功報告
とりあえず必要なもの
ブラウザを使い次に必要なカウンタプログラムnpc.binをダウンロードします。
linux-npc.bin(ここをクリックLinux用 -- 新サーバ用 2005/10/26版 Biglobe用)
npc.bin(こちらをクリック! …HP-UX用)
npc.bin(www.**.rim.or.jpの方のみ、こちらをクリック! …FreeBSD
3.3用)
npc.bin(ここをクリック! …SunOS用
NEW!新サーバ2001/9版)
上のnpc.binをクリックしてください。ダウンロードの体制になります。
(注:ブラウザのヘルパーアプリケーション項目で、拡張子.binが[保存]に設定されていないとダウンロード出来ません)
ご自分のディスクに保存してください。
次に、初期設定&カウンタ記録ファイルとして、私のページの私専用に書かれている、
npc.idx
のページに行って、ソースを読み込んで(別名で保存かView Document Source)保存してください。
Windowsなら、右クリックで、リンク先を保存を選びます。
Macintoshなら、クリックダウンしたまましばらく待つと、リンク先を保存が出てきます。
ついでにもうひとつ、アドレスを調べるスクリプトファイル、
pwdcgi.txt
のページのソースを保存してください。
3つのダウンロードしたファイルを変更します。
まず、npc.binは、名前をnpc.binからnpc.cgiに変更します。
npc.binはこれだけです。超簡単!
pwdcgi.txtも名前をpwd.cgiに変更します。これも簡単!
ダウンロードの仕方によって、pwdcgi.txtの先頭行にスペースや改行コードが
入ってしまうことがあるようです。一応、エディタかワープロで開いてみて、1行目が
#!/usr/bin/shで始まっているか確認したほうがいいでしょう。先頭に空白行があったら
その行は削除してください。
次にエディタかワープロで、ダウンロードしたnpc.idxを開いて、初期設定します。
現在のnpc.idxは私専用になっています。(私はhttp://www2a.biglobe.ne.jp/~seikofan/)
変更箇所は
合計で5行だけ変更します。(もし先頭に空白や改行が入っていたら削除してください)
例をあげておきます。(最終行は変更不要です)
[例:あなたのホームページがhttp://www2d.meshnet.or.jp/~mylove/にある場合]
^http://www2a\.biglobe\.ne\.jp[\.:0-9]*/~seikofan/ ^http://www2a\.biglobe\.ne\.jp[\.:0-9]*/%7[Ee]seikofan/ =RESTRICTION 0 =REFERER ^http://nocount@www2a\.biglobe\.ne\.jp の^httpで始まる3行を ^http://www2d\.biglobe\.ne\.jp[\.:0-9]*/~mylove/ ^http://www2d\.biglobe\.ne\.jp[\.:0-9]*/%7[Ee]mylove/ =RESTRICTION 0 =REFERER ^http://nocount@www2d\.biglobe\.ne\.jp
に書き換えて(テキストファイル形式で)保存します。
なお、この例では自分専用で他人が使えない設定を基本としています。
いま書き換えたのは、カウンタ利用が出来るページの制限項目になります。
次に、その変更した3つのファイル、npc.cgiとnpc.idxとpwd.cgiをFTPでアップロードします。
public_htmlディレクトリ(フォルダ)の下にcgi-binというディレクトリを作り、
そこに3つのファイルをアップロードすることにします。
(Fetchならpublic_htmlを開いた状態で、DirectoryメニューからCreate New Directory
を選び、名前をcgi-binとしてOKします)
出来たcgi-binディレクトリを開いてそこに3つのファイルをアップロード(PUT)しますが
そのときに、npc.cgiは必ずバイナリーモード(RAW)、npc.idxとpwd.cgiは
テキスト(アスキー)モードで転送します。
npc.cgiだけ、バイナリーで転送するので、注意してください。
転送後(転送した時に同時に)にファイルに実行権(保護モードの変更)をつけます。
この実行権の付け方は、
Read | Write | Search Execute | ||
User(u) | X | X | X | =これで7という意味 |
Group(g) | =これで0という意味 | |||
Everyone(o) | X | =これで1という意味 |
同じように、npc.idxは606ですので、次のようにチェックを入れます。
Read | Write | Search Execute | ||
User(u) | X | X | =これで6という意味 | |
Group(g) | =これで0という意味 | |||
Everyone(o) | X | X | =これで6という意味 |
pwd.cgiは、705ですので
Read | Write | Search Execute | ||
User(u) | X | X | X | =これで7という意味 |
Group(g) | =これで0という意味 | |||
Everyone(o) | X | X | =これで5という意味 |
ftpのコマンドを利用します。具体例を以下に示します。 ftp> put npc.idx ---期設定ファイルをputします。 ftp> quote site chmod 606 npc.idx ---初期設定ファイルに実行権をつけます。 ftp> bin ---バイナリ転送に変えます ftp> put npc.cgi ---cgiファイルをputします。 ftp> quote site chmod 701 npc.cgi ---cgiファイルに実行権をつけます。
また昔のRimnetのような、UNIXシェルでしか実行権が付けられないサーバの場合は、
NCSA Telnetや、TeraTermなどのTELNETソフトで、Telnetサーバにログインします。
HostをTELNETサーバ名、TELNETをチェック、Port #23 と書いてあればいいです。
また、シェルが使える所は、pwd.cgiは不要です。TELNETサーバ名などはプロバイダから
連絡されているものを使います。
具体例を以下に示します。(FTPで転送した後に実行権をつけることにします)
LOGIN : mylove ---ログインネームを入れます(TeraTermの場合) PASSWD: ******* ---パスワードを入れます(TeraTermの場合) 1.電子メール 2.FTP 3.シェル ---(Rimnetの場合) --- >3 ---3のシェルを選択(Rimnetの場合) hikari% pwd ---現在の位置を表示させる(hikari%はRimnet東京3ドメインの場合、通常はサーバ名%になる) /home/usr6/mylove ---ホームディレクトリを表示した hikari% cd public_html/cgi-bin/ ---ディレクトリを移動 hikari% pwd ---現在の位置を表示させる /home/usr6/mylove/public_html/cgi-bin ---現在のディレクトリを表示した hikari% chmod 701 npc.cgi ---npc.cgiに実行権701をつけた(777でもよい) hikari% chmod 606 npc.idx ---npc.cgiに実行権606をつけた(777でもよい) hikari% ls -la ---ファイルリストを表示させる rwx-----x npc.cgi 57654 97/5/21 ---npc.cgiは701がついている rw----rw- npc.idx 1825 97/5/21 ---npc.idxは606がついている(全開放は777=rwxrwxrwx) ---(User,Group,Everyoneの順で、read,write,executeが3つづつ) hikari% cd .. ---ディレクトリを移動 hikari% pwd ---現在の位置を表示させる /home/usr6/mylove/public_html ---現在のディレクトリを表示した hikari% which perl ---perlのコマンド位置を表示させる /usr/local/bin/perl ---perlのコマンド位置を表示した hikari% which sh ---shのコマンド位置を表示させる /usr/bin/sh ---shのコマンド位置を表示した hikari% exit ---シェルモード終了
FTPでアップロードしたら、ブラウザでちゃんとcgiプログラムが動いているか確認しましょう。
先の例で、
http://www2d.meshnet.or.jp/~mylove/cgi-bin/
に3つのファイルを置いたなら、
http://www2d.meshnet.or.jp/~mylove/cgi-bin/npc.cgi
とブラウザでアドレスを入れて、確認してみてください。それで、
(Cannot open index file npc.idx)
というエラーメッセージが表示されたら、移植成功です。
とにかく、黒地に白文字のメッセージが出たらnpc.cgiは動いています!
現在は、初期設定ファイルの位置を指定していないので、このようなエラーが出ます。
もし、違うメッセージが出たら、オンラインマニュアルのエラーメッセージの項目を参照してください。
■SSIが使えるサーバ(Rimnet等)で、CGIが作動するための拡張子ファイルがセットされていない
---public_htmlディレクトリに、 .htaccess という名前のファイルを置く必要があります。
---Meshnetでは管理者側のsrm.confファイルにより、拡張子が.cgiとしているだけで、リンクされるので.htaccessファイルは必要ありません。ユーザ側が拡張子を設定する場合はpublic_htmlディレクトリに
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl ----必ず、plのあと、最後に改行する
という中身の.htaccessファイルを置いてください。Windowsでは、.htaccessというファイル名を作る事は出来ないので、適当な名前をつけて、アップロード後にrename(ファイル名変更)してください。ここらへんのやり方はこんな所とかを参照してください。
■サーバのOSがSunOSではない(Mesh Net以外の方の場合/UNIXからコンパイルを行なう方法か、にあさんのバイナリページをご覧ください)
まず、この流れでUNIXを使わずにUPした場合、初期設定ファイル(npc.idx)の位置を
CGIプログラムからみて、正しい位置を記述しないといけません。
この位置は実際にカウンタを使用する際に、&I=という形で記述する必要があるのです。
つまり、普通のURLアドレスのような/~mylove/cgi-bin/npc.idxでは駄目です。
チルダ(~のこと)はログインネームを利用して、途中のディレクトリーを省略した
という意味なのです。例えば、現在このページのアドレスは、
/~seikofan/htm/cgi/npc.html
にありますが、これは省略されたアドレスで正確には
/home2x/bgfs13b/seikofan/public_html/htm/cgi/npc.html
になります。この正確なアドレスを知る必要があるので、次にやり方を示します。
シェルモードで実行権をつけた方は、pwdコマンドを実行して、もう自明でしょう。
先の例を引続き使います。
[例:ホームページがhttp://www2d.meshnet.or.jp/~mylove/にある場合]
[以下のmyloveを自分のホームページアカウントに置き換えて下さい]
初期設定ファイルのnpc.idxの位置(&I=)はメッシュネットの場合、(他ネットはディレクトリ構造が違う)
/homeN/mylove/public_html/cgi-bin/npc.idx
となります。このhomeNのNは、2から6くらいまであるそうです。
これはメッシュ固有で、他の例えばRimnetの場合は、
/home/usrN/mylove/public_html/cgi-bin/npc.idx
という具合になります。
知る方法は、次のスクリプトファイル(pwd.cgi)で、結果を見ればいいのです。
すでに、pwd.cgiをアップロードしているなら、ブラウザーでこのファイルをアドレスで指定
して実行してください。(http://www2d.meshnet.or.jp/~mylove/cgi-bin/pwd.cgiと入力する)
これはpwd(print working directory/ファイルの作業位置)の出力を返すだけです。
つまり、このスクリプトファイル(pwd.cgi)が存在している位置を表示してくれるので、
これによって、正確なディレクトリが分かります。
(私の場合はこうなります。■pwd.cgi(ここをクリックするとCGIプログラムが実行されます))
これで例えばNが3だと分かると、初期設定ファイル(&I=インデックス)の位置は、
Meshnet以外の方の場合
CGIから見たファイルの存在位置ディレクトリを知るスクリプト(これはpwdcgi.txtです)#!/usr/bin/sh echo "Content-type: text/plain" echo pwd exit 0Meshnet以外の方は、このスクリプトファイルを使ってください。これをファイルにしたものが
pwdcgi.txt
です。pwdcgi.txtをpwd.cgiに名を変更して実行してください。
(実行するというのは、pwd.cgiをテキストモードでアップロードし、実行権705をつけて、ブラウザでこのファイルのアドレスを入力して、結果を見るということです。このpwd.cgiがある位置を表示します。)また、cgiスクリプトの先頭行も、必要に応じてshのパスも変更してください。
<IMG SRC="/~mylove/cgi-bin/npc.cgi?L=test&I=/home3/mylove/public_html/cgi-bin/npc.idx">
と書いてください。このHTMLファイルをブラウザに表示させてみてください。
うまくいったら、カウンタを開始し、00001と表示されるはずです。
homeNのNが分からない(どうしてもpwd.idxが動かない)人は、最終案として、
<IMG SRC="/~mylove/cgi-bin/npc.cgi?L=/~mylove/test.html&I=/home2x/bgfs13b/mylove/public_html/cgi-bin/npc.idx">
<IMG SRC="/~mylove/cgi-bin/npc.cgi?L=/~mylove/test.html&I=/home3/mylove/public_html/cgi-bin/npc.idx">
<IMG SRC="/~mylove/cgi-bin/npc.cgi?L=/~mylove/test.html&I=/home4/mylove/public_html/cgi-bin/npc.idx">
<IMG SRC="/~mylove/cgi-bin/npc.cgi?L=/~mylove/test.html&I=/home5/mylove/public_html/cgi-bin/npc.idx">
<IMG SRC="/~mylove/cgi-bin/npc.cgi?L=/~mylove/test.html&I=/home6/mylove/public_html/cgi-bin/npc.idx">
と、色々とNの数値を変えたIMGタグを.htmlファイルに書いて、
きちんと表示されるやつを探してください(いい加減な…)。
同時にこれら全部を一度にHTMLファイルに書けば、一発で分かるはず(笑)。
ただし、この方法はMeshnetでしか使えません。他のネットでは、
home/...../~myloveの箇所のディレクトリ名や構造が異なるからです。
その場合は先のpwd.cgiで調べてください。
このCGIプログラムから見える位置(正確なアドレス)は、各サーバーで違いますが、
メッシュだったら、だいたい、上の形式で統一されているはずです。
さて、長い道のりも終り、ようやく本番です。実際にHTMLファイルに書き込みます。
上のIMGタグの書き方例では、ロケーション名を test としています。
ロケーション名とは、カウンタが認識するページの名称のことで、実際のアドレス /~mylove/index.html 等
を使用すると分かりやすくて良いでしょう。
ロケーション名をたくさん使えば、同じホームページ内に独立したカウンタをいくつでも作れます。
当然ですが、独立したカウンタ毎にnpc.cgiやnpc.idxを置く必要はありません。1個づつで十分です。
違うロケーション名は、別ページとしてnpc.cgiが認識し、独立してカウントしてnpc.idxファイルに記録します。
今まで使っていたカウンタの数字をそのまま残したい場合、例えば、
[例:今の使用中の他カウンタが2500を記録、ロケーション名(L=)を/~mylove/main.htmlにし、
プログレッシブモード(カウンタが動くモード:&P=ON)にして、動画GIF(&A=G)にする場合は]
<IMG SRC="/~mylove/cgi-bin/npc.cgi?L=/~mylove/main.html
&I=/home3/mylove/public_html/cgi-bin/npc.idx&P=ON&A=G&INIT=2500">
と書きます。カウンタをゼロから始める時は&INIT=2500は要りません。
npc.cgiは数字の種類や大きさ変更、桁数、色の指定など、数多くのオプションがあります。これらは&を使って、どんどんつなげていけます。詳しくは
を見てください。
以上です。ご健闘と皆さまのページのご発展をお祈り致します。
報告が相次いでいますが、97/6/11頃、www2s.biglobe.ne.jpのサーバでは、BIGLOBEの管理側の設定が変更されて、通常プログラムではINDEX File ROCKエラーなどが出て動かなくなった事があります。この変更処理の応急措置として、その状態でも動く改良プログラム(ただし一部機能制限有り)を一応UPしておきます。同じように、2s-npc.binをnpc.cgiと名前を変更して使ってください。
2s-npc.bin(www2s.biglobe.ne.jpの方のみ…HP-UX用)
なお、この問題につきましては、npc.cgiの作者である「にあ」さんの会議室で逐次情報が公開されていますので、チェックしてみてください。
「うぇぶ会議室」
の「npc.cgiの部屋」で受け付けています。
なお、この問題についてはBIGLOBE事務局から発表がありました。「
平成9年6月11日より6月16日午後12時までの間、システム不具合のため、
www2s.biglobe.ne.jp上に開設されているホームページのcgi(アクセスカウンタや
チャット、会議室等)が正常に動作しないという状況が発生しておりました。
現在は復旧し、正常にご利用いただけます。
ご迷惑をおかけいたしまして誠に申し訳ございませんでした。 」とのことです。
ここであげている改良プログラムは同時ロックに弱いので、ステップ2のHP-UX用を使用したほうがベターです。
npc.cgiは画像種類によって性格が変化します
まず、カウンターをスクロールさせてカウントアップさせる場合、
npc.cgiは数値の画像をmultipart GIFかanimation89aGIFのどちらかを選べます。
つまり &A=S にするか &A=G と書き込むかです。
普通のカウンタは単なるGIF画像なので、動きませんよね。動くからこの解説の意義があるのです。
1■設定を&P=ON&A=Sにすると、
そのアクセス数を確認したい時は、ブラウザでnpc.idxファイルを見れば大丈夫。
npc.idxに全てのロケーションのアクセス数が記録されています。
summery.plをテキストで保存して、ファイル名をsummery.cgiに変更。サーバに転送し、実行権705をつけてブラウザでファイルを指定してください。ただ、それだけです。。もっと有益な物を作るか…(笑)今度は、メールの受付の自動処理などの解説したいと思ってます。
こうなります。summery.cgi
URL: http://www2a.biglobe.ne.jp/~seikofan/htm/cgi/npc.html