WSUSをホストしているマシンの電源を落として、再起動したあと(実は電源OFF/ONは関係ありませんでした)、「仮想ディレクトリ/selfupdateへのアクセスができません」と言われるようになってしまいまい、大変困っていました。やっと解決したのでメモ。
どんな現象が起きる?
- IISで80番をホストしている仮想ディレクトリ/selfupdate(WSUSを8530番でセットアップしていたとしても、/selfupdateだけは80番でアクセスできる必要があります)へのアクセスが500番のエラーとなる
- よって、WSUSのクライアントの自動更新ができない
- WSUSクライアントは「更新しています…」というアイコンをタスクトレイに出したままになる(一時的に消えますが、復活します)
- IEでhttp://servername/selfupdate/iuident.cabを直接参照しても、「パスが見つかりません」と言われる
やってみたこと
googleでselfupdate、WSUSというキーワードで検索してみると、同様の事例がありました。そこでは
仮想ディレクトリ/selfupdateの実パス(C:\Program Files\Update Services\Selfupdate)のNTFSセキュリティをeveryoneに対してread権限を与える。
という方法が紹介されていたので私もread権限を与えてみましたが、解決には至らず。しかし、この方法で解決できる方もあるかもしれません。やってみてください。
また、私の場合、WSUSが8530番のポートを使用しているので(
Windows Sharepoint Serviceと
共存させる場合、8530を使用するみたいです)、
http://servername:8530/selfupdateへリダイレクトできないかと思ったのですが、これも同様に「パスが見つかりません」というエラーが出ました。
解決編
ディレクトリが見つからないというエラーが出ると言うことは、
IISの途中でフックしているフィルタプログラム(ISAPIフィルタ)がいるためではないか?と思って確認してみました。
すると、確かにいます、JRun 4.0(Update 5)。もちろん自分で入れた物ですが、つい最近までうまく動いていなかったので、忘れていました。そういえば、JRunが正しく動き出してからうまくいかなくなったような記憶があります。うまく動かなかった理由がJRunフィルタの構成間違い。以前はディレクトリを間違えていて、正しくフィルタが読み込まれていなかったために、WSUSが問題なく動いていたのではないか?と考えました(実際JRun側では「フィルタが読み込まれていない」というエラーが出ていました)。
そこでJRunのフィルタを手動で削除(ほんとはちゃんと
ツールがあるので、それを使うこと。後述)して、
IISを再起動してみると、/selfupdate配下が
IEで参照できるようになりました。もちろんWSUSもエラーを出しません。めでたしめでたし。
というわけで、/selfupdateが参照できないというエラーが出た場合、
IISのフィルタもチェックしましょう。ただし、
ASP.NETのフィルタだけははずさないように。WSUS自身が
ASP.NETを使用しているので、削除するともっと痛い目を見ます。
なお、JRunはVirtual Serverで別環境を用意して解決しました。
おまけ
「JRunのフィルタを手動で削除した」とありますが、これはもちろん間違いで、JRun4には「Webサーバ設定
ツール」というものがプログラムグループに登録されています。これを使えば正しく、しかも簡単にJRunのフィルタを
IISに登録/削除してくれます。JRunのアンインストールや、フィルタを手動で削除することはありません。知らなかったので、「えらい大変だな~」と思っていたのですよ。
さらにおまけ
最初、同居している
Windows SharePoint Serviceがいけないのかと思って削除しちゃった(;-;)。まぁ、ほとんど入っていないからいいのですけど。