Dell Optiplex GXa Solaris 8  x86  6/00

戻る




squid-2.4.STABLE7


proxy (プロクシ(プロキシと発音する人もいる)(代理という意味だそうだ)) キャッシュ サーバーソフト。


不純な動機:

使いやすいというよりも、「馴れ」と「いざ友人に質問されたときにすぐに返答ができるように」という 理由から、普段使用しているブラウザはMicrosoft Internet Explorerを使っている。しかし、最近の IEは動作がかなり遅い。
IEのキャッシュも本来ならば、次に同じサイトを閲覧する場合の表示速度の向上のための筈だが、 このキャッシュファイルが大きくなってしまうと、サイト内容とキャッシュ内容の比較に時間がかかっ てしまうらしく、逆に足を引っ張ってしまっているようだ。たまに「インターネット一時ファイルの削除」 をすると速度が改善することがあるので、多分間違いないだろう。
最近はOperaなどの軽いブラウザも流行っているので、乗り換えてしまいたい気持ちはやまやま だが、ブラウザごときに料金を払うのも何だし、料金を支払わないと表示されるあのバナー広告も 邪魔だし、冒頭の理由からも今一つ踏み切れない。
IEの「インターネット一時ファイルの削除」をすると、同じ内容を表示する時にどうしてもネットワーク トラフィックが発生する。ブロードバンドとはいえ、所詮はADSLなので「イライラ」することもない訳 ではない。

そこで、IEの「インターネット一時ファイルの削除」をしても速度的にあまり問題にならないようにす るため、LAN内にキャッシュサーバを立てる事にした。
プロクシサーバーソフトも幾つかあるが、あまり考えずに最もポピュラーなsquidを選択した。



必要なソフトウェア:

	squid-2.4.STABLE7-src.tar.gz	(02.Jly.2002 Released)
	http://www.squid-cache.org/Versions/v2/2.4/



準備からインストール:

作業ディレクトリを作成する。
	$ mkdir /opt/src/squid-2.4.stable7

作成したディレクトリに移動する。
	$ cd /opt/src/squid-2.4.stable7/

アーカイブをダウンロードする。
	$ wget http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE7-src.tar.gz

アーカイブを解凍展開する。
	$ tar xozf squid-2.4.STABLE7-src.tar.gz

展開されたディレクトリに移動する。
	$ cd squid-2.4.STABLE7

最適化スクリプトを実行する。
	$ ./configure --prefix=/usr/local/squid

コンパイルスクリプトを実行する。
	$ make all

SuperUserになる。
	$ su
	password:

インストールする。
	# make install

インストールされたディレクトリの所有者と所属グループを変更しておく。
	# chown -R nobody:nogroup /usr/local/squid


設定ファイルは/usr/local/squid/etc/squid.coonfになるが、
このパスが気に入らない場合は、上記の最適化をする前に、
configureスクリプトの176行目を書き換えればいい。



設 定:

設定ファイルをviで開く。
# vi /usr/local/squid/etc/squid.conf

以下のように変更して保存する。

	48行目
	http_port 8080
	 (最近(ここ1〜2ヶ月の間)8080ポートをスキャンされることが
	 多いので、ルーターやFireWallで閉じる事が出来ない場合は、
	 3128と8080以外の他の奇想天外なポート番号を指定した方
	 がいいだろう)

	56行目
	icp_port 0
	 (他のキャッシュサーバーと連携をとる訳ではないので、0を
	 指定してやる)

	405行目
	cache_mem 0 MB
	 (今回のサーバーはキャッシュプロクシ専用と言う訳ではなく、
	 搭載メモリ容量も少ないのでメモリキャッシュは使用しない。)

	438行目
	maximum_object_size 40960 KB
	 (キャッシュ対象のファイルサイズ上限はデフォルトでは4MB
	 だが比較的大きなアーカイブもキャッシュするように40MBに
	 した)

	601行目
	cache_dir ufs /var/spool/squid_cache 400 32 256
	 (キャッシュファイルのパスを指定し、容量も指定している。
	 家庭内LAN用なのと、/varの残り容量を加味して、容量は
	 比較的少なめの400MBとした。
	 一次ディレクトリ数は32個、それぞれの中の二次ディレ
	 クトリ数は256個に指定している)

	608行目
	cache_access_log /var/log/squid/access.log
	 (ログのパス指定)

	616行目
	cache_log /var/log/squid/cache.log
	 (ログのパス指定)

	668行目
	emulate_httpd_log on
	 (デフォルトのアクセスログは非常に見づらい(時刻表記が1970年1月1日からの
	  加算秒になってたり)ので、Apacheのログ出力に準拠したフォーマットにする。)

	721行目
	pid_filename /var/log/squid/squid.pid
	 (プロセスIDメモファイルのパス指定)

	769行目
	ftp_user you@domain1.com
	 (匿名ftp時のパスワード指定(自分のメールアドレス))

	1413行目以下に追加行
	acl LAN src 192.168.0.0/255.255.255.0
	http_access allow LAN
	 (アクセス許可ホスト(ネットワーク)をLANという名前で定義して、
	 許可を与える)

	1563と1564行目
	cache_effective_user nobody
	cache_effective_group nogroup
	 (コメントアウト(#)を外す)

	1735行目
	logfile_rotate 10
	 (コメントアウト(#)を外す)


ログ格納ディレクトリを作成する。
	# mkdir /var/log/squid

作成したログ格納ディレクトリをsquidを実行するユーザー権限に変更する。
	# chown -R nobody:nogroup /var/log/squid

一時的に/var/spoolディレクトリのパーミッションを緩くしておく。
	# chmod 777 /var/spool

キャッシュファイル用ディレクトリ(/var/spool/squid_cache/)を作成させる。
 (結構時間がかかった)
	# /usr/local/squid/bin/squid -z

/var/spoolディレクトリのパーミッションを戻す。
	# chmod 755 /var/spool

起動してみる。
	# /usr/local/squid/bin/squid



起動スクリプトの作成:
Linux用の起動スクリプトならソースに付属
/opt/src/squid-2.4.stable7/squid-2.4.STABLE7/contrib/squid.rc
しているが、Solaris用に書き換えるには内容が違いすぎるので、
単純なスクリプトを以下のように新しく手書きした。

新規ファイル /etc/init.d/squid.rc をviで作成する。
	# vi /etc/init.d/squidrc

以下の内容を書き込んで保存する。
	#!/bin/sh
	case "$1" in
	'start')
		if [ -f /usr/local/squid/etc/squid.conf ] ; then
			/usr/local/squid/bin/squid &
			echo " Squid STARTED  OK!"
		fi
		;;
	'stop')
		if [ -n /var/log/squid/squid.pid ] ; then
			/usr/local/squid/bin/squid -k shutdown
			echo " Squid STOPPED ok "
		fi
		;;
	*)
		echo " !!! ??? !!! squid.rc { start | stop } !!! ??? !!! "
		;;
	esac
	exit 0

作成した起動スクリプトのパーミッションに実行を追加する。
	# chmod 755 /etc/init.d/squid.rc

テストしてみる。
	# /etc/init.d/squid.rc stop
	# /etc/init.d/squid.rc start

ディレクトリを移動する。
	# cd /etc/rc2.d

起動スクリプトのシンボリックリンクをこの中に張る。
	# ln -s ../init.d/squid.rc ./S99squid