You are browsing the archives of f.
FastCGI for IIS7.0のアップデート
件のIIS用FastCGIモジュールがREQUEST_URIなどのサーバー変数をUTF-8でやり取りできない問題の続き。
IIS5.1、IIS6についてはVer1.5 RTW+レジストリ操作で解決しましたが、IIS7.xにいては対応がまだでした。
が、やっとIIS7.0についてアップデートが提供されました。
http://blogs.iis.net/ruslany/archive/2010/03/10/important-update-for-iis-7-0-fastcgi-module.aspx
Windows7やWindowsServer2008R2のIIS7.5用FastCGIのアップデートはまだだがな!
なお、各OSでのFastCGI for IISの状況はこちら。
http://ruslany.net/2010/02/fastcgi-module-differences-across-iis-versions/
Using UTF-8 encoding for server variable valuesがIIS7.5だけNoという。
いやこれ、実質URIにマルチバイトを含めないわけで、非英語圏のアプリケーション的には致命度が半端ないんですが…
WindowsServerAppFabricBeta2をインストール
最近料理のエントリが少ないのは鍋シーズン終了のため。
さて、たまにはBlogも更新しないとMySQLが可哀想なのでエントリ追加のお時間。
AppFabric Beta2のインストール記事。いやインストールとかクリックしてるだけで出来るだろ、って話もあるんだけどこれが地味に難しい。
前のエントリでも書きましたが、AppFabricBeta1を入れている場合は、Beta1のアンインストール、.Net Framework 4 Beta2のアンインストール、
そして.Net Framework 4 RCのインストールをあらかじめやっておく必要があります。
あとはインストーラーを起動するとこんな感じ。
Velocityのみを使いたいのであれば、Cache関係にだけチェックをつけます。ちなみに今回から、サービス名はVelocityではなく、
AppFabric Caching Serviceになりました。
あとは普通にインストールが完了するハズです。ここでエラーになったことは無いので大丈夫なはず。
そしてインストールが完了すると、ConfigurationWizardが立ち上がります。
例によって、Change…ボタンをクリックして、前もって作成しておいたDistributedCache用のデータベースを指定します。
Createなんたらをチェックすると、入力したデータベース名で、クラスタ管理DBを新規で作ろうとします。
まぁ、色々と面倒なので、前もって作っておいた方が良いとは思いますが。
新規クラスタ(通常はこっち)の場合はNew clusterを選択してください。
二台目以降の場合は、一台目で指定したDBを選択した上で、Join clusterを選択することで、クラスタに参加させることが出来ます。
あとは適当に次へ進めばインストールが完了します。どうにもうまいいかないよー、って場合は、DBでのクラスタ管理をあきらめてXMLにするとか、とにかく色々試してるとうまくいったりします。ぶっちゃけよくわかりません。
環境によってはすんげぇ積むと思います。このあたりまだまだ煮詰まってない感じなので、RC版ではかなり改善されると思いますが…
ちなみに今回のBeta2での更新ですが、DLLの名前空間が変わりました。Microsoft.AppFabric、みたいな。
あとは若干使えるメソッドやクラス名が変わっている感じ。
にしてもAppFabricは全然盛り上がりませんね。他の2つはどうでもいいんだけど(いやよくないが)、Distributed CacheはMicrosoftの人ですらMS版memcachedだと認めるぐらいなのに。
一般に公開されるインターネット Webアプリケーションには必須のサービスだと思うんだけどなぁ。トラフィックの多いWebアプリなんて、どこもmemcachedなどのKVSを駆使して負荷軽減に四苦八苦してるのに…
やっぱ公開WebアプリじゃASP.NETなんて使わねーよってことなのかねー。
Windows Server AppFabricを試す(続き…のハズが
なんかもうBeta2出てるし…どういうことなの…
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=a1ed6018-ddd1-4bd8-b4af-6561e910ebb4
ちなみに会社のパソコンで試してみた限りは、.Net Framework4.0 Beta2が入ってるとダメ。先にアンインストールして、.Net Framework 4.0 RCをインストールするのが良さそうです。
AppFabric Beta1もアンインストールする必要があります。Windows Firewallが有効になっていると失敗するのも同じ。(と思いきや、Server2008R2だとWindowsFirewall無効でもうまく完了するし…)
AppFabrice Beta1のときのVelocityは、キャッシュRemoveのタイミングがどうにも不可解な動きしかしてなかったので、そこらへん分かりやすく動いてくれるといいなー。
(追記)
QuickStartGuideのStart Cache Host Services for the First Timeの節にも書いてありますが、初めてキャッシュクラスタを利用する場合は、以下のコマンドをPowerShellで叩いてあげる必要があります。
Use-CacheCluster
あとは通常通り、
Start-CacheCluster
でキャッシュクラスタを開始できます。
ただし、Beta 1と違い、デスクトップにDistributed Cache管理コンソールへのショートカットが作成されません。
同等のものを作成できるはずですが(やり方がわかりませんが…)、モジュール読み込み済みのPowerShellからでも上記コマンドを操作可能です。
コントロール パネル\すべてのコントロール パネル項目\管理ツール\Windows PowerShell Modules
(さらに追記)
どうもAppFabric Beta 1より先に.Net Framework 4 Beta 2をアンインストールすると、AppFabrice Beta1がうまくアンインストール出来ない感じ。
再度.Net Framework 4 Beta 2をインストールして、AseSetup_adm64_6.1.exe(ページが消えてるのでGoogleのキャッシュから)を管理者権限で起動することで、なんとかアンインストール出来ました。
あとは.Net Framework 4 Beta 2をアンインストールして、.Net Framework 4 RCをインストールして、AppFabric Beta 2をインストールして・・大変だなこりゃ。
電源故障中…
メインPCの電源がついに死亡。通電はしてるんだけど、電源ピンをショートさせても、ファンがちょっと回って止まって無反応。
サーバーの予備機の電源を使ってみると、一応動くのでメインPCのエナマの電源が死亡しているということで、Amazonで在庫あるSeasonicの80PLUS GOLDの電源をポチる。
まぁ、5年ぐらい動かしていた電源なのでそろそろ壊れても仕方ない。というか十分安定稼働してくれました。お疲れ様。
・・まぁ、実はあまり紫蘇好きじゃないんだけど、在庫あって翌日に届く、割と新しめの電源って全然数無いんだよねぇ。
Windows Server AppFabric Beta1を試す~その1~
12月と1月は妙に忙しく、まったく検証できなかったので今更ながらWindows Server AppFabricを試していきます。
まずはこちら。英語ですが。
http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx
インストーラはこちらにあります。
が、依存プログラムが多いので、Web Platform Installer 2.0からインストールした方が楽ちんです。
http://www.microsoft.com/web/downloads/platform.aspx
WebPIを起動。
左下のオプションをクリックして、
エンタープライズにチェックをつけます。というかせっかくなので全部にチェックをつけておきます。
すると、WebPIの画面にEnterpriseにタブが出てきます。タブをクリックして、「カスタマイズ」をクリックすると、
AppFabric Beta 1がチェック可能になります。
あとはインストールすれば完了。ただし、注意点が二つ。
- すでにDeveloper版が入っている状態でもSQL Server 2008 Expressをインストールされそうになる
- Windows Firewallが有効になっていないと、Velocityの設定で失敗する
特に後者が致命的なのでご注意ください。アンチウィルスがファイアーウォール機能を備えているからといって、Windowsファイアーウォールを有効にしてると、
Velocity(Microsoft Distributed Cache)用のファイアウォール例外を追加するのに失敗しやがります。
ちなみに前者については、今試したらSQL Server (SQLEXPRESS)のサービスを新規に作りやがりました。ご注意ください。
…と、ここまで書いておいてナンですが、私の環境ではWebPIではDistributedCacheのサービスが動いてないので、手動で再度インストールします。
(というか、会社の環境でもWebPIでうまくいった試しが無い、というかConfigurationWizardが立ち上がらない)
上の方に書いたDownloads/DetailのページからAppFabric Beta1のインストーラをダウンロード(asesetup_amd64_6.1.exe)して、右クリック→管理者として実行をクリック。
WebPIでインストールしてしまっていたので、いったんRemoveします。再起動して、AppFabric Beta1のインストーラを再度実行。
規約を読んで次へ。
DistributedCacheをインストールするよう、チェックをつけて次へ。
DBへのConnectionStringsを指定されるので、前もってMonitoringとPersistence、DistributedCache用のDBを作成しておきましょう。
こんな感じでDistributedCacheの設定をします。こっちもEditボタンで、DBを指定しておきましょう。
後は次へボタンでインストール完了。こちらもWindowsファイアーウォールが有効になってないと、例外追加で失敗するのでご注意。
無事インストールが完了すると、サービス一覧に Microsoft project code named “Velocity” CTP4として追加されます。
続きは次回。
FastCGI 1.5 for IIS6でREQUEST_URIが文字化けする件の解決
こちらのエントリで書いた、FastCGI for IISでのREQUEST_URIの文字化け問題ですが、iis.netのページにこんな情報がありました。
Configure the FastCGI Extension for IIS 6.0
Using UTF-8 encoding for server variables
By default, FastCGI extension uses ASCII encoding when setting server variables that are used by PHP. When requested URL contains non-ASCII characters, then server variables that derive their values from the requested URL string may be set incorrectly. PHP applications that rely on those server variables may not work because of that.
To prevent this the FastCGI extension can be configured to use UTF-8 encoding when setting server variables. To configure FastCGI to use UTF-8 encoding for a particular set of server variables, use the REG_MULTI_SZ registry key FastCGIUtf8ServerVariables and set its value to a list of server variable names, for example:
reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
The above example will configure FastCGI extension to use UTF-8 encoding when setting REQUEST_URI and PATH_INFO server variables.
After setting the registry key restart the IIS by using the iisreset command.
Warning: using UTF-8 encoding for server variables may affect how PHP core and PHP applications work. Make sure to verify that applications work as expected after the registry key has been changed.
1月にやっとリリースされたRTW版で追加されたオプションのようです。要は、デフォ設定だとREQUEST_URIやPATH_INFOをUTF-8でやりとり出来ないと。
というわけなので、コマンドラインで上記レジストリエントリへの追加をして、IISのサービスを再起動して完了。
Wordpressのclasses.phpを修正していたのを戻して、エントリ単品の記事へ正常にアクセス出来る事が確認できました。
しかしなんでデフォでこんな仕様なんだろう…














