squidでTigerなWebProxyを構築してみる。
MacOSXでサーバー構築の一環。ターゲットはMacOS X 10.4.2
まずはアーカイブをここからダウンロードする
次に解凍。適当な場所で、
% tar xzf squid-2.5.STABLE10.tar.gz
gzip -dc squid-2.5.STABLE9.tar.gz | tar xvf - なんて方法もあるが、個人的にはtar一発の方が好き。
とすると解凍されてディレクトリが出来上がるので、そこに移動してconfigureをかける。ここでデフォルトでは/usr/local/squidにインストールされてしまうのだが、せっかく/usr/local/binがあるので、
% ./configure --prefix=/usr/local/bin/squid
としておく
% make
% sudo make install
sudoでは当然パスワードを聞いてくるので入力。
次に設定。設定ファイルは/usr/local/bin/squid/etc/
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マネージャで作成しておく。といっても下手に作るとセキュリティ的にヤバイ
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を使用する事になる。
【特集】Mac OS X Tigerの実力は? - 4度目のアップデート、その真価を探る (15)
launchd in Depth
codepoetry - Launchd Editor
辺りを参考に。
によると、
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で自分で起動するってコトで・・・【木亥火暴】
# launchctl stop org.squid-cache
# launchctl unload org.squid-cache
# launchctl load org.squid-cache
# launchctl start org.squid-cache
ちなみにunloadとloadは念のためにやっておくだけで、あまり意味はないかも・・・
はじめまして、ここの情報を参考にsquidの自動起動をしました。大変参考になりました、ありがとうございます。
一点気になったことがあるのですが、squidはバックグラウンドでsquidを開始するフロントエンドのコマンドなので、一度だけ起動すればよいようです。書かれたとおり実行してみましたところ、squid/var/cache.logの中に『Squid is already running! Process ID XXX』がたくさん発生しておりました。そこでOnDemandをtrueに、新たにRunAtLoadをtrueに設定したところ、この現象は収まりました。以上ご報告まで、よろしくお願いします。
fenrirさん、コメントありがとうございましたm(__)m
自分でも試行錯誤の結果なので信憑性は???なんですけどね(^^; お役に立てたなら幸いでした。
squidってフロントエンドだったんですねぇ・・・ なんて程度のレベルなんです、自分も(^^; RunAtLoadと言うキーは知りませんでした。
こちらこそありがとうございましたm(__)m