Polipoを導入

| | コメント() | トラックバック(0)
ごく一部で話題になり初めてるようですが、polipoは個人用にネットワークの高速化に特化したプロキシーサーバーで、実際試してみたところ、光の自宅回線ですら、mixiやFlickrが劇的に快適になったので、感動のあまり、Mac用GUIを作成しちゃいました。
ということなので、polipoを導入してみました。

Mac OS用のGUIはこちらのページに任せるとして、polipoのインストールの方を・・・。

Polipo is a small and fast caching web proxy (a web cache, an HTTP proxy, a proxy server). While Polipo was designed to be used by one person or a small group of people, there is nothing that prevents it from being used by a larger group.

tarballをとってきて、解凍した後に、
$ make all
$ sudo make install
であっさりインストールできてしまう。

このままだと再起動時にサービスが起動しないので、ドキュメントを確認してみる。

The /System/Library/StartupItems directory is reserved for startup items that ship with Mac OS X. All other startup items should be placed in the /Library/StartupItems directory. Note that this directory does not exist by default and may need to be created during installation of the startup item.
しばらくMacを使っていない間に、launchdで管理するようになっていたとは・・・。
lookupdとかは、過去の遺物ですか。

気を取り直して、起動スクリプトを書いてみる。

$ sudo mkdir /Library/StartupItems/Polipo
$ cat > /Library/StartupItems/Polipo
#!/bin/sh

. /etc/rc.common

PATH=$PATH:/usr/local/bin;

# The start subroutine
StartService() {
#    polipo daemonise=true logFile="/var/log/polipo.log"
    polipo logFile="/var/log/polipo.log" &

}

# The stop subroutine
StopService() {
    killall polipo
#    killall -9 mydaemon
}

# The restart subroutine
RestartService() {
#    killall -HUP polipo
    StopService
    StartService
}

RunService "$1"
^D

$ cat > /Library/StartupItems/Polipo/StartupParameters.plist
<plist version="1.0">
<dict>
    <key>Description</key>
    <string>a caching web proxy</string>
    <key>Messages</key>
    <dict>
        <key>start</key>
        <string>Starting Polipo</string>
        <key>stop</key>
        <string>Stopping Polipo</string>
    </dict>
    <key>OrderPreference</key>
    <string>None</string>
    <key>Provides</key>
    <array>
        <string>Polipo</string>
    </array>
    <key>Uses</key>
    <array>
        <string>Network</string>
    </array>
</dict>
</plist>
^D

$ chmod 755 /Library/StartupItems/Polipo/Polipo

操作はSystemStarter経由でするのが正しいらしい。

$ /sbin/SystemStarter start "Polipo"
$ ps awx|grep polipo
53075   ??  S      0:01.28 polipo logFile=/var/log/polipo.log
53148 s000  R+     0:00.00 grep polipo

$ sudo /sbin/SystemStarter restart "Polipo"

$ ps awx|grep polipo                  
53153   ??  S      0:00.00 polipo logFile=/var/log/polipo.log
53155 s000  S+     0:00.00 grep polipo
後はdolipoを起動していれば、ネットワークが切り替わったらpolipoのdaemonを再起動してくれるらしい・・・が、Dolipoがうまく動いていない。

RestartをしてもpolipoのPIDが変わっていない。普通に考えて、一般ユーザーがSuperユーザーのプロセスをコントロールできるとも思えない。



と、ここまで書いてて気がついた・・・。一般ユーザーであげればいいじゃん!

$ polipo &
[1] 528
 Disabling disk cache: No such file or directory
Established listening socket on port 8123.

$ ps awx|grep polipo
  528 s000  SN     0:00.00 polipo
  530 s000  R+     0:00.00 grep polipo
ここで、DolipoでRestartしてみる。
[1]  + done       polipo
$ ps awx|grep polipo
  535   ??  Ss     0:00.01 /Applications/dolipo.app/Contents/Resources/polipo -c config 
  537 s000  R+     0:00.00 grep polipo
DolipoはただのGUIのフロントエンドではなく、polipoを内蔵していたという落ちですか。

しかも、某データセンターで働いていたときに刷り込まれた、「再起動時にもちゃんとあがるよう起動スクリプトを設置して、再起動時にちゃんとdaemonが上がるか確認する」という鉄則が今でも抜けないらしい・・・。

今後の方針としては、

1. polipoはSystemStarter経由で起動し、ネットワークが切り替わったときに自動的にRestartさせる
2. 一般ユーザーでDolipoのパッケージ内のpolipoを使用する

が考えられるけど、1の方が好きだな・・・。ネットワークが切り替わる時のhookにあたるようなものを探さねば。

普通に考えればDolipoで何にも問題ないんだけど、
  • メニューバーが埋まるのが少し嫌
  • どうせならCUIで完結したい
という一般的でない理由のために、もう少しがんばってみようかな・・・。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Polipoを導入

このブログ記事に対するトラックバックURL: http://blog.on-net.jp/tf/cgi-bin/mt-tb.cgi/9

コメント