Windows上にてSquidを動かした際、Windowsサービス化ができなくて、ドス窓を閉じたりサインアウトしたりするとSquidのプロセスが停止してしまう問題がありました。これが解決したのでまとめます。結局、既存のSquidのWindows用バイナリでは設定を柔軟に変更した上でのWindowsサービス化はできませんでした。以下の茨の道をたどります。環境おそらく非常に環境に左右される手順だと思いますので厳密に書いておきます。インストーラをダウンロード。ダウンロードしたらインストール開始。基本的に次へ次へでOKです。パッケージをダウンロードするリポジトリの選択画面では、ダウンロード速度を考え日本のサーバをおすすめします。以下のパッケージをポチポチインストール。1.15autoconfautoconf-archiveautoconf2.1libtoolcppunitlibcom_err-devellibcrypt-devellibdb-devellibexpat-devellibkrb5-devellibiconv-developenldap-developenssl-devellibsasl2-devellibxml2-develperl-DBIwgetpatchcygrunsrvcygrunsrv-debuginfo123456789101112131415161718192021222324252627282930インストールするパッケージを選択し終わったらインストール開始。Squidのコンパイルとインストールここからが鬼門。Squidに必要なディレクトリを作成しておく。/var/run/squid123次にソースコードを持ってきて解凍し、Cygwin上での最大ファイルディスクリプタ数を拡張するパッチをダウンロードしてあてる。3-5-11.patch123456configureを実行。--disable-wccpv21無事完了したらconfigureのバグを修正。configureはWindowsがmemrchr()というシステム関数を持っていると判断していますが、実際持っていません。厳密に言うとCygwinを動かすためだけに使用していますが、Squidは利用できません(ソースコードの書き換えが必要になる)。memrchr()を持ってないよと明示してやり、システム側の関数ではなくソースコードに添付の関数を使うように指示してやる必要があります。0"1234満を持してmakeとインストール。install1パス変数を追加し、インストールできたか確認。-v123普通は不要ですが、私はフォワプロとリバプロを分けて稼働させる必要があったため、バイナリ名を変更。-v12このタイミングで設定ファイル(squid.conf)は編集しておき、タイポ等ないようにしておきます。各種ファイルを生成するため一度手動起動。これやらずにサービス化すると各種ファイル所有者がSYSTEMになって人間が触れなくなります。私はサービス名と設定ファイル名を変更していたので-nオプションと-fオプションでそれを指定。起動を確認したらシャットダウンを2回。なんか2プロセス動いているみたいなので。以下のコマンドでsquidをWindowsサービス化。squidReverse12あとはservices.mscににsquidReveseがあるか、起動しているかを確認し、外部から疎通確認。ファイアウォールの穴開け忘れずに。所感さらっと手順書きましたけど、前回から更新がこんだけ期間空いているのはなぜなのか察してください。二度とLinuxのアプリをWindows上で使うなんてやらん。おまけ(Squidのコンフィグの無停止リロード)Windowsサービスは「設定のリロード」という機能がないため、設定をリロードしたかったらサービスを再起動する必要がありますが、これは数秒だけどダウンタイムを発生させます。Linuxだと普通に無停止リロードできるのに。SquidはLinuxのアプリなので、services.mscからはできませんがコマンドラインからは無停止リロードできます。Cygwinのライブラリにパスを通したうえでsquidのリロードコマンドを実行します。/etc/squid/squidReverse.conf12結論として、ますますWindowsが嫌いになったというお話でした。