WSS3.0(Windows SharePoint Service)のトラブルシュート。

 こういう仕事は基本的に受けないのだが、加藤あい似の担当者の女性の美脚に迷ってウカウカと受けてしまったWindows SharePoint Serviceの立ち上げのお手伝い。

「インストールは終わって画面はちゃんと出るし操作もできるので、基本的な設定はできてると思うんですが検索機能が動かないんです」

「はあ」
(ううううううんミニスカは目の毒だなぁウレシイけど)

「よく見てみたら『イベントビューワー』に何かエラーも出てるし」

「はあ」
(なんつーかこのミニスカつーの発明した奴にはノォベル賞をやりたいよなマジで)

と、脳内勃起していても仕方ないんでちょっとググッみると、確かにちょいと問題があるようである。

■問題:「WSS3.0で基本認証のみ有効のサイトは検索エンジンがクロールできない」
 単純に言うと;
  1. WSSの画面でいくら検索をかけても結果が表示されない
  2. イベントビューワにエラーコード 2436 などが表示されている
 これはMSのサイトでも明示されているとおりの仕様ではある。このクローラは認証にフォームやBASICを使っていると使用できない。

 で、どうするかなんである。困っている美脚を放置するなんてことができるか? いやできはしないのである!

 確かに上のMSのサイトには(日本語のものは明らかに誤訳-フォーム認証の訳をそのまま引きうつしている-なので、英語版を参照のこと)手順が書いてあるが、この「手順」を読んでそのまんま理解できるやつはそう多くはなかろう。
 というか、明らかに不備がある。日本語のは論外としても英語版でさえ説明不足もいいところである。

 Webを漁ると、いくつか解決策を提示しているサイトもある。例えばCodenameさんのBlogとかquick2seekさんのサイトとか。
 だが、WSSという仕掛けはネットワーク含めた環境の設計がけっこう重要な要素で、この環境で上手くいったからそのまんま適用できるというわけでもない。美脚もこのあたりはやってみたらしいのだが上手くいかなかったと。

「うううううん。基本認証諦めるってわけにはいかないんですか? 元々イントラで使う仕掛けだし御社はちゃんとAD動いてるし」

「それがこのサーバ、運営委託していてhttpアクセスには必ずプロキシを経由しなきゃいけないんですぅ」

