« squid(プロキシサーバ)の設定 - その1 | メイン | squid(プロキシサーバ)の設定 - その3 »

squid(プロキシサーバ)の設定 - その2

その1ではRunCacheスクリプトを使って起動するところまで書きました。
このスクリプトのいいところはなにかの都合でsquidがダウンしてしまってもダウンしたことを検知して自動で起動してくれます。しかし停止したい時通常以下のコマンドを使いますがしばらくするとsquidが起動しているのです。

# squid -k shutdown

なので先にRunCacheを落としてからsquidを停止するという順番で停止させます。

# skill RunCache
# squid -k shutdown

RunCacheスクリプトをのぞいて不思議に思ったことがあるので書いておきます。
---
echo "Running: squid -sY $conf >> $logdir/squid.out 2>&1"
---
の最後の数字ですが2はエラー出力、1は標準出力、>&はエラー出力を扱うときのリダイレクト方法のようです。

次にシステムの起動時に自動起動するスクリプトを用意します。
rpmでsquidがインストールされた状態なので/etc/init.d/squidをカスタマイズするか新たに作るかのどちらかです。私は新たに作りました。

# vi /etc/init.d/squid
---
#!/bin/bash
#
# Startup script for the squid-2.6.STABLE5
#
# chkconfig: 35 99 1
# description: squid is Internet Object Cache.

export PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"

RUNCACHE=/usr/local/squid/bin/RunCache
LOCKFILE=/var/lock/subsys/squid
SQUID=/usr/local/squid/sbin/squid

case "$1" in
start)
if [ -x $RUNCACHE ]; then
if [ -f $LOCKFILE ]; then
echo "squid-2.6.STABLE5 already started!!"
else
touch $LOCKFILE
echo "Starting squid-2.6.STABLE5 Please wait......"
$RUNCACHE &
sleep 5
fi
else
echo "squid-2.6.STABLE5 program Not Found"
fi
;;
stop)
if [ -x $SQUID ]; then
if [ -f $LOCKFILE ]; then
echo "Shutting down squid-2.6.STABLE5: "
skill RunCache >/dev/null
$SQUID -k shutdown
rm -f $LOCKFILE
else
echo "squid-2.6.STABLE5 already Stopped!!"
fi
else
echo "squid-2.6.STABLE5 program Not Found"
fi
;;
*)
echo "Usage: httpd {start|stop}" 1>&2
exit 1
esac
exit 0
---
その後以下のコマンドでパーミッションを変更

# chmod 755 /etc/init.d/squid

chkconfigを使ってシステムにこの自動起動スクリプトを登録するので chkconfig の行と description の行を書きましょう。そしてシステムへの登録コマンドをを入力します。

# chkconfig --add squid

確認は以下

# chkconfig --list squid
---
squid 0:off 1:off 2:off 3:on 4:off 5:on 6:off
---

起動スクリプトのはじめの方に
# chkconfig: 35 99 1
と書きましたが35はランレベル3と5で起動し起動する順番は99番目、停止する順番は1番目、という意味になります。私はランレベル5で動かしているので自動起動するようになりました。

serviceコマンドも使えるようになっているのでsquidを起動してみましょう。

# service squid start

ここまででほぼ完成で、やり残しているのはログの管理です。
またまた長くなったので次回書くことにします。