サーバー全体で既定値を統一できるなら前半の内容で。
既定値がある場合は後半のテンプレート用意する感じになります。
いずれにしてもIIS操作するので管理者権限必要です。
環境
OS | Windows Server 2012 R2 |
PowerShell | 5.0 |
既定値のアプリケーションプールを作成する
IISマネージャーからも作成できますが、何台も同じ事やる場合はこっちが楽です。
# IIS管理モジュール
PS> Import-Module WebAdministration
# 既定の設定でアプリケーションプールを作成
PS> New-WebAppPool sample
Name State Applications
---- ----- ------------
sample Started
既定値の設定方法
こちらもPowerShellで。。。は面倒だったのでIISマネージャー使います。
PowerShell
使う場合は Set-ItemProperty
とか駆使してできるかも(;´∀`)
- 対象サーバーを選択
- アプリケーション プール
- 操作 > アプリケーション プールの既定値の設定
- アプリケーション プール
構成エディタからいじる場合は、system.applicationHost/applicationPools
> applicationPoolDefaults
あたり。
New-WebAppPool
はここの設定値を元にアプリケーションプールを作成します。
既存のアプリケーションプールをコピーする
うちの会社で採用した方法がこっち。
アプリケーションプールの用途によって設定が微妙に違ったので applicationPoolDefaults
は使わなかった。
今考えると可変個のプールは全部同じ設定だったので最初の方法でもよかったかもしれないけど(´・ω・`)
ちなみに既存からのコピーはIISマネージャーではやり方わかりません。
# IIS管理モジュール
PS> Import-Module WebAdministration
# アプリケーションプールのルート
PS> cd IIS:\AppPools
# 既存のコピー
PS> cp .\sample .\sample2 -Recurse
# 設定の調整、うちの場合はテンプレートでは autoStart = Falseだったので明示的な開始が必要
PS> Start-WebAppPool sample2
PS> Get-Item sample2 | select autoStart,state
autoStart state
--------- -----
True Started
これでやると applicationPoolDefaults
以外の既定値でアプリケーションプールを新規に作成できます。
ハマりポイント?
コピー元のアプリケーションプールに、リサイクル > 特定の時間 の設定を追加していると、コピー時にエラーで落ちていた。
そのためテンプレートには特定の時間 のリサイクル設定を入れないでコピー後に無理やり設定していた。
PS> Set-ItemProperty -Path IIS:\AppPools\[apppool] -Name Recycling.periodicRestart.schedule -Value "01:30:00"
。。。だったけど今試したら問題なくコピーできた。。。ここは原因不明です(;´Д`)