最近のトラックバック

こんなことも書いたっけ

アーカイブ一覧

広告

企画・制作・丁稚


    (c)Wakui3 Allrights reserved.
    since 1999. 7. 1-
    あすか物流センター

ところで・・・

このサイトで使用されているリソースの著作権は、すべて作成者・撮影者が保有しています。無断での2次利用はご遠慮下さい。

« Toast 6 Liteアップデート。 | メイン | HDD換装してみる。 »

squidでTigerなWebProxyを構築してみる。

 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

*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されてるんだけども・・・(?_?)

トラックバック

このエントリーのトラックバックURL:
http://w3s-factory.com/cgi-local/mt/mt-tb.cgi/477

コメント (2)

はじめまして、ここの情報を参考に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

コメントを投稿

« Toast 6 Liteアップデート。 | メイン | HDD換装してみる。 »