「…ヤリイカかぁ。こりゃあWindows認証は通らないわなぁ」

 ファーム構成つーことになると話は厄介だが、幸いなことに単純なシングルサーバだ。
 で、こうしてみた。

 話の都合上、サーバ名(NetBios名)をfoo, DNS名をfoo.bar.co.jpとする。
  1. まずインストール時にWSSが勝手に作ったSharePotal-80 Webアプリケーションを削除。
    別にそのまま使ってもいいのだが、美脚が弄り回した環境をいったん綺麗にしちゃいたいので(笑)
  2. Webアプリケーションを自前で作成しなおす。
     「アプリケーション構成の管理」→「Webアプリケーションの作成または拡張」→「新しいWebアプリケーションの作成」
     新しいIISWebサイトを作成する
     ポート80 / ホストヘッダ指定なし
     認証プロバイダ:NTLM
     URL:/foo.bar.co.jp:80
     検索サーバ:foo
  3. 「アプリケーション構成の管理」→「Webアプリケーションの作成または拡張」→「既存Webアプリケーションの拡張」で、上で作ったWebアプリケーションを拡張する。
     「新しいWebサイトを作成する」:ただしこのときポートは上で使っていたのと変えてしまう。ここでは9080を指定。
     ポート9080 / ホストヘッダ指定なし
     認証プロバイダ:NTLM
     URL:foo.bar.co.jp:9080
     「領域」:イントラネット
  4. 「認証プロバイダ」で、
     「規定」サイトが「匿名アクセスの有効化」・統合Windows認証であることを確認。
     「イントラネット」を「匿名アクセスの有効化」「基本認証」をON

    この状態で、IISの管理画面でディレクトリセキュリティを確認すると
    foo.bar.co.jp:80 → 匿名許可・統合Windows認証
    foo.bar.co.jp:9080 → 匿名許可・基本認証
    になっているはず。
  5. iisreset。

 大筋こんな感じで。

 つまり、どうもmssearchは領域「規定」で定義されたサイトをクロールするようなので、そこだけNTLM認証にし(http://foo.bar.co.jp:80)、一般アクセスには同じサイトをポートを変えて見せてしまう(http://foo.bar.co.jp:9080)というセンである(今考えたらポート番号が逆の方がよかったなぁ)。

 これで良しとは思わないが-「ファームにしたい」なぁとか思った瞬間に破綻する-、とりあえず検索できるようになり美脚からソンケーの眼差しで見られたので、これでいいや(爆)

 で、美脚ともう暫く過ごしたかったので、ついでに細かい問題も。

■PDF検索設定
  1. IFilter入手&インストール。このとき合わせて17×17ドットのアイコン(pdficon_small.gif)も入手しておく。
  2. すでにWSSが導入済みで、Searchが動いている場合には一時停止
  3. MSの資料どおりレジストリの設定
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\Search\Applications\GUID\Gather\Search\Extensions\ExtensionList\
    38
    REG_SZ
    pdf
    を新規作成。
  4. 前で入手したアイコンGIF(pdficon_small.gif)を \Program Files\Common FIles\Microsoft Shared\Web Server extensions\12\TEMPLATE\IMAGES にコピーする。
  5. \Program Files\Common FIles\Microsoft Shared\Web Server extensions\12\TEMPLATE\XML にあるDOCICON.XMLのセクションに以下の行追加。
    <Mapping Key="pdf" Value="pdficon_small.gif" OpenControl=""/>



  6. できればサーバ再起動(できなければsearchサービスを起動)。
ちなみにフルクロールはcmdで
stsadm -o spsearch -action fullcrawlstart
だが、この設定をやる前にすでにアップ済みのPDFがある場合には、フルクロールしても対象にならない模様。
事前登録済みのPDFファイルは削除して再登録が確実。

■XML Webパーツで「タイムアウト」が発生する

 外部のニュースサイトを設定してFeedを表示させようとしたら「Webパーツがタイムアウトしました」が出る。

 この話はMSの解説にもある。
  1. WSSのweb.config(IISからみるとwebroot/VirtualDirectory配下のサイト個別のweb.config)をエディタで開く
  2. 以下のセクションを追記する
    <system.net>
    <defaultProxy>
    <proxy proxyaddress="http://プロクシ:ポート" bypassonlocal = "true"/>
    </defaultProxy>
    </system.net>



  3. iisreset
 XML Webパーツを配置して、適当なニュースサイト(こことか)を指定して、適当なxsltを設定してやったらウマいことニュースが表示された。

 「すっごーい」

 「はは。いやいや。でもこれだと毎度毎度読みに行っちゃうんで、ホントはサーバ側で適当なタイミングで取得したデータを表示するだけにした方がいいと思いますよ。ちょっとしたスクリプトを作らないとだめですけど」

 「…えっと、よくわからないんですけど」

 あああああああああああカワイイなあ畜生しようがねぇオジサン作っちゃおうかなぁオネエちゃん綺麗だし(爆)
[PR]
by SIGNAL-9 | 2008-07-31 12:04 | TIPSとかKludgeとか | Comments(2)
Commented by Mr.T at 2008-07-31 14:11 x
あるわー(笑)
男なんざ、単純なものというのがよくわかります。
Commented by たく at 2008-10-19 01:15 x
同業者です。
ありですね(笑)
私も美脚だったら工数サービスしちゃいます。
<< ワンフェスでエスカレータ事故 ASP.NETでFCKEdit... >>