-
Notifications
You must be signed in to change notification settings - Fork 0
MS_IISConfig
- 戻る
IIS の *.config に限定した内容だったが、
コンフィギュレーション全般の話に変更。
「IIS マネージャ」を使用する。
IIS 7.0 から、iisxxxx.vbs が appcmd に変更された。
- @IT
- IIS 6.0 をコマンド・プロンプトから管理する
https://www.atmarkit.co.jp/fwin2k/win2ktips/838iiscmd/iiscmd.html - 第5回 柔軟性と機能性を大幅に高めた IIS 7.0
(後編)(1/3):Windows Server 2008 の基礎知識
https://www.atmarkit.co.jp/ait/articles/0711/21/news122.html
- IIS 6.0 をコマンド・プロンプトから管理する
WebAdministration → IISAdministration cmdlets を使用できる。
- IIS 上の設定を PowerShell から操作する。 - Qiita
https://qiita.com/kitamin/items/132d18818d8e89e019dc - 無気力プログラマー雑記
PowerShell で IIS の操作をする - IIS Team Blog - Introducing IISAdministration in the PowerShell Gallery
https://blogs.iis.net/iisteam/introducing-iisadministration-in-the-powershell-gallery
補足(3 つの操作手段の使い分け): 手段が複数あるが、
用途で選ぶのが実務的である。
手段 得意 注意 IIS マネージャ(GUI) 確認、試行錯誤 手順が残らない(再現できない) appcmd設定の一括取得・投入。XML で出せる 引数が独特 PowerShell スクリプト化、CI からの実行 2 系統ある(下記) PowerShell が 2 系統ある点は混乱しやすい。
モジュール 位置付け WebAdministration旧。 IIS:\ドライブでツリーを辿る方式。現在も同梱IISAdministration新。 Get-IISSite等。構成の一括変更(トランザクション的)に対応新規に書くなら
IISAdministrationだが、
Web 上の情報はWebAdministrationの方が圧倒的に多い。
既存スクリプトの保守では両者が混在しがちなので、
どちらを使っているかを意識する必要がある。なお、構成のエクスポートは
appcmdが簡単である。%WinDir%\System32\inetsrv\appcmd list site /config /xml > sites.xml %WinDir%\System32\inetsrv\appcmd add site /in < sites.xmlサーバ更改時の設定移送に使える
(Azureによる基盤開発法の
「実環境からエクスポートされた情報」という考え方と同じ)。
- IIS 7.0 では XML ベースの *.config ファイルが、IIS 6.0 以前のメタベースを置き換えている。
- この新しい構成システムは最初 ASP.NET で採用されたもので、拡張子が .config になっている。
- IIS 7.0 の構成ファイルは
%WinDir%\System32\Inetsrv\Configフォルダーに保持される。 - 主要な config ファイルは以下になる。
この構成ファイルはすべての Web サイトやアプリケーションに関係する設定を保存している。
この構成ファイルは IIS の管理に関連する設定を保持する。
これらは IIS マネージャー用にインストールされた、
管理モジュールの一覧のほか、各管理モジュールが利用する構成設定を含む。
複数の IIS サーバーを中央管理の単一の構成ファイルで管理するシステム構成をサポートする。
この構成ファイルは中央管理の構成ファイルがどこに配置されているかを指定している。
- 各設定は Web.config に委任され、ApplicationHost.config 内で
指定されている設定を上書きすることができるようになっている。 - さらに、委任許可がされていない設定については Web.config に追加できない。
補足(この「委任」の仕組みが IIS 構成の要): 「メタベースを置き換えた」ことの
本質的な意味は、構成が階層化され、権限を委譲できるようになった点にある。【上位】 ApplicationHost.config … サーバ管理者が管理(%WinDir%\System32\inetsrv\config) ↓ overrideModeDefault で「委任するか」を指定 【下位】 Web.config(サイト) … 開発者が管理(アプリのフォルダ内) ↓ Web.config(サブフォルダ)… さらに個別に上書き
設定の場所 誰が触れるか ApplicationHost.config サーバ管理者のみ Web.config(委任された項目) 開発者(アプリと一緒に配布できる) Web.config(委任されていない項目) 書いても無効。500 エラーになる 「開発環境では動くのに本番で HTTP 500 になる」という典型的な問題は、
委任されていない設定を Web.config に書いていることが原因である
(例:<windowsAuthentication>は既定で委任されていない)。委任状態は IIS マネージャの
**「機能の委任」**画面、または次のコマンドで確認・変更できる。appcmd list config /section:windowsAuthentication /commit:apphost appcmd unlock config /section:windowsAuthenticationアプリと一緒に構成を配布したい(DevOps、
CI/CD パイプライン)場合、
どこまでを Web.config に書けるかを先に確認しておく必要がある。
同時実行性を向上させるためのパラメタについて纏める。
- IIS 7.0 コンフィギュレーション リファレンス
http://technet.microsoft.com/ja-jp/library/ee431610.aspx- ASP asp
http://technet.microsoft.com/ja-jp/library/ee431558.aspx- ASP キャッシュ cache
http://technet.microsoft.com/ja-jp/library/ee431567.aspx - ASP 制限 limits
http://technet.microsoft.com/ja-jp/library/ee431613.aspx - ASP COM+ comPlus
http://technet.microsoft.com/ja-jp/library/ee431574.aspx - ASP セッション session
http://technet.microsoft.com/ja-jp/library/ee431648.aspx
- ASP キャッシュ cache
- FastCGI アプリケーション application
http://technet.microsoft.com/ja-jp/library/ee431554.aspx - .etc
- ASP asp
- ASP.NET config
補足(同時実行性に効く主なパラメタ): 参照先が ASP(クラシック ASP)に
偏っているため、ASP.NET も含めた要点を挙げておく。
層 パラメタ 効くもの アプリケーション プール キューの長さ( queueLength、既定 1000)超えると HTTP 503 同上 ワーカー プロセス数(Web ガーデン) 既定は 1。増やすとセッションが InProc で壊れる 同上 リサイクル設定(時間、メモリ、要求数) 定期的な再起動。セッション消失の原因にもなる HTTP.sys MaxConnections同時接続数 ASP.NET processModel/maxWorkerThreads、minWorkerThreadsスレッド プールの枯渇 同上 system.net/connectionManagement/maxconnection外部への同時接続数(既定 2。Web API 呼び出しで詰まる原因) 特に最後の
maxconnectionは、
サーバ間で HTTP を呼ぶ構成(Web/APの分離、
マイクロサービス)で必ず問題になる。
.NET Framework では既定が 2 接続であり、
これを上げないと同時実行数が伸びない。なお、.NET Core / .NET 以降は
HttpClientの
SocketsHttpHandlerが別の仕組み(MaxConnectionsPerServer)を持つ
(HttpClient の使い方)。
Windowsの帯域制御を参照。
Tags: 移行, Windows, IIS
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。