MacOSXでサーバー構築の一環。ターゲットはMacOS X 10.4.2
*1
。
とすると解凍されてディレクトリが出来上がるので、そこに移動してconfigureをかける。ここでデフォルトでは/usr/local/squidにインストールされてしまうのだが、せっかく/usr/local/binがあるので、
としておく *4 。次にコンパイルとインストール。
sudoでは当然パスワードを聞いてくるので入力。
次に設定。設定ファイルは/usr/local/bin/squid/etc/ *5 にある。mime.confはひとまずそのまま。squid.confをバックアップしてから、以下の部分を編集する。
ま、この辺は好みだから(^^; あと見直しそうなパラメータとしてはcache_access_log、cache_log、cache_store_logあたりかな? あ、ftp_userを設定するのは礼儀かも。
cache_effective_user、cache_effective_groupを変更しているので、このユーザーとグループをNetInfoマネージャで作成しておく。といっても下手に作るとセキュリティ的にヤバイ *6 ので、同じような感じ【笑】のsshdから複製して作成する。
sshdからの変更点としてはユーザーが、
グループは、
さらに/usr/local/bin/squid/のオーナーとグループもsquidに変更しておく。
ここまでやったら一度squidを初期化。
Creating Swap Directoriesと表示され、正常終了すればOK。これで一度、squidのデーモンを起動してみる。
起動しているかどうかを確認。
なぜかrootで実行してるんですけど・・・ これはこれでOKなのかも知れない。実際キャッシュしてそうなプロセスはsquidで動いてるし。
とある。LaunchDaemonsはrootユーザーでバックグラウンド、LaunchAgentsはユーザーとしてフォアグラウンドとあるのだが、squidはユーザーでバックグラウンドなんだけども・・・orz... ひとまず/System/Library/LaunchDaemons/に起動用のファイルorg.squid-cache.plistを置く事にする。んで、その内容なんだけども、
てなところを参考にしつつ、以下のような感じにしてみた。
これでひとまず動作する事を確認。だがこれでホントにいいのかどうかは不明【爆】 コンソールを見ると、
と、何やらエラーがでながらも、一応squidは起動しているようには見える。psしてみてもちゃんとプロセスは生きてる感じ。まぁダメな時はlaunchctlで自分で起動するってコトで・・・【木亥火暴】 *7
ちなみにunloadとloadは念のためにやっておくだけで、あまり意味はないかも・・・ *8
まずはアーカイブをここからダウンロードする
*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を使用する事になる。
【コラム】OS X ハッキング! 第141回 虎飼い日記 その8 - launchd経由でSWATを起動する
【特集】Mac OS X Tigerの実力は? - 4度目のアップデート、その真価を探る (15)
launchd in Depth
codepoetry - Launchd Editor
【特集】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で自分で起動するってコトで・・・【木亥火暴】 *7
# launchctl stop org.squid-cache
# launchctl unload org.squid-cache
# launchctl load org.squid-cache
# launchctl start org.squid-cache
ちなみにunloadとloadは念のためにやっておくだけで、あまり意味はないかも・・・ *8
*1
: DeveloperToolsをインストールしておかないといけない事忘れてたよorz...
*2 : 既にインストールされているかな、とも思ったのだがそう甘くは無いらしい・・・
*3 : gzip -dc squid-2.5.STABLE9.tar.gz | tar xvf - なんて方法もあるが、個人的にはtar一発の方が好き。
*4 : squidのフォルダが出来てその下にインストールされるので、デフォルトでもいいような気がしてきた(-_-;)
*5 : やっぱりデフォルトで良かったorz...
*6 : shellとか気をつけておかないと万が一乗っ取られた時にヤバイ。
*7 : もうちょっと調べてみないとダメね(__)
*8 : てか、launchctl listで見ると、ちゃんとloadされてるんだけども・・・(?_?)
*2 : 既にインストールされているかな、とも思ったのだがそう甘くは無いらしい・・・
*3 : gzip -dc squid-2.5.STABLE9.tar.gz | tar xvf - なんて方法もあるが、個人的にはtar一発の方が好き。
*4 : squidのフォルダが出来てその下にインストールされるので、デフォルトでもいいような気がしてきた(-_-;)
*5 : やっぱりデフォルトで良かったorz...
*6 : shellとか気をつけておかないと万が一乗っ取られた時にヤバイ。
*7 : もうちょっと調べてみないとダメね(__)
*8 : てか、launchctl listで見ると、ちゃんとloadされてるんだけども・・・(?_?)
コメント (2)
はじめまして、ここの情報を参考にsquidの自動起動をしました。大変参考になりました、ありがとうございます。
一点気になったことがあるのですが、squidはバックグラウンドでsquidを開始するフロントエンドのコマンドなので、一度だけ起動すればよいようです。書かれたとおり実行してみましたところ、squid/var/cache.logの中に『Squid is already running! Process ID XXX』がたくさん発生しておりました。そこでOnDemandをtrueに、新たにRunAtLoadをtrueに設定したところ、この現象は収まりました。以上ご報告まで、よろしくお願いします。
投稿者: fenrir | 2008年1月30日 11:26
日時: 2008年1月30日 11:26
fenrirさん、コメントありがとうございましたm(__)m
自分でも試行錯誤の結果なので信憑性は???なんですけどね(^^; お役に立てたなら幸いでした。
squidってフロントエンドだったんですねぇ・・・ なんて程度のレベルなんです、自分も(^^; RunAtLoadと言うキーは知りませんでした。
こちらこそありがとうございましたm(__)m
投稿者: Wakui3 | 2008年2月 4日 01:16
日時: 2008年2月 4日 01:16