MacOSXでサーバー構築の一環。ターゲットはMacOS X 10.4.2
*1
。
まずはアーカイブをここからダウンロードする
*2
。2005/ 7/11日現在のバージョンは、squid-2.5.STABLE10。今回はソースからコンパイルするので、squid-2.5.STABLE10.tar.gzを使用する。
次に解凍。適当な場所で、
% tar xzf squid-2.5.STABLE10.tar.gz
*3
とすると解凍されてディレクトリが出来上がるので、そこに移動してconfigureをかける。ここでデフォルトでは/usr/local/squidにインストールされてしまうのだが、せっかく/usr/local/binがあるので、
% ./configure --prefix=/usr/local/bin/squid
としておく
*4
。次にコンパイルとインストール。
% make
% sudo make install
sudoでは当然パスワードを聞いてくるので入力。
次に設定。設定ファイルは/usr/local/bin/squid/etc/
*5
にある。mime.confはひとまずそのまま。squid.confをバックアップしてから、以下の部分を編集する。
cache_mem 16 MB
cache_dir ufs /usr/local/bin/squid/var/cache 512 32 256
acl allow_client src 192.168.0.0/255.255.255.0
http_access allow allow_client
maximum_object_size 40960 KB
cache_effective_user squid
cache_effective_group squid
ま、この辺は好みだから(^^; あと見直しそうなパラメータとしてはcache_access_log、cache_log、cache_store_logあたりかな? あ、ftp_userを設定するのは礼儀かも。
cache_effective_user、cache_effective_groupを変更しているので、このユーザーとグループをNetInfoマネージャで作成しておく。といっても下手に作るとセキュリティ的にヤバイ
*6
ので、同じような感じ【笑】のsshdから複製して作成する。
sshdからの変更点としてはユーザーが、
uid 520
home /Library/squid
gid 520
name squid
realname WebProxy
グループは、
realname WebProxy
name squid
gid 520
さらに/usr/local/bin/squid/のオーナーとグループもsquidに変更しておく。
sudo chown -R squid:squid /usr/local/bin/squid/
ここまでやったら一度squidを初期化。
sudo /usr/local/bin/squid/sbin/squid -z
Creating Swap Directoriesと表示され、正常終了すればOK。これで一度、squidのデーモンを起動してみる。
sudo /usr/local/bin/squid/sbin/squid
起動しているかどうかを確認。
ps wwaux | grep squid
なぜかrootで実行してるんですけど・・・ これはこれでOKなのかも知れない。実際キャッシュしてそうなプロセスはsquidで動いてるし。
最後に、Mac起動時にsquidが自動的に起動するように設定する。10.4からはlaunchdを使用する事になる。
辺りを参考に。
によると、
In step three, launchd scans through a few different directories for jobs to run. There are two different folders types that are scanned. The LaunchDaemons folders should contain items that will run as root, generally background processes. The LaunchAgents folders should contain jobs, called agent applications, that will run as a user or in the context of userland. Often these can be scripts, other foreground items, and they can even include a user interface. When we get to our example we will be creating a user-specific LaunchAgent job. These directories are all kept in the typical Libraries of Mac OS X.
とある。LaunchDaemonsはrootユーザーでバックグラウンド、LaunchAgentsはユーザーとしてフォアグラウンドとあるのだが、squidはユーザーでバックグラウンドなんだけども・・・orz... ひとまず/System/Library/LaunchDaemons/に起動用のファイルorg.squid-cache.plistを置く事にする。んで、その内容なんだけども、
てなところを参考にしつつ、以下のような感じにしてみた。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.squid-cache</string>
<key>Program</key>
<string>/usr/local/bin/squid/sbin/squid</string>
<key>OnDemand</key>
<false/>
</dict>
</plist>
これでひとまず動作する事を確認。だがこれでホントにいいのかどうかは不明【爆】 コンソールを見ると、
launchd: org.squid-cache: respawning too quickly! throttling
launchd: org.squid-cache: 8 more failures without living at least 60 seconds will cause job removal
launchd: org.squid-cache: will restart in 10 seconds
squid[155]: Squid Parent: child process 157 started
launchd: org.squid-cache: exited with exit code: 1
と、何やらエラーがでながらも、一応squidは起動しているようには見える。psしてみてもちゃんとプロセスは生きてる感じ。まぁダメな時はlaunchctlで自分で起動するってコトで・・・【木亥火暴】
*7
# launchctl stop org.squid-cache
# launchctl unload org.squid-cache
# launchctl load org.squid-cache
# launchctl start org.squid-cache
ちなみにunloadとloadは念のためにやっておくだけで、あまり意味はないかも・・・
*8