インストールメモ

[アクセスカウンターサービス]

1.アーカイブファイルの入手
  ハンターネットから以下の2つを取得。
	ftp.rthunter.gr.jp/pub/unix/src/pubc/pubc41.tar.gz
	ftp.rthunter.gr.jp/pub/unix/src/fly/fly-1_6_5_tar.gz


2.アーカイブファイルの展開
  取得したアーカイブファイルのうち pubc41.tar.gz は apache のドキュメントルート下で展開します。

	% mv pubc41.tar.gz /home/web/public_html/
	% cd /home/web/public_html
	% gzip -d pubc41.tar.gz
	% tar -xvf pubc41.tar

  すると、pubc/ のようなディレクトリが作成され、中にカウンターに必要なファイル一式が展開
  されます。 ここでは分かりやすい安いように counter とでもディレクトリ名を変更しましょう。

	% mv pubc couner

  fly-1_6_5_tar.gz に関しては、コンパイル後にバイナリファイルを持ってくるので何処で解凍してもか
  まいません。 解凍後はとっととコンパイルしましょう。

	% su -
	% password:********
	# gzip -d fly-1_6_5_tar.gz
	# tar -xvf fly-1_6_5_tar
	# cd fly-1.6.5
	# make

  無事コンパイルが終了したらバイナリファイルをカウンターファイル一式と同じ場所にコピーします。
  そして全てのファイルのオーナーとグループを apache の実行権限と合わせます。

	# cp fly /home/web/public_html/counter/
	# cd /home/web/public_html
	# chown -R web:web counter


3.パーミッションの設定
  各種ファイルのパーミッションを設定します。
  さらに、管理をブラウザで行うのでは無く、シェルにログインして行う場合は管理用スクリプトは必要
  無いので削除しておきます。

	% cd /home/web/public_html/counter
	% chmod 777 users
	% rm access.pl


4.apache の設定
  public_html 下で CGI スクリプトを走らせるため apache の設定を変更します。
  具体的には counter のディレクトリに Options で ExecCGI を指定します。
  なお、counter.cgi 以外はアクセス制限をかけておかないと誰でもカウンターサービスを受けられてしま
  うので counter.cgi 以外には制限をかけましょう。 今回の例では認証を使っています。

	% su -
	% password:********
	# cd /usr/local/apache/conf
	# vi httpd.conf

  今回の例では httpd.conf に以下の様な設定をしました。

	<Directory /home/web/public_html/counter>
	    AllowOverride None
	    Options ExecCGI
	    <Files *.html>
	        AuthType Basic
	        AuthName members
	        AuthUserFile /usr/local/apache/member/member-id
	        AuthGroupFile /usr/local/apache/member/member-gr
	        <Limit GET POST>
	            require valid-user
	        </Limit>
	    </Files>
	    <Files change.cgi>
	        AuthType Basic
	        AuthName members
	        AuthUserFile /usr/local/apache/member/member-id
	        AuthGroupFile /usr/local/apache/member/member-gr
	        <Limit GET POST>
	            require valid-user
	        </Limit>
	    </Files>
	    <Files regist.cgi>
	        AuthType Basic
	        AuthName members
	        AuthUserFile /usr/local/apache/member/member-id
	        AuthGroupFile /usr/local/apache/member/member-gr
	        <Limit GET POST>
	            require valid-user
	        </Limit>
	    </Files>
	    <Files remove.cgi>
	        AuthType Basic
	        AuthName members
	        AuthUserFile /usr/local/apache/member/member-id
	        AuthGroupFile /usr/local/apache/member/member-gr
	        <Limit GET POST>
	            require valid-user
	        </Limit>
	    </Files>
	</Directory>

  さらに、拡張子が .cgi と .pl を CGI として実行させるには以下の行も必要です。

	AddHandler cgi-script .cgi .pl

  設定を反映させる為に apache を再起動しましょう。

	# /usr/local/apache/bin/apachectl restart

  これで設定が反映されました。


5.動作試験(トップページのカウンター設定)
  一通り設定が終わったので動作試験をしてみましょう。
  ブラウザを使用して http://www.rthunter.gr.jp/counter/index.html を見てみましょう。
  カウンターが表示されないサービス解説画面が表示されればOKです。
  最初にこのページに表示するカウンターを登録しましょう。
  画面下の方から「新規登録」をクリックしてカウンター名を pubc として登録しましょう。
  登録終了後、ブラウザを再起動して再度解説画面を表示させればカウンターが表示されているはずです。


5.CGI スクリプトの修正
  counter/ 以下には4つの CGI スクリプトがあります。 エラーメッセージの表示や、登録終了後のタグ
  の表示など、自分で修正しなければならない部分がいくつかあります。

  [counter.cgi]
   カウンター表示要求を処理するメインのスクリプトです。 このスクリプトにはアクセス制限をかけて
   はいけません。 制限された所からはカウンターが見えなくなります。 変更部分は下記の通りです。

  ・エラー画像設置ディレクトリ
	$url = 'http://www.rthunter.gr.jp/counter/';

  ・設置URLをチェックしない場合は以下は削除で良いでしょう
	foreach (0 .. $#bad) {
		if ($bad[$_] eq '') { next; }
		if ($ref =~ /$bad[$_]/i) { &error(3); }
	}

  ・1日1000カウント以上を無効にしない場合は以下をコメントアウトします。
	if ($buffer ne 'pubc') {
	   if ($lines[8] > 1000) { &error(4); }
	}

  ・カウンター用画像ファイルを変更する時は fly に渡す画像のサイズも変更する必要があります。
	if ($digit_dir =~ /1/) { $width = "15"; $height = "20"; }
	elsif ($digit_dir =~ /2/) { $width = "20"; $height = "32"; }
	elsif ($digit_dir =~ /3/) { $width = "18"; $height = "22"; }
	elsif ($digit_dir =~ /4/) { $width = "16"; $height = "20"; }
	elsif ($digit_dir =~ /5/) { $width = "20"; $height = "26"; }
	elsif ($digit_dir =~ /6/) { $width = "20"; $height = "27"; }
	elsif ($digit_dir =~ /7/) { $width = "24"; $height = "28"; }

  [change.cgi]
   登録内容を変更する時に使用するスクリプトです。 これにはアクセス制限を設けた方が良いでしょう。

  ・FreeBSD でカウンターサービスを設置する場合、crypt 関数がうまく動作してくれないのでハッシュ部分
   をコメントアウトします。(ファイルに保存されるパスワードはベタテキストになります)
   そしてベタテキストをパスワードとして保存する1行追加します。
	#$now = time;						<--コメントアウト
	#($p1, $p2) = unpack("C2", $FORM{'user'});		<--コメントアウト
	#$wk = $now / (60*60*24*7) + $p1 + $p2 - 8;		<--コメントアウト
	#@saltset = ('a'..'z','A'..'Z','0'..'9','.','/');	<--コメントアウト
	#$nsalt = $saltset[$wk % 64] . $saltset[$now % 64];	<--コメントアウト
	#$pwd = crypt($FORM{'pwd_1'}, $nsalt);			<--コメントアウト

	$pwd = $FORM{'pwd_1'};					<--追加

  [regist.cgi]
   新規登録を行うスクリプトです。 これにはアクセス制限を設けた方が良いでしょう。

  ・登録OK画面の表示のサーバー名を入力
	print "<font color=\"#ff0000\"><img src=\"http://www.rthunter.gr.jp/counter/counter.cgi?
	<b>$FORM{'user'}</b>>

  ・FreeBSD でカウンターサービスを設置する場合、crypt 関数がうまく動作してくれないのでハッシュ部分
   をコメントアウトします。(ファイルに保存されるパスワードはベタテキストになります)
   そしてベタテキストをパスワードとして保存する1行追加します。
	#$now = time;						<--コメントアウト
	#($p1, $p2) = unpack("C2", $FORM{'user'});		<--コメントアウト
	#$wk = $now / (60*60*24*7) + $p1 + $p2 - 8;		<--コメントアウト
	#@saltset = ('a'..'z','A'..'Z','0'..'9','.','/');	<--コメントアウト
	#$nsalt = $saltset[$wk % 64] . $saltset[$now % 64];	<--コメントアウト
	#$pwd = crypt($FORM{'pwd_1'}, $nsalt);			<--コメントアウト

	$pwd = $FORM{'pwd_1'};					<--追加

  ・設置URLをチェックしない場合は以下は削除で良いでしょう
	foreach (0 .. $#bad) {
		if ($bad[$_] eq '') { next; }
		if ($FORM{'page'} =~ /$bad[$_]/i) { &error(url); }
	}

  [remove.cgi]
   登録削除を行うスクリプトです。 これにはアクセス制限を設けた方が良いでしょう。

  ・FreeBSD でカウンターサービスを設置する場合、crypt 関数がうまく動作してくれないのでハッシュ部分
   をコメントアウトします。(ファイルに保存されるパスワードはベタテキストになります)
   そしてベタテキストをパスワードとして認証する1行追加します。
	#if (crypt($plain_text, substr($encode_pwd,0,2)) eq $encode_pwd) {	<--コメントアウト

	if ($plain_text eq $encode_pwd) {					<--追加


6.動作試験(トップページのカウンター設定)
  一通り設定が終わったので動作試験をしてみましょう。
  ブラウザを使用して http://www.rthunter.gr.jp/counter/index.html を見てみましょう。
  カウンターが表示されないサービス解説画面が表示されればOKです。
  最初にこのページに表示するカウンターを登録しましょう。
  画面下の方から「新規登録」をクリックしてカウンター名を pubc として登録しましょう。
  登録終了後、ブラウザを再起動して再度解説画面を表示させればカウンターが表示されているはずです